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/APIPerformanceController.php
<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Validator;
use DB;
use App\Library\UserLib;
use App\Models\User;
use App\Models\Product;
use App\Models\Customer;
use App\Models\PriceBookEntry;
use App\Models\Order;
use App\Models\OrderItems;
use App\Models\OrderStatus;
use App\Models\Countries;
use App\Models\PaymentType;
use App\Models\Stocks;
use App\Models\StockProducts;
use App\Models\Performance;
use App\Models\PerformanceLineItem;
use App\Models\TargetType;
use App\Models\SalesTerritory;
use App\Http\Controllers\APICommonController;

use DateTime;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;


class APIPerformanceController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 
    protected $userLib;
    protected $dateFormat = 'dd-mm-yyyy';
    protected $APICommonController;
    public function __construct(UserLib $userLib, APICommonController $APICommonController)
	{
		$this->userLib = $userLib;	
        $this->APICommonController = $APICommonController;		 
	}

    //createVisits
    public function createPerformance(Request $request) 
    {
        //TODO What is device_token
        $data = $request->json()->all();	                 
        $TargetId = $this->userLib->useridGenrator();
        $CreatedDate = date('Y-m-d H:i:s',time());

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken'); 
        //check auth token
        if($this->userLib->tokenChecker($request) == FALSE)
        {
            $response = [
                'success' => false,
                'ResponseMessage' => "Authentication Failed",
                'ResponseCode' => "301",
                'ApiVersion' => env('APP_VERSION'),    
            ];
            return response()->json($response);
        }   
        
        $NoOfVisits = isset($data['NoOfVisits']) ? $data['NoOfVisits'] : '';
        $TotalRevenue = isset($data['TotalRevenue']) ? $data['TotalRevenue'] : '';
        $TargetType = isset($data['TargetType']) ? $data['TargetType'] : '';
        
        $TerritoryId = isset($data['TerritoryId']) ? $data['TerritoryId'] : '';

        $AssignTo = isset($data['AssignTo']) ? $data['AssignTo'] : '';
        $Products = isset($data['Products']) ? $data['Products'] : ''; 
        $Products = json_decode(json_encode($Products), true);
        $cvdata = array();
        $TargetNo = "PERFORMANCE-" . time() . '-' . rand();
        $cvdata['TargetNo'] = $TargetNo;
        $cvdata['UserId'] =  $AssignTo;  
        $cvdata['TargetId'] = $TargetId;  
        $cvdata['TerritoryId'] = $TerritoryId;  

        $cvdata['NoOfVisits'] = $NoOfVisits;  
        $cvdata['TotalRevenue'] = $TotalRevenue; 
        $cvdata['TargetType'] = $TargetType;  
        
        // $cvdata['StartDate'] = date('Y-m-d',strtotime($data['StartDate']));  
        // $cvdata['EndDate'] =  date('Y-m-d',strtotime($data['EndDate']));  


        $cvdata['StartDate'] = $data['StartDate'];  
        $cvdata['EndDate'] =  $data['EndDate'];  
                            
        $cvdata['Status'] = '1';
        $cvdata['IsDeleted'] = '0';
        
        $cvdata['Updated_at'] = $CreatedDate;
        $cvdata['Created_at'] = $CreatedDate;
        $cvdata['CreatedDate'] = $CreatedDate;
        $cvdata['ModifiedDate'] = $CreatedDate;
        $cvdata['Created_by'] = $UserId;
        if($UserId){
            $user_details = User::select('tbl_user.*')
            ->where('tbl_user.UserId', $UserId)
            ->get()->first();
            $cvdata['CreatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
            $cvdata['UpdatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
        }
        $cvdata['AssignTo'] = $AssignTo;
        $cvdata['Updated_by'] = $UserId;                                                 
        $StockInsert = Performance::insert($cvdata);

        $AssignTo = isset($data['AssignTo']) ? $data['AssignTo'] : '';
        $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
        // $StartDate = date('Y-m-d', strtotime($StartDate1));
        $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
        // $EndDate = date('Y-m-d', strtotime($EndDate1));
        $NoOfVisits = isset($data['NoOfVisits']) ? $data['NoOfVisits'] : '0';
        $TargetType = isset($data['TargetType']) ? $data['TargetType'] : '';
        $TerritoryId = isset($data['TerritoryId']) ? $data['TerritoryId'] : '';
        $TotalRevenue = isset($data['TotalRevenue']) ? $data['TotalRevenue'] : '0';
        $UserId = isset($data['UserId']) ? $data['UserId'] : '';
        $Status = isset($data['Status']) ? $data['Status'] : '';            
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '0';
        $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';
        $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';

        $PerformanceQuery = "insert into salesforce.Performance__c (TargetId__c,AssignTo__c,StartDate__c,EndDate__c,NoOfVisits__c,TargetType__c,TerritoryId__c,TotalRevenue__c,UserId__c,Created_at__c,Status__c,IsDeleted__c,Created_by__c,Updated_by__c,Name) values ('$TargetId','$AssignTo','$StartDate','$EndDate','$NoOfVisits','$TargetType','$TerritoryId','$TotalRevenue','$UserId','$CreatedDate','$Status','$IsDeleted','$Created_by','$Updated_by','$TargetNo')";  
                    
        DB::connection('pgsql')->insert($PerformanceQuery);  

        if(count($Products) > 0)
        {
            for($i = 0; $i < count($Products); $i++)
            {
                $ProductData = $Products[$i];
                $ProductPrice = isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '0.00';
                $cvstdata = array();                                
                $cvstdata['TargetId'] = $TargetId;                                       
                $cvstdata['ProductId'] =  $ProductData['ProductId'];
                $cvstdata['ProductName'] =  $ProductData['ProductName'];
                $cvstdata['ProductPrice'] =  $ProductPrice;
                $cvstdata['TargetQuantity'] =  $ProductData['TargetQuantity']; 
                $cvstdata['UserId'] =  $AssignTo;                          
                $cvstdata['Status'] = '1';
                $cvstdata['IsDeleted'] = '0';                
                $cvstdata['Updated_at'] = $CreatedDate;
                $cvstdata['Created_at'] = $CreatedDate;
                $cvstdata['Created_by'] = $UserId;
                $cvstdata['Updated_by'] = $UserId; 
                $cvstdata['CreatedDate'] = $CreatedDate;
                $cvstdata['ModifiedDate'] = $CreatedDate;                                                
                $StockProductInsert = PerformanceLineItem::insert($cvstdata);

                $ProductId = isset($ProductData['ProductId']) ? $ProductData['ProductId'] : '';
                $ProductName = isset($ProductData['ProductName']) ? $ProductData['ProductName'] : '';
                $ProductPrice = isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '0.00';
                $TargetQuantity = isset($ProductData['TargetQuantity']) ? $ProductData['TargetQuantity'] : '';
                $Status = '1';            
                $IsDeleted = '0';
                $Created_by = $UserId;

                $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);  

            }            
        }                             
        $Performances = Performance::select('*')  
        ->where('TargetId',$TargetId)         
        ->where('Status', '=', '1')  
        ->where('IsDeleted', '=', 0)          
        ->get()->first();  
        
        
        $UserName = '';
        $Users = User::where('UserId', $AssignTo)->get();               
        if ($Users->count() > 0)
        {   //email is not exist

            $UserData = $Users->first();               
            $UserName = $UserData->FirstName." ".$UserData->LastName;
        }
        $Performances->UserName = $UserName; 
        
        $PerformanceLineItem = PerformanceLineItem::where('TargetId', $TargetId)->get(); 
        $Performances->Products = array();
        if ($PerformanceLineItem->count() > 0)
        {   //email is not exist
            $PerformanceLineItemData = $PerformanceLineItem;       
            $Performances->Products = $PerformanceLineItemData;    
                
        }  

        foreach ($Performances->Products as $key => $PerformanceProductValue) 
        {                         
            $CustomerId = $PerformanceProductValue->CustomerId;                     
            $UserName='';
            $Users = User::where('UserId', $AssignTo)->get();               
            if ($Users->count() > 0)
            {   //email is not exist

                $UserData = $Users->first();                   
                $UserName = $UserData->FirstName." ".$UserData->LastName;
            }
            $PerformanceProductValue->UserName = $UserName;
        }        
        $response = [
            'Success' => true,
            'ResponseMessage' => "Performance has been added",
            'ResponseCode' => "200",                                                            
            'Performance' => $Performances, 
            'ApiUrl' => env('APP_URL'),    
            'ApiVersion' => env('APP_VERSION'), 
            'PerformanceQuery' => $PerformanceQuery
            // 'PerformanceLIQuery' => $PerformanceLIQuery                          
        ];                                               
        return response()->json($response);                
    } 

    
    
    //updatePerformance
    public function updatePerformance(Request $request) 
    {
        //TODO What is device_token
        $data = $request->json()->all();	                 
        
        $CreatedDate = date('Y-m-d H:i:s',time());

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken'); 
        //check auth token
        if($this->userLib->tokenChecker($request) == FALSE)
        {
            $response = [
                'success' => false,
                'ResponseMessage' => "Authentication Failed",
                'ResponseCode' => "301",
                'ApiVersion' => env('APP_VERSION'),    
            ];
            return response()->json($response);
        }   
        
        $NoOfVisits = isset($data['NoOfVisits']) ? $data['NoOfVisits'] : '0';
        $TotalRevenue = isset($data['TotalRevenue']) ? $data['TotalRevenue'] : '0';
        $TargetType = isset($data['TargetType']) ? $data['TargetType'] : '';  
        $TerritoryId = isset($data['TerritoryId']) ? $data['TerritoryId'] : ''; 
        
        $TargetId = isset($data['TargetId']) ? $data['TargetId'] : ''; 
        
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '0';  

        
        $AssignTo = '';
       
        $cvdata = array();
        $Products = array();
        
        if($IsDeleted == '0')
        {
            
            $AssignTo = isset($data['AssignTo']) ? $data['AssignTo'] : '';  
            $Products = isset($data['Products']) ? $data['Products'] : ''; 
            $Products = json_decode(json_encode($Products), true); 
            $cvdata['UserId'] =  $AssignTo;   
            $cvdata['TerritoryId'] =  $TerritoryId;           
            $cvdata['NoOfVisits'] = $NoOfVisits;  
            $cvdata['TotalRevenue'] = $TotalRevenue; 
            $cvdata['TargetType'] = $TargetType;      
            // $cvdata['StartDate'] = date('Y-m-d',strtotime($data['StartDate']));  
            // $cvdata['EndDate'] =  date('Y-m-d',strtotime($data['EndDate'])); 
            
            $cvdata['StartDate'] = $data['StartDate'];  
            $cvdata['EndDate'] =  $data['EndDate']; 
        }
        
            
        $cvdata['Status'] = '1';
        $cvdata['IsDeleted'] = $IsDeleted;        
        $cvdata['Updated_at'] = $CreatedDate;        
        $cvdata['Updated_by'] = $UserId;
        if($UserId){
            $user_details = User::select('tbl_user.*')
            ->where('tbl_user.UserId', $UserId)
            ->get()->first();
            $cvdata['UpdatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
        }    
        
         
        $PerformanceUpdate = Performance::where('TargetId',$TargetId)->update($cvdata);
        
        $AssignTo = isset($data['AssignTo']) ? $data['AssignTo'] : '';
        $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
        // $StartDate = date('Y-m-d', strtotime($StartDate1));
        $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
        // $EndDate = date('Y-m-d', strtotime($EndDate1));
        $NoOfVisits = isset($data['NoOfVisits']) ? $data['NoOfVisits'] : '';
        $TargetType = isset($data['TargetType']) ? $data['TargetType'] : '';
        $TerritoryId = isset($data['TerritoryId']) ? $data['TerritoryId'] : '';
        $TotalRevenue = isset($data['TotalRevenue']) ? $data['TotalRevenue'] : '';
        $UserId = isset($data['UserId']) ? $data['UserId'] : '';
        $Status = isset($data['Status']) ? $data['Status'] : '';            
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
        // $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';
        $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';
       
        $PerformanceQuery = "update salesforce.Performance__c set AssignTo__c='$AssignTo',StartDate__c='$StartDate',EndDate__c='$EndDate',NoOfVisits__c='$NoOfVisits',TargetType__c='$TargetType',TerritoryId__c='$TerritoryId',TotalRevenue__c='$TotalRevenue',UserId__c='$UserId',Updated_at__c='$CreatedDate',Status__c='$Status',IsDeleted__c='$IsDeleted',Updated_by__c='$Updated_by' where TargetId__c='$TargetId'";  
                    
        DB::connection('pgsql')->update($PerformanceQuery);  
            
        if(count($Products) > 0)
        {
            for($i = 0; $i < count($Products); $i++)
            {
                $ProductData = $Products[$i];
                $ProductPrice = isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '0.00';
                $ProductId = $ProductData['ProductId'];                                                                                 
                $CheckPerformanceLineItem = PerformanceLineItem::where('TargetId',$TargetId)->where('ProductId',$ProductId)->get(); 
                if(count($CheckPerformanceLineItem) > 0)
                { 
                    $cvstdata = array();                     
                    $cvstdata['ProductName'] =  $ProductData['ProductName'];
                    $cvstdata['ProductPrice'] =  isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] :'0.00';
                    $cvstdata['TargetQuantity'] =  $ProductData['TargetQuantity']; 
                    $cvstdata['UserId'] =  $AssignTo;                          
                    $cvstdata['Status'] =  $ProductData['Status'];
                    $cvstdata['IsDeleted'] = $ProductData['IsDeleted'];                
                    $cvstdata['Updated_at'] = $CreatedDate; 
                    $cvstdata['CreatedDate'] = $CreatedDate;
                    $cvstdata['ModifiedDate'] = $CreatedDate;               
                    $cvstdata['Updated_by'] = $UserId;                                                 
                    $StockProductInsert = PerformanceLineItem::where('TargetId',$TargetId)->where('ProductId',$ProductId)->update($cvstdata);

                    // $ProductId = isset($data['ProductId']) ? $data['ProductId'] : '';
                    $ProductName = $ProductData['ProductName'];
                    $ProductPrice = isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '';
                    $TargetQuantity = isset($ProductData['TargetQuantity']) ? $ProductData['TargetQuantity'] : '';
                    $Status =  isset($ProductData['Status']) ? $ProductData['Status'] : '';           
                    $IsDeleted = isset($ProductData['IsDeleted']) ? $ProductData['IsDeleted'] : '';
                    $Updated_by = $UserId;

                    $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',Status__c='$Status',IsDeleted__c='$IsDeleted',Updated_by__c='$Updated_by' where Target_Id__c='$TargetId' and Product_Id__c='$ProductId'";  
                                
                    DB::connection('pgsql')->update($PerformanceLIQuery);
                }
                else
                {
                    $cvstdata = array();                                
                    $cvstdata['TargetId'] = $TargetId;                                       
                    $cvstdata['ProductId'] =  $ProductData['ProductId'];
                    $cvstdata['ProductName'] =  $ProductData['ProductName'];
                    $cvstdata['ProductPrice'] =  isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] :'0.00';
                    $cvstdata['TargetQuantity'] =  $ProductData['TargetQuantity']; 
                    $cvstdata['UserId'] =  $AssignTo;                          
                    $cvstdata['Status'] = '1';
                    $cvstdata['IsDeleted'] = '0';                
                    $cvstdata['Updated_at'] = $CreatedDate;
                    $cvstdata['Created_at'] = $CreatedDate;
                    $cvstdata['CreatedDate'] = $CreatedDate;
                    $cvstdata['ModifiedDate'] = $CreatedDate;
                    $cvstdata['Created_by'] = $UserId;
                    $cvstdata['Updated_by'] = $UserId;                                                 
                    $StockProductInsert = PerformanceLineItem::insert($cvstdata);

                    $ProductId = isset($ProductData['ProductId']) ? $ProductData['ProductId'] : '';
                    $ProductName = isset($ProductData['ProductName']) ? $ProductData['ProductName'] : '';
                    $ProductPrice = isset($ProductData['ProductPrice']) ? $ProductData['ProductPrice'] : '0.00';
                    $TargetQuantity = isset($ProductData['TargetQuantity']) ? $ProductData['TargetQuantity'] : '';
                    $Status = '1';            
                    $IsDeleted = '0';
                    $Created_by = $UserId;

                    $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); 

                }
                
            }            
        }                             
        $Performance = Performance::select('*')  
        ->where('TargetId',$TargetId)         
        ->where('Status', '=', '1')  
        ->where('IsDeleted', '=', '0')          
        ->get()->first();  
        
        $Performance = json_decode(json_encode($Performance),true);
        
        $UserName = '';
        $Users = User::where('UserId', $AssignTo)->get();               
        if ($Users->count() > 0)
        {   //email is not exist

            $UserData = $Users->first();   
            $UserName = $UserData->FirstName." ".$UserData->LastName;
            
        }
        $Performance['UserName'] = $UserName;
        
        
        $PerformanceLineItem = PerformanceLineItem::where('TargetId', $TargetId)->get(); 
        
         
        $Performance['Products'] = $PerformanceLineItem;

        $PerformanceProducts = $Performance['Products'];

        foreach ($PerformanceProducts as $key => $PerformanceProductValue) 
        {                         
            $CustomerId = $PerformanceProductValue->CustomerId;                     
            $UserName='';
            $Users = User::where('UserId', $AssignTo)->get();               
            if ($Users->count() > 0)
            {   //email is not exist

                $UserData = $Users->first();   
                $UserName = $UserData->FirstName." ".$UserData->LastName;
            }
            $PerformanceProductValue->UserName = $UserName;
        } 
        if($IsDeleted == '1'){
            $message = "Performance has been deleted";
        } 
        else{
            $message = "Performance has been updated";
        }      
        $response = [
            'Success' => true,
            'ResponseMessage' => $message,
            'ResponseCode' => "200",                                                            
            'Performance' => $Performance, 
            'ApiUrl' => env('APP_URL'),    
            'ApiVersion' => env('APP_VERSION'),
            'PerformanceQuery' => $PerformanceQuery
            // 'PerformanceLIQuery' => $PerformanceLIQuery                         
        ];                                               
        return response()->json($response);                
    } 

 
