HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/TargetController.php
<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Performance;
use App\Models\PerformanceLineItem;
use App\Models\Product;
use App\Library\UserLib;
use Illuminate\Support\Facades\Storage;
use DB;

class TargetController extends Controller
{
    protected $userLib;
    public function __construct(UserLib $userLib)
    {
        $this->userLib = $userLib;
    }

    public function allTargets()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $AllPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
            ->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
            ->where('tbl_performance.IsDeleted', '0')
            ->orderBy('tbl_performance.id', 'desc')
            ->get();
        $trashPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
            ->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
            ->where('tbl_performance.IsDeleted', '1')
            ->orderBy('tbl_performance.id', 'desc')
            ->get();
        return view('admin.all-targets', ['AllPerformance' => $AllPerformance, 'TrashPerformance' => $trashPerformance]);
    }

    public function trashTarget()
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $AllPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
            ->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
            ->where('tbl_performance.IsDeleted', '0')
            ->orderBy('tbl_performance.id', 'desc')
            ->get();
        $trashPerformance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
            ->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
            ->where('tbl_performance.IsDeleted', '1')
            ->orderBy('tbl_performance.id', 'desc')
            ->get();
        return view('admin.trash-target', ['AllPerformance' => $AllPerformance, 'TrashPerformance' => $trashPerformance]);
    }

    public function targetLineItems()
    {

        return view('admin.target-line-items');
    }

    public function trashItems()
    {
        return view('admin.trash-target-line-items');
    }

    public function viewTarget($TargetId)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }
        $Performance = Performance::select('tbl_performance.*', 'tbl_user.FirstName as FirstName', 'tbl_user.LastName as LastName', 'tbl_sales_territory.Name as TerritoryName', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
            ->leftJoin('tbl_admin', 'tbl_performance.Updated_by', '=', 'tbl_admin.UserId')
            ->leftJoin('tbl_user', 'tbl_performance.UserId', '=', 'tbl_user.UserId')
            // ->leftJoin('tbl_user', 'tbl_performance.AssignTo', '=', 'tbl_user.UserId')
            ->leftJoin('tbl_sales_territory', 'tbl_performance.TerritoryId', '=', 'tbl_sales_territory.TerritoryId')
            ->where('tbl_performance.TargetId', '=', $TargetId)
            ->get()
            ->first();

        $GetTargetType = $Performance['TargetType'];

        
        if ($GetTargetType = 'Product') {
            $getTargetLineItem = '';
            $getTargetLineItem = PerformanceLineItem::select('tbl_performance_line_item.*')
                ->where('TargetId', '=', $TargetId)
                ->get()
                ->first();
        }
        return view('admin.view-target', compact('Performance', 'getTargetLineItem'));
    }

    ### Store New Target
    public function storeTarget(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $TargetType = $request->input('TargetType');

        $data['TargetType'] = $request->input('TargetType');

        if ($request->input('addProductQuantity')) {
            $data['TargetQuantity'] = $request->input('addProductQuantity');
        }

        if ($request->input('addTargetRevenue')) {
            $data['TotalRevenue'] = $request->input('addTargetRevenue');
        }

        if ($request->input('addTargetTerritory')) {
            $data['NoOfVisits'] = $request->input('addTargetTerritory');
        }

        $data['TerritoryId'] = $request->input('TerritoryName');
        $data['UserId'] = $request->input('UserName');

        $SDate = '';
        if ($request->input('startDate')) {
            $SDate = str_replace('/', '-', $request->input('startDate'));
        }
        $StartDate = date('d-m-Y', strtotime($SDate));

        $EDate = '';
        if ($request->input('EndDate')) {
            $EDate = str_replace('/', '-', $request->input('EndDate'));
        }
        $EndDate = date('d-m-Y', strtotime($EDate));

        $AssignTo = $request->input('UserName');

        $g_TargetId = $this->userLib->useridGenrator();
        $data['TargetId'] =  $g_TargetId;
        $data['StartDate'] =  $StartDate;
        $data['EndDate'] =  $EndDate;
        $g_targetNo = "PFC-" . time() . '-' . rand();
        $data['TargetNo'] = $g_targetNo;
        $data['AssignTo'] = $AssignTo;
        $data['IsDeleted'] = 0;
        $data['Status'] = 1;
        $data['Created_by'] = session('UserId');
        $data['Created_at'] = date('Y-m-d H:i:s', time());
        $data['CreatedDate'] = date('Y-m-d H:i:s', time());
        $data['Updated_by'] = session('UserId');
        $data['ModifiedDate'] = date('Y-m-d H:i:s', time());
        $data['Updated_at'] = date('Y-m-d H:i:s', time());

        $insert_target = Performance::insert($data);

        $TargetId = $g_TargetId;
        $sale_TargetType = $request->input('TargetType');
        $TargetQuantity = '';
        if ($request->input('addProductQuantity')) {
            $TargetQuantity = $request->input('addProductQuantity');
        }
        $colValue = "";
        $colName = "";
        if ($request->input('addTargetRevenue')) {
            $TotalRevenue = $request->input('addTargetRevenue');
            if($TotalRevenue){
                $colName .= ",TotalRevenue__c";
                $colValue .= ", '".$TotalRevenue."'";
            }
        }
        $NoOfVisits = "";
        if ($request->input('addTargetTerritory')) {
            $NoOfVisits = $request->input('addTargetTerritory');
            if($NoOfVisits){
                $colName .= ",NoOfVisits__c";
                $colValue .= ", '".$NoOfVisits."'";
            }
        }

        $TerritoryId = $request->input('TerritoryName');
        $UserId = $request->input('UserName');

        $sale_StartDate =  $StartDate;
        $sale_EndDate =  $EndDate;
        $TargetNo = $g_targetNo;
        $IsDeleted = 0;
        $Status = 1;
        $CreatedDate = date('Y-m-d H:i:s', time());
        $CreatedBy = session('UserId');

        
        DB::connection('pgsql')->insert("insert into salesforce.Performance__c (TargetId__c,TargetType__c,TargetQuantity__c,TerritoryId__c,UserId__c,AssignTo__c,StartDate__c,EndDate__c,Target__c,IsDeleted,Status__c,Name,CreatedById__c,CreatedDate__c $colName) values ('$TargetId','$sale_TargetType','$TargetQuantity','$TerritoryId','$UserId','$AssignTo','$sale_StartDate','$sale_EndDate','$TargetNo','$IsDeleted','$Status','$TargetNo','$CreatedBy','$CreatedDate' $colValue)");

        if ($insert_target) {

            if ($TargetType == 'Product') {
                $latestTargetId = Performance::orderBy('Created_at', 'DESC')->first();
                $TargetId = $latestTargetId['TargetId'];

                $ProductId = $request->input('addTargetProduct');

                // Get Product Name
                $get_product = Product::select('tbl_products.*')
                    ->where('ProductId', $ProductId)
                    ->get()
                    ->first();
                $ProductName = $get_product['ProductName'];

                // Insert Line Item 
                $pi_data['TargetLineItemId'] = $this->userLib->useridGenrator();
                $pi_data['TargetId'] = $TargetId;
                $pi_data['ProductId'] = $ProductId;
                $pi_data['ProductPrice'] = $request->input('addProductPrice');
                $pi_data['ProductName'] = $ProductName;
                $pi_data['TargetQuantity'] = $request->input('addProductQuantity');
                $pi_data['UserId'] = $request->input('UserName');
                $pi_data['Created_by'] = session('UserId');
                $pi_data['Created_at'] = date('Y-m-d H:i:s', time());
                $pi_data['CreatedDate'] = date('Y-m-d H:i:s', time());
                $pi_data['Updated_by'] = session('UserId');
                $pi_data['ModifiedDate'] = date('Y-m-d H:i:s', time());
                $pi_data['Updated_at'] = date('Y-m-d H:i:s', time());
                $update_target = PerformanceLineItem::insert($pi_data);

                if($update_target){

                    $ProductPrice = $request->input('addProductPrice');
                    $TargetQuantity = $request->input('addProductQuantity');
                    $Status = '1';            
                    $IsDeleted = '0';
                    $UserId = session('UserId');
                    $Created_by = $UserId;
                    $CreatedDate = date('Y-m-d H:i:s', time());

                    $PerformanceLIQuery = "insert into salesforce.Performance_Line_item__c (Target_Id__c,Product_Id__c,Product_Name__c,Product_Price__c,Target_Quantity__c,User_Id__c,Created_at__c,Status__c,IsDeleted__c,Created_by__c) values ('$TargetId','$ProductId','$ProductName','$ProductPrice','$TargetQuantity','$UserId','$CreatedDate','$Status','$IsDeleted','$Created_by')";  
                                
                    DB::connection('pgsql')->insert($PerformanceLIQuery);
                }
            }
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }

    #### Update Record
    public function updateTarget(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $target_id = $request->input('TargetId');
        $TargetType = $request->input('TargetType');

        $data['TargetType'] = $request->input('TargetType');

        if ($request->input('editProductQuantity')) {
            $data['TargetQuantity'] = $request->input('editProductQuantity');
        }

        if ($request->input('editTargetRevenue')) {
            $data['TotalRevenue'] = $request->input('editTargetRevenue');
        }

        if ($request->input('editTargetTerritory')) {
            $data['NoOfVisits'] = $request->input('editTargetTerritory');
        }
        $data['TerritoryId'] = $request->input('editTerritoryName');
        $data['UserId'] = $request->input('UserName');

        $SDate = '';
        if ($request->input('startDate')) {
            $SDate = str_replace('/', '-', $request->input('startDate'));
        }
        $StartDate = date('d-m-Y', strtotime($SDate));

        $EDate = '';
        if ($request->input('EndDate')) {
            $EDate = str_replace('/', '-', $request->input('EndDate'));
        }
        $EndDate = date('d-m-Y', strtotime($EDate));

        $data['StartDate'] =  $StartDate;
        $data['EndDate'] =  $EndDate;
        $data['Updated_by'] = session('UserId');
        $data['Updated_at'] = date('Y-m-d H:i:s', time());

        $update_target = Performance::where('TargetId', $target_id)->update($data);

        $sale_TargetType = $request->input('TargetType');

        $TargetQuantity = '';
        if ($request->input('editProductQuantity')) {
            $TargetQuantity = $request->input('editProductQuantity');
        }

        if ($request->input('editTargetRevenue')) {
            $TotalRevenue = $request->input('editTargetRevenue');
        }
        else{
            $TotalRevenue = '0';
        }

        if ($request->input('editTargetTerritory')) {
            $NoOfVisits = $request->input('editTargetTerritory');
        }
        else{
            $NoOfVisits = '0';
        }
        $TerritoryId = $request->input('editTerritoryName');
        $UserId = $request->input('UserName');
        $AssignTo = $request->input('UserName');


        $sale_StartDate =  $StartDate;
        $sale_EndDate =  $EndDate;
        $Updated_by = session('UserId');
        $UpdatedDate = date('Y-m-d H:i:s', time());

        DB::connection('pgsql')->update("update salesforce.Performance__c set TargetType__c='$sale_TargetType',TargetQuantity__c='$TargetQuantity',TotalRevenue__c='$TotalRevenue',NoOfVisits__c='$NoOfVisits',TerritoryId__c='$TerritoryId',UserId__c='$UserId',StartDate__c='$sale_StartDate',EndDate__c='$sale_EndDate',Updated_by__c='$Updated_by',Updated_at__c='$UpdatedDate',AssignTo__c='$AssignTo' where TargetId__c='$target_id'");

        if ($update_target) {

            if ($TargetType == 'Product') {

                $ProductId = $request->input('editTargetProduct');

                // Get Product Name
                $get_product = Product::select('tbl_products.*')
                    ->where('ProductId', $ProductId)
                    ->get()
                    ->first();
                $ProductName = $get_product['ProductName'];

                // Update Line Item 
                $pi_data['ProductId'] = $ProductId;
                $pi_data['ProductPrice'] = $request->input('editProductPrice');
                $pi_data['ProductName'] = $ProductName;
                $pi_data['TargetQuantity'] = $request->input('editProductQuantity');
                $pi_data['UserId'] = $request->input('UserName');
                $pi_data['Updated_by'] = session('UserId');
                $pi_data['Updated_at'] = date('Y-m-d H:i:s', time());
                $update_target = PerformanceLineItem::where('TargetId', $target_id)->update($pi_data);

                if($update_target){

                    $ProductPrice = $request->input('editProductPrice');
                    $TargetQuantity = $request->input('editProductQuantity');
                    $UserId =  session('UserId');
                    $Updated_by = $UserId;
                    $CreatedDate = date('Y-m-d H:i:s', time());

                    $PerformanceLIQuery = "update salesforce.Performance_Line_item__c set Product_Name__c='$ProductName',Product_Price__c='$ProductPrice',Target_Quantity__c='$TargetQuantity',User_Id__c='$UserId',Updated_at__c='$CreatedDate',Updated_by__c='$Updated_by' where Target_Id__c='$target_id' and Product_Id__c='$ProductId'";  
                                
                    DB::connection('pgsql')->update($PerformanceLIQuery);
                }
            }
            return response()->json('status_success');
        } else {
            return response()->json('status_failed');
        }
    }


    #### Delete Target
    public function deleteTarget($TargetId)
    {
        $CreatedDate = date('Y-m-d H:i:s', time());

        $data = array();
        $data['Updated_at'] = $CreatedDate;
        $data['Updated_by'] = session('UserId');
        $data['IsDeleted'] = '1';

        $target_delete = Performance::where('TargetId', $TargetId)->update($data);

        DB::connection('pgsql')->update("update salesforce.Performance__c set IsDeleted='1',Status__c='0' where TargetId__c='$TargetId'");

        if ($target_delete) {
            echo '1';
        } else {
            echo '0';
        }
    }

    #### Delete Permanent
    public function destroyTarget($TargetId)
    {
        $destroyData = Performance::where('TargetId', $TargetId);
        $destroyData->delete();
    }
    #### Restore Performance
    public function restoreTarget($TargetId)
    {
        $CreatedDate = date('Y-m-d H:i:s', time());

        $data = array();
        $data['Updated_at'] = $CreatedDate;
        $data['Updated_by'] = session('UserId');
        $data['IsDeleted'] = '0';

        $target_restore = Performance::where('TargetId', $TargetId)->update($data);

        DB::connection('pgsql')->update("update salesforce.Performance__c set IsDeleted='0',Status__c='1' where TargetId__c='$TargetId'");

        if ($target_restore) {
            echo '1';
        } else {
            echo '0';
        }
    }

    #### Delete Selected Record
    public function deleteSelectedTarget(Request $request)
    {
        if (empty(session('UserId'))) {
            return redirect('/admin/logout');
        }

        $id = $request->input('SelectedTarget');
        if ($id) {
            foreach ($id as $TargetId) {
                $checkData = Performance::find($TargetId);
                if ($checkData->IsDeleted == '0') {
                    $CreatedDate = date(
                        'Y-m-d H:i:s',
                        time()
                    );
                    $data = array();
                    $data['Updated_at'] = $CreatedDate;
                    $data['IsDeleted'] = '1';

                    $selected_entry = Performance::where('id', $TargetId)->update($data);
                    if ($selected_entry) {
                        echo '1';
                    } else {
                        echo '0';
                    }
                } else {
                    $selected_entry = Performance::find($TargetId);
                    $selected_entry->delete();
                }
            }
        }

        return redirect()->back()->with('status_success');
    }
    ### Edit Record
    public function editTarget($TargetId)
    {
        $Performance = Performance::select('tbl_performance.*', 'tbl_performance_line_item.ProductId as ProductId', 'tbl_performance_line_item.ProductName as ProductName', 'tbl_performance_line_item.ProductPrice as ProductPrice', 'tbl_performance_line_item.TargetQuantity as TargetQuantity')
            ->leftJoin('tbl_performance_line_item', 'tbl_performance.TargetId', '=', 'tbl_performance_line_item.TargetId')
            ->where('tbl_performance.TargetId', $TargetId)
            ->get()->first();
        return response()->json([
            'status' => 200,
            'Performance' => $Performance,
        ]);
    }
}