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/APIVisitsController.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\Visits;
use App\Models\VisitCustomer;
use App\Models\BeatPlan;
use App\Models\BeatPlanCustomer;
use App\Models\Expense;
use App\Models\ExpenseType;
use App\Models\ExpenseTypeTravel;
use App\Models\SalesArea;
use App\Models\SalesTerritory;
use App\Models\VisitNotes;

use DateTime;
use App\Http\Controllers\APICommonController;
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 APIVisitsController 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 createVisit(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $VisitId = $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);
    }

    $CustomerIds = $data['CustomerIds'];
    $CustomerIds = json_decode(json_encode($CustomerIds), true);



    $cid = '';
    if(count($CustomerIds) > 0)
    {
        for($p = 0; $p < count($CustomerIds); $p++)
        {
            $custid = $CustomerIds[$p];
            $cid .= $custid.',';
        }
    }

    $VisitDate = isset($data['VisitDate']) ? $data['VisitDate'] : '';

    $cid = rtrim($cid, ',');

        if(strtoupper($data['VisitType']) == "INDIVIDUAL")
        {
            if(count($CustomerIds) > 0)
            {
                for($i = 0; $i < count($CustomerIds); $i++)
                {
                    $CustomerId = $CustomerIds[$i];
                    $cvdata = array();
                    // $cvdata['VisitCustomerId'] = $this->userLib->useridGenrator();
                    // $cvdata['VisitId'] = $VisitId;
                    // $cvdata['VisitDate'] = $data['VisitDate'];
                    // $cvdata['CustomerId'] = $CustomerId;
                    // $cvdata['Status'] = '1';
                    // $cvdata['IsDeleted'] = '0';
                    // $cvdata['Updated_at'] = $CreatedDate;
                    // $cvdata['Created_at'] = $CreatedDate;
                    // $cvdata['Created_by'] = $UserId;
                    // $cvdata['Updated_by'] = $UserId;
                    // $Visitsc_insert = VisitCustomer::insert($cvdata);
                    // if($Visitsc_insert)
                    // {
                    // }

                    $VisitNo = "VISIT-" . time() . '-' . rand();
                    $cvdata['VisitNo'] = $VisitNo;
                    $cvdata['CustomerId'] = $CustomerId;
                    $VisitId = $this->userLib->useridGenrator();
                    $cvdata['VisitId'] = $VisitId;
                    $cvdata['VisitType'] =  $data['VisitType'];
                    $cvdata['SalesAreaId'] =  $data['SalesAreaId'];
                    $cvdata['UserId'] =  $data['UserId'];
                    $cvdata['OwnerId'] =  $data['OwnerId'];
                    $cvdata['Status'] = '1';
                    $cvdata['IsDeleted'] = '0';
                    $cvdata['VisitDate'] = $VisitDate;
                    $cvdata['Updated_at'] = $CreatedDate;
                    $cvdata['Created_at'] = $CreatedDate;
                    $cvdata['AssignTo'] = $UserId;
                    $cvdata['Created_by'] = $UserId;
                    $cvdata['Updated_by'] = $UserId;
                    $Visits_insert = Visits::insert($cvdata);

                    $VisitType = isset($data['VisitType']) ? $data['VisitType'] : '';
                    $SalesAreaId = isset($data['SalesAreaId']) ? $data['SalesAreaId'] : '';
                    $UserId = isset($data['UserId']) ? $data['UserId'] : '';
                    $VisitDate = isset($data['VisitDate']) ? $data['VisitDate'] : '';
                    $Approved = isset($data['Approved']) ? $data['Approved'] : '';
                    $BeatPlanId = isset($data['BeatPlanId']) ? $data['BeatPlanId'] : '';
                    $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';
                    $Status = isset($data['Status']) ? $data['Status'] : '0';
                    $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '0';
                    $OwnerId = isset($data['OwnerId']) ? $data['OwnerId'] : '';
                    $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';

                    $VisitQuery = "insert into salesforce.Visit__c (Visit_Id__c,Visit_Type__c,Sales_Area_Id__c,User_Id__c,Visit_Date__c,Approved__c,BeatPlan_Id__c,CreatedDate,Updated_by__c,Fb_Status__c,IsDeleted__c,Fb_OwnerId__c,Fb_Created_By__c,Name) values ('$VisitId','$VisitType','$SalesAreaId','$UserId','$VisitDate','$Approved','$BeatPlanId','$CreatedDate','$Updated_by','$Status','$IsDeleted','$OwnerId','$Created_by','$VisitNo')";

                    DB::connection('pgsql')->insert($VisitQuery);

                }

            }
        }
        else
        {
            $BeatPlanId = isset($data['BeatPlanId']) ? $data['BeatPlanId'] : '';

            //BeatPlanId
            $BeatPlanName = '';
            $BeatPlanCustomers = BeatPlanCustomer::where('BeatPlanId', $BeatPlanId)->get();
            if ($BeatPlanCustomers->count() > 0)
            {
                foreach ($BeatPlanCustomers as $key => $BPValue)
                {
                    $CustomerId = $BPValue->CustomerId;
                    $cvdata = array();
                    $g_visit = "VISIT-" . time() . '-' . rand();
                    $cvdata['VisitNo'] = $g_visit;
                    $cvdata['CustomerId'] = $CustomerId;
                    $cvdata['VisitId'] = $this->userLib->useridGenrator();
                    $cvdata['VisitType'] =  $data['VisitType'];
                    $cvdata['SalesAreaId'] =  $data['SalesAreaId'];
                    $cvdata['BeatPlanId'] =  $data['BeatPlanId'];
                    $cvdata['UserId'] =  $data['UserId'];
                    $cvdata['OwnerId'] =  $data['OwnerId'];
                    $cvdata['Status'] = '1';
                    $cvdata['IsDeleted'] = '0';
                    $cvdata['VisitDate'] = $VisitDate;
                    $cvdata['Updated_at'] = $CreatedDate;
                    $cvdata['Created_at'] = $CreatedDate;
                    $cvdata['Created_by'] = $UserId;
                    $cvdata['AssignTo'] = $UserId;
                    $cvdata['Updated_by'] = $UserId;
                    $Visits_insert = Visits::insert($cvdata);

                    $VisitType = isset($data['VisitType']) ? $data['VisitType'] : '';
                    $SalesAreaId = isset($data['SalesAreaId']) ? $data['SalesAreaId'] : '';
                    $UserId = isset($data['UserId']) ? $data['UserId'] : '';
                    $VisitDate = isset($data['VisitDate']) ? $data['VisitDate'] : '';
                    $Approved = isset($data['Approved']) ? $data['Approved'] : '';
                    $BeatPlanId = isset($data['BeatPlanId']) ? $data['BeatPlanId'] : '';
                    $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';
                    $Status = isset($data['Status']) ? $data['Status'] : '0';
                    $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '0';
                    $OwnerId = isset($data['OwnerId']) ? $data['OwnerId'] : '';
                    $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';

                    $VisitQuery = "insert into salesforce.Visit__c (Visit_Id__c,Visit_Type__c,Sales_Area_Id__c,User_Id__c,Visit_Date__c,Approved__c,BeatPlan_Id__c,CreatedDate,Updated_by__c,Fb_Status__c,IsDeleted__c,Fb_OwnerId__c,Fb_Created_By__c,Name) values ('$VisitId','$VisitType','$SalesAreaId','$UserId','$VisitDate','$Approved','$BeatPlanId','$CreatedDate','$Updated_by','$Status','$IsDeleted','$OwnerId','$Created_by','$g_visit')";

                     DB::connection('pgsql')->insert($VisitQuery);
                }
            }


        }
        $Visits = Visits::select('*')
        ->where('VisitId',$VisitId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get()->first();
        $response = [
            'Success' => true,
            'ResponseMessage' => "Visits has been created",
            'ResponseCode' => "200",
            'Visits' => $Visits,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
            'VisitQuery' =>$VisitQuery
        ];
        return response()->json($response);

}