//User get getPerformanceUserList
public function getPerformanceUserList(Request $request, $ManagerId='') {
    //TODO What is device_token
    $data = $request->json()->all();	                       
    $tblData = array();                 
     
               
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'error_message' => "Authentication Failed",
            'error_code' => "301",
            'ApiVersion' => env('APP_VERSION'),    
        ];
        return response()->json($response);
    }
     
    //Check Memeber is exist or not
    $users = User::select('UserId', 'FirstName', 'LastName', 'Email','Mobile')->where('ManagerId',$ManagerId)->get();               
    if ($users->count() > 0)
    {   //email is exist                
        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');
        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,                            
            'AuthToken' => $AuthToken,                
            'Users' => $users, 
            'ApiUrl' => env('APP_URL'),    
            'ApiVersion' => env('APP_VERSION'),                           
        ];                                               
        return response()->json($response);                                                                                        
    }
    else
    {   
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "User does not exist",
            'ResponseCode' => "201",   
            'ApiVersion' => env('APP_VERSION'),                      
        ];
        return response()->json($response);
                                                                                                       
    }
}    


//getStock List
public function getPerformanceList(Request $request) {
    $data = $request->json()->all();	                       
    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');                
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),    
        ];
        return response()->json($response);
    } 
    
    $TeamList = $this->APICommonController->getManagerTeamList($UserId);

    

    if($TeamList)
    {
        array_push($TeamList, $UserId);
        $Performances = Performance::select('*')           
        ->where('Status', '=', '1')  
        ->where('IsDeleted', '=', '0')       
        ->whereIn('Created_by', $TeamList)              
        ->orderBy('id', 'desc')        
        ->get();  
    }
    else
    {
        $Performances = Performance::select('*')           
        ->where('Status', '=', '1')  
        ->where('IsDeleted', '=', '0')                   
        ->Where('AssignTo', $UserId)
        ->orderBy('id', 'desc')        
        ->get();   
    }
    

    if ($Performances->count() > 0)
    { 
        foreach ($Performances as $key => $PerformanceValue) 
        {     
            //Distributer 
            $CreatedFormatedDate = $PerformanceValue->Created_at;      
            $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));    
            $PerformanceValue->CreatedFormatedDate = $CreatedFormatedDate;

            $StartFormatedDate = $PerformanceValue->StartDate;      
            $StartFormatedDate = date("j M Y",strtotime($StartFormatedDate));    
            $PerformanceValue->StartFormatedDate = $StartFormatedDate;

            $EndFormatedDate = $PerformanceValue->EndDate;      
            $EndFormatedDate = date("j M Y",strtotime($EndFormatedDate));    
            $PerformanceValue->EndFormatedDate = $EndFormatedDate;

            $pUserId = $PerformanceValue->UserId; 
            $userDetails = User::where('UserId', $pUserId)->get();  
            $userData = $userDetails->first();       
            $asignUserFirstName = isset($userData->FirstName) ? $userData->FirstName : '';            
            $asignUserLastName = isset($userData->LastName) ? $userData->LastName : '';                    
            $PerformanceValue->AssignToName = $asignUserFirstName." ".$asignUserLastName;


            $Created_by = $PerformanceValue->Created_by; 
            $userCreatedBy = User::where('UserId', $Created_by)->get();  
            $userCreatedByData = $userCreatedBy->first();      
            $createUserFirstName = isset($userCreatedByData->FirstName) ? $userCreatedByData->FirstName : '';            
            $createUserLastName = isset($userCreatedByData->LastName) ? $userCreatedByData->LastName : '';                                   
            $PerformanceValue->CreatedByName = $createUserFirstName." ".$createUserLastName;
        }
    }
    
     
    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",                                                            
        'Performances' => $Performances, 
        'ApiUrl' => env('APP_URL'),    
        'ApiVersion' => env('APP_VERSION'),   
        'TeamList' => $TeamList                        
    ];                                               
    return response()->json($response);
}