//updateVisits

public function updateVisit(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);
    }
    $VisitId = $data['VisitId'];
    $data['Updated_at'] = $CreatedDate;
    $data['Updated_by'] = $UserId;
    unset($data['VisitId']);

    if(isset($data['CheckedOut']))
    {
        $CheckedIn = $data['CheckedIn'];
        $CheckedOut = $data['CheckedOut'];

        $start_time = new DateTime($CheckedIn);
        $end_time = new DateTime($CheckedOut);
        $interval = $start_time->diff($end_time);
        $h =($interval->format("%a") * 24) + $interval->format("%h");
        $hour = $h. 'hour';
        if($h > 1)
        {
            $hour = $h. 'hours';
        }
        $TotalSpentTime = $hour. $interval->format(" %i minutes ");
        $data['TotalSpentTime'] = $TotalSpentTime;
    }

    $Visits_update = Visits::where('VisitId',$VisitId)->update($data);
    if($Visits_update)
    {
        $VisitDate = isset($data['VisitDate']) ? $data['VisitDate'] : '';
        $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';
        $CheckedInLatitude = isset($data['CheckedInLocationLatitude']) ? $data['CheckedInLocationLatitude'] : '';
        $CheckedInLongitude = isset($data['CheckedInLocationLongitude']) ? $data['CheckedInLocationLongitude'] : '';
        $VisitNoteId = isset($data['VisitNoteId']) ? $data['VisitNoteId'] : '';
        $CheckedIn = isset($data['CheckedIn']) ? $data['CheckedIn'] : '';
        $CheckedOutLatitude = isset($data['CheckedOutLocationLatitude']) ? $data['CheckedOutLocationLatitude'] : '';
        $CheckedOutLongitude = isset($data['CheckedOutLocationLongitude']) ? $data['CheckedOutLocationLongitude'] : '';
        $CheckedInLocation = isset($data['CheckedInLocation']) ? $data['CheckedInLocation'] : '';
        $CheckedOutLocation = isset($data['CheckedOutLocation']) ? $data['CheckedOutLocation'] : '';
        $VisitDescription = isset($data['VisitDescription']) ? $data['VisitDescription'] : '';
        $CheckedOut = isset($data['CheckedOut']) ? $data['CheckedOut'] : '';

        // if($VisitDate != '' || $CreatedDate !='' || $Updated_by !='' || $CheckedIn !='' || $CheckedInLocation !='' || $CheckedInLatitude !='' || $CheckedInLongitude!='' || $VisitDescription='' || $VisitNoteId !=''){
        //     $VisitQuery = "update salesforce.Visit__c set Visit_Date__c='$VisitDate',Update_date__c='$CreatedDate',Updated_by__c='$Updated_by',Checked_In__c='$CheckedIn',Check_In_Address__c='$CheckedInLocation',Checked_In_Location__Latitude__s='$CheckedInLatitude',Checked_In_Location__Longitude__s='$CheckedInLongitude',Visit_Description__c='$VisitDescription',Visit_Note_Id__c='$VisitNoteId' where Visit_Id__c='$VisitId'";

        //     DB::connection('pgsql')->update($VisitQuery);
        // }
        // else{

        //     $VisitQuery = "update salesforce.Visit__c set Visit_Date__c='$VisitDate',Update_date__c='$CreatedDate',Updated_by__c='$Updated_by',Checked_In__c='$CheckedIn',Check_In_Address__c='$CheckedInLocation',Checked_In_Location__Latitude__s='$CheckedInLatitude',Checked_In_Location__Longitude__s='$CheckedInLongitude',Visit_Description__c='$VisitDescription',Checked_Out__c='$CheckedOut',Checked_Out_Address__c='$CheckedOutLocation',Checked_Out_Location__Latitude__s='$CheckedOutLatitude',Checked_Out_Location__Longitude__s='$CheckedOutLongitude',Visit_Description__c='$VisitDescription',Visit_Note_Id__c='$VisitNoteId' where Visit_Id__c='$VisitId'";

        //     DB::connection('pgsql')->update($VisitQuery);

        // }

        $Visits = Visits::select('*')
        ->where('VisitId',$VisitId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get()->first();

        $CheckedIn = isset($Visits->CheckedIn) ? $Visits->CheckedIn : '';
        $CheckedOut = isset($Visits->CheckedOut) ? $Visits->CheckedOut : '';
        $VisitQuery='';
        if($CheckedIn)
        {
            $Visits->CheckedIn = date('d-m-Y, H:i', strtotime($Visits->CheckedIn));

            $VisitQuery = "update salesforce.Visit__c set Visit_Date__c='$VisitDate',Update_date__c='$CreatedDate',Updated_by__c='$Updated_by',Checked_In__c='$CheckedIn',Check_In_Address__c='$CheckedInLocation',Checked_In_Location__Latitude__s='$CheckedInLatitude',Checked_In_Location__Longitude__s='$CheckedInLongitude',Visit_Description__c='$VisitDescription',Visit_Note_Id__c='$VisitNoteId' where Visit_Id__c='$VisitId'";

            DB::connection('pgsql')->update($VisitQuery);
        }
        if($CheckedOut)
        {
            $Visits->CheckedOut = date('d-m-Y, H:i', strtotime($Visits->CheckedOut));

            $VisitQuery = "update salesforce.Visit__c set Visit_Date__c='$VisitDate',Update_date__c='$CreatedDate',Updated_by__c='$Updated_by',Checked_Out__c='$CheckedOut',Checked_Out_Address__c='$CheckedOutLocation',Checked_Out_Location__Latitude__s='$CheckedOutLatitude',Checked_Out_Location__Longitude__s='$CheckedOutLongitude',Visit_Description__c='$VisitDescription',Visit_Note_Id__c='$VisitNoteId' where Visit_Id__c='$VisitId'";

            DB::connection('pgsql')->update($VisitQuery);
        }

        $response = [
            'Success' => true,
            'ResponseMessage' => "Visits has been updated",
            'ResponseCode' => "200",
            'Visits' => $Visits,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
            'VisitQuery' => $VisitQuery
        ];
        return response()->json($response);
    }
    else
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "Invalid data",
            'ResponseCode' => "204",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}



//getVisitsDetails
public function getVisitDetails(Request $request, $VisitId='') {
    $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);
    }


        $Visits = Visits::select('*')
        ->where('VisitId',$VisitId)
        ->where('Status', '=', '1')
       ->where('IsDeleted', '=', 0)
        ->get();



    if ($Visits->count() > 0)
    {
        $BPValue = $Visits->first();


        $VisitNoteTitle = '';
        $VisitNoteId = $BPValue->VisitNoteId;

        if($VisitNoteId)
        {
            $VisitNotes = VisitNotes::select('*')
            ->where('VisitNoteId', '=', $VisitNoteId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->orderBy('id', 'DESC')
            ->get();
            if ($VisitNotes->count() > 0)
            {
                $VisitNote = $VisitNotes->first();
                $VisitNoteTitle = $VisitNote->VisitNoteTitle;
            }
        }
        $BPValue->VisitNoteTitle = $VisitNoteTitle;
        if($BPValue->CheckedIn)
        {
            $BPValue->CheckedIn = date('d-m-Y, H:i', strtotime($BPValue->CheckedIn));
        }
        if($BPValue->CheckedOut)
        {
            $BPValue->CheckedOut = date('d-m-Y, H:i', strtotime($BPValue->CheckedOut));
        }

        //BeatPlanId
        $BeatPlanId = $BPValue->BeatPlanId;
        $BeatPlanName = '';
        $BeatPlan = BeatPlan::where('BeatPlanId', $BeatPlanId)->get();
        if ($BeatPlan->count() > 0)
        {   //email is not exist

            $BeatPlanData = $BeatPlan->first();
            $BeatPlanName = $BeatPlanData->BeatPlanName;
        }
        $BPValue['BeatPlanName'] = $BeatPlanName;

        //SalesAreaName
        $SalesAreaId = $BPValue->SalesAreaId;
        $SalesAreaName = '';
        $SalesArea = SalesArea::where('SalesAreaId', $SalesAreaId)->get();
        if ($SalesArea->count() > 0)
        {   //email is not exist

            $SalesAreaData = $SalesArea->first();
            $SalesAreaName = $SalesAreaData->Name;
        }
        $BPValue['SalesAreaName'] = $SalesAreaName;


         //Get Customer Name
         $CustomerId = $BPValue->CustomerId;
         $CustomerName = '';
         $Customers = Customer::where('CustomerId', $CustomerId)->get();
         if ($Customers->count() > 0)
         {   //email is not exist

             $CustomerData = $Customers->first();
             $CustomerName = $CustomerData->CustomerName;
         }
         $BPValue['CustomerName'] = $CustomerName;

        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'VisitDetails' => $BPValue,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "Visit does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

//getTeamVisitList
public function getTeamVisitList(Request $request, $filter='') {
    $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);

    $today = date('d-m-Y',time());



        $Visits = Visits::select('*')
        // ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->whereIn('AssignTo', $TeamList)
        ->orderBy('id', 'DESC')
        ->get();

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


    if ($Visits->count() > 0)
    {
        if ($Visits->count() > 0)
        {
            foreach ($Visits as $key => $BPValue)
            {
                //Distributer

                $CreatedFormatedDate = $BPValue->Created_at;
                $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
                $BPValue->CreatedFormatedDate = $CreatedFormatedDate;

                //BeatPlanId
                $BeatPlanId = $BPValue->BeatPlanId;
                $BeatPlanName = '';
                $BeatPlan = BeatPlan::where('BeatPlanId', $BeatPlanId)->get();
                if ($BeatPlan->count() > 0)
                {   //email is not exist

                    $BeatPlanData = $BeatPlan->first();
                    $BeatPlanName = $BeatPlanData->BeatPlanName;
                }
                $BPValue['BeatPlanName'] = $BeatPlanName;

                //SalesAreaName
                $SalesAreaId = $BPValue->SalesAreaId;
                $SalesAreaName = '';
                $SalesArea = SalesArea::where('SalesAreaId', $SalesAreaId)->get();
                if ($SalesArea->count() > 0)
                {   //email is not exist

                    $SalesAreaData = $SalesArea->first();
                    $SalesAreaName = $SalesAreaData->Name;
                }
                $BPValue['SalesAreaName'] = $SalesAreaName;


                 //Get Customer Name
                 $CustomerName = '';
                 $CustomerId = $BPValue->CustomerId;

                //  $CustomerId_arr = explode (",", $CustomerId);

                //  $cid = '';
                //  $CustomerNames = '';
                // if(count($CustomerId_arr) > 0)
                // {
                //     for($p = 0; $p < count($CustomerId_arr); $p++)
                //     {
                //         $CustomerId = $CustomerId_arr[$p];
                //         $Customers = Customer::where('CustomerId', $CustomerId)->get();
                //         if ($Customers->count() > 0)
                //         {   //email is not exist

                //             $CustomerData = $Customers->first();
                //             $CustomerName = $CustomerData->CustomerName;
                //             $CustomerNames .= $CustomerName.', ';
                //         }
                //     }
                // }
                // $CustomerNames = rtrim($CustomerNames, ', ');


                $Customers = Customer::where('CustomerId', $CustomerId)->get();
                if ($Customers->count() > 0)
                {   //email is not exist

                    $CustomerData = $Customers->first();
                    $CustomerName = $CustomerData->CustomerName;
                   // $CustomerNames .= $CustomerName.', ';
                }
                 $BPValue['CustomerName'] = $CustomerName;
            }
        }



        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'VisitList' => $Visits,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "visit does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

//getVisitsList
public function getVisitList(Request $request, $filter='') {
    $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);
    }
    $today = date('d-m-Y',time());


    //DB::enableQueryLog();
    if(strtoupper($filter)==strtoupper('Today'))
    {

        $Visits = Visits::select('*')
        ->where('IsDeleted', '=', 0)
        ->where('VisitDate', '=', $today)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }
    else if(strtoupper($filter)==strtoupper('UpComing'))
    {
        $Visits = Visits::select('*')

        ->where('IsDeleted', '=', 0)
        ->where('VisitDate', '>', $today)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }
    else if(strtoupper($filter)==strtoupper('Past'))
    {
        $Visits = Visits::select('*')
        ->where('VisitDate', '<', $today)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }
    else
    {
        $Visits = Visits::select('*')
        // ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }

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


    if ($Visits->count() > 0)
    {
        if ($Visits->count() > 0)
        {
            foreach ($Visits as $key => $BPValue)
            {
                //Distributer

                $CreatedFormatedDate = $BPValue->Created_at;
                $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
                $BPValue->CreatedFormatedDate = $CreatedFormatedDate;

                //BeatPlanId
                $BeatPlanId = $BPValue->BeatPlanId;
                $BeatPlanName = '';
                $BeatPlan = BeatPlan::where('BeatPlanId', $BeatPlanId)->get();
                if ($BeatPlan->count() > 0)
                {   //email is not exist

                    $BeatPlanData = $BeatPlan->first();
                    $BeatPlanName = $BeatPlanData->BeatPlanName;
                }
                $BPValue['BeatPlanName'] = $BeatPlanName;

                //SalesAreaName
                $SalesAreaId = $BPValue->SalesAreaId;
                $SalesAreaName = '';
                $SalesArea = SalesArea::where('SalesAreaId', $SalesAreaId)->get();
                if ($SalesArea->count() > 0)
                {   //email is not exist

                    $SalesAreaData = $SalesArea->first();
                    $SalesAreaName = $SalesAreaData->Name;
                }
                $BPValue['SalesAreaName'] = $SalesAreaName;


                 //Get Customer Name
                 $CustomerName = '';
                 $CustomerId = $BPValue->CustomerId;

                //  $CustomerId_arr = explode (",", $CustomerId);

                //  $cid = '';
                //  $CustomerNames = '';
                // if(count($CustomerId_arr) > 0)
                // {
                //     for($p = 0; $p < count($CustomerId_arr); $p++)
                //     {
                //         $CustomerId = $CustomerId_arr[$p];
                //         $Customers = Customer::where('CustomerId', $CustomerId)->get();
                //         if ($Customers->count() > 0)
                //         {   //email is not exist

                //             $CustomerData = $Customers->first();
                //             $CustomerName = $CustomerData->CustomerName;
                //             $CustomerNames .= $CustomerName.', ';
                //         }
                //     }
                // }
                // $CustomerNames = rtrim($CustomerNames, ', ');


                $Customers = Customer::where('CustomerId', $CustomerId)->get();
                if ($Customers->count() > 0)
                {   //email is not exist

                    $CustomerData = $Customers->first();
                    $CustomerName = $CustomerData->CustomerName;
                   // $CustomerNames .= $CustomerName.', ';
                }
                 $BPValue['CustomerName'] = $CustomerName;
            }
        }



        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'VisitList' => $Visits,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "visit does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

//get SalesAreaCustomer
public function SalesAreaCustomer(Request $request, $SalesAreaId='') {
    $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);
    }

    $Customers = Customer::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->where('SalesArea', $SalesAreaId)
    ->where('AssignTo', '=', $UserId)
    ->orderBy('id', 'DESC')
    ->get();
    if ($Customers->count() > 0)
    {
        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'Customers' => $Customers,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "Customer does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}


//get Distributor Retailers Name
public function DistributorRetailersList(Request $request, $DistributorId='') {
    $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);
    }

    $Customers = Customer::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0) //Distributor
    ->where('Type', '=','Retailer')
    ->where('DistributorId', $DistributorId)
    ->orderBy('id', 'DESC')
    ->get();
    if ($Customers->count() > 0)
    {
        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'Retailers' => $Customers,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "Customer does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}


//get Distributor Retailers Name
public function getVisitNoteList(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);
    }

    $VisitNotes = VisitNotes::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->orderBy('id', 'DESC')
    ->get();
    if ($VisitNotes->count() > 0)
    {
        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'VisitNotes' => $VisitNotes,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "Customer does not exist",
            'ResponseCode' => "201",
            '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;
}

//getVisitListSearch
public function getVisitListSearch(Request $request, $SearchText='') {
    $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);
    }
    $today = date('d-m-Y',time());


    $TeamList = $this->APICommonController->getManagerTeamList($UserId);
    array_push($TeamList, $UserId);
    if($SearchText)
    {
        // $Customers = Customer::select('*')
        // ->where('CustomerName', 'iLIKE', '%'.$SearchText.'%')
        // ->where('IsDeleted', '=', 0)
        // ->where('AssignTo', '=', $UserId)
        // ->orderBy('id', 'desc')
        // ->get();
        $Customers = Customer::select('*')
        ->where('CustomerName', 'iLIKE', '%'.$SearchText.'%')
        ->where('IsDeleted', '=', 0)
        ->whereIn('AssignTo', $TeamList)
        ->orderBy('id', 'desc')
        ->get();


        $CustomerIds = array();
        if($Customers->count() > 0)
        {   //email is exist
            foreach ($Customers as $key => $CValue)
            {
                $CustomerId = $CValue['CustomerId'];
                $CustomerIds[] = $CustomerId;
            }
        }

        $CustomerIds2 = implode(',',$CustomerIds);
        $Visits = Visits::select('*')
        ->where('IsDeleted', '=', 0)
        ->whereIn('AssignTo', $TeamList)
        ->whereIn('CustomerId', $CustomerIds)
        //->orWhere('CollectionType', 'like', '%'.$SearchText.'%')
        ->orderBy('id', 'desc')
        ->get();
    }
    else
    {
        $Visits = Visits::select('*')
        ->where('IsDeleted', '=', 0)
        ->whereIn('AssignTo', $TeamList)
        ->orderBy('id', 'desc')
        ->get();
    }


    if ($Visits->count() > 0)
    {
        if ($Visits->count() > 0)
        {
            foreach ($Visits as $key => $BPValue)
            {
                //Distributer

                $CreatedFormatedDate = $BPValue->Created_at;
                $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
                $BPValue->CreatedFormatedDate = $CreatedFormatedDate;

                //BeatPlanId
                $BeatPlanId = $BPValue->BeatPlanId;
                $BeatPlanName = '';
                $BeatPlan = BeatPlan::where('BeatPlanId', $BeatPlanId)->get();
                if ($BeatPlan->count() > 0)
                {   //email is not exist

                    $BeatPlanData = $BeatPlan->first();
                    $BeatPlanName = $BeatPlanData->BeatPlanName;
                }
                $BPValue['BeatPlanName'] = $BeatPlanName;

                //SalesAreaName
                $SalesAreaId = $BPValue->SalesAreaId;
                $SalesAreaName = '';
                $SalesArea = SalesArea::where('SalesAreaId', $SalesAreaId)->get();
                if ($SalesArea->count() > 0)
                {   //email is not exist

                    $SalesAreaData = $SalesArea->first();
                    $SalesAreaName = $SalesAreaData->Name;
                }
                $BPValue['SalesAreaName'] = $SalesAreaName;


                 //Get Customer Name
                 $CustomerName = '';
                 $CustomerId = $BPValue->CustomerId;

                $Customers = Customer::where('CustomerId', $CustomerId)->get();
                if ($Customers->count() > 0)
                {   //email is not exist

                    $CustomerData = $Customers->first();
                    $CustomerName = $CustomerData->CustomerName;
                   // $CustomerNames .= $CustomerName.', ';
                }
                 $BPValue['CustomerName'] = $CustomerName;
            }
        }



        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'VisitList' => $Visits,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "visit does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

}