//getVisitsDetails
public function getPerformanceDetails(Request $request, $TargetId='') {
    $data = $request->json()->all();	                       
    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');                
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),    
        ];
        return response()->json($response);
    }
    
    if($TargetId == '')
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Please provide TargetId",
            'ResponseCode' => "305",
            'ApiVersion' => env('APP_VERSION'),    
        ];
        return response()->json($response);
    }
     
    $Performance = Performance::select('*')  
    ->where('TargetId',$TargetId)         
    ->where('Status', '=', '1')  
    ->where('IsDeleted', '=', 0)         
    ->get()->first();   

    $Performance = json_decode(json_encode($Performance),true);
    $TerritoryId = isset($Performance['TerritoryId']) ? $Performance['TerritoryId'] : '';
    $StartDate = isset($Performance['StartDate']) ? $Performance['StartDate'] : '';
    $EndDate = isset($Performance['EndDate']) ? $Performance['EndDate'] : '';
    $AssignTo = isset($Performance['UserId']) ? $Performance['UserId'] : '';
   
    $StartDate = date('Y-m-d',strtotime($StartDate));
    $EndDate = date('Y-m-d',strtotime($EndDate));


    //DB::enableQueryLog();
    $Orders = Order::select('*') 
    ->leftJoin('tbl_order_item', 'tbl_order_item.OrderId', '=', 'tbl_order.OrderId')           
    ->where('tbl_order.IsDeleted', '=', 0)  
    ->where('tbl_order_item.Created_at', '>=', $StartDate) 
    ->where('tbl_order_item.Created_at', '<=', $EndDate)  
    ->where('tbl_order.OrderStatusId','JUDFg673F4sd2') //Delivered
    ->where('tbl_order.AssignTo',$AssignTo)
    ->orderBy('tbl_order.id', 'desc')       
    ->get(); 

    //dd(DB::getQueryLog());

    $OrderTotalAmount = 0.00;     
    if ($Orders->count() > 0)
    {
        foreach ($Orders as $key => $OrderValue) 
        {                         
            $TotalPrice = $OrderValue->TotalPrice;
            $OrderTotalAmount = $OrderTotalAmount + $TotalPrice;
            
        }       
    }
    $OrderTotalAmount = number_format((float)$OrderTotalAmount, 2, '.', '');
    $Performance['TotalAmountAchieved'] = $OrderTotalAmount;
    $Performance['AchievedAmount'] = $OrderTotalAmount;
    

    $TotalRevenue = isset($Performance['TotalRevenue']) ? $Performance['TotalRevenue'] : '';
    $TotalRevenue = number_format((float)$TotalRevenue, 2, '.', '');
    $Performance['TotalRevenue'] = $TotalRevenue;

    $TerritoryName = '';
    $Territory = SalesTerritory::where('TerritoryId', $TerritoryId)->get();               
    if ($Territory->count() > 0)
    {   //email is not exist

        $TerritoryData = $Territory->first();   
        $TerritoryName = $TerritoryData->Name;
    }
    $Performance['TerritoryName'] = $TerritoryName;

    $UserId = isset($Performance['UserId']) ? $Performance['UserId'] : '';
    $UserName = '';
    $User = User::where('UserId', $UserId)->get();               
    if ($User->count() > 0)
    {   //email is not exist

        $UserData = $User->first();   
        $UserName = $UserData->FirstName." ".$UserData->LastName;
    }

    $Performance['UserName'] = $UserName;
  
    $PerformanceLineItem = PerformanceLineItem::where('TargetId', $TargetId)
                            ->where('Status', '=', '1')  
                            ->where('IsDeleted', '=', 0)     
                            ->get(); 
    $Performance['Products'] = array();
    if ($PerformanceLineItem->count() > 0)
    {   //email is not exist
        $StockProductData = $PerformanceLineItem;       
        $Performance['Products'] = $StockProductData;                      
    } 
    

    $CreatedFormatedDate = $Performance['Created_at'];      
    $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));    
    $Performance['CreatedFormatedDate'] = $CreatedFormatedDate;

    $CreatedFormatedDate = $Performance['StartDate'];      
    $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));    
    $Performance['StartFormatedDate'] = $CreatedFormatedDate;

    $CreatedFormatedDate = $Performance['EndDate'];      
    $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));    
    $Performance['EndFormatedDate'] = $CreatedFormatedDate;
     

    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",                                                            
        'Performance' => $Performance, 
        'ApiUrl' => env('APP_URL'),    
        'ApiVersion' => env('APP_VERSION'),                           
    ];                                               
    return response()->json($response);
}


//getStock List
public function getTargetType(Request $request, $StockId='') {
    $data = $request->json()->all();	                       
    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');                
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),    
        ];
        return response()->json($response);
    }              
    $TargetTypes = TargetType::select('*')           
    ->where('Status', '=', '1')  
    ->where('IsDeleted', '=', 0)          
    ->get();   

     
     
    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",                                                            
        'TargetTypes' => $TargetTypes, 
        'ApiUrl' => env('APP_URL'),    
        'ApiVersion' => env('APP_VERSION'),                           
    ];                                               
    return response()->json($response);
}


              
function count_digit($number) {
    return strlen($number);
}
    
function divider($number_of_digits) 
{
    $tens="1";

    if($number_of_digits>8)
        return 10000000;
    
    while(($number_of_digits-1)>0)
    {
        $tens.="0";
        $number_of_digits--;
    }
    return $tens;
}

}