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/APIBeatPlanController.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\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 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 APIBeatPlanController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected $userLib;
    protected $dateFormat = 'dd-mm-yyyy';
    public function __construct(UserLib $userLib)
	{
		$this->userLib = $userLib;
	}

    //createBeatPlan
public function createBeatPlan(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $BeatPlanId = $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);
    }

    if(strtoupper($data['BeatPlanType']) == strtoupper('SALESAREAWISE'))
    {
        $BeatPlanCustomers = isset($data['Customers']) ? $data['Customers'] :'';
    }
    else
    {
        $BeatPlanCustomers = isset($data['Retailers']) ? $data['Retailers'] :'';
    }


    $BeatPlanCustomers = json_decode(json_encode($BeatPlanCustomers),true);

    $data['BeatPlanId'] = $BeatPlanId;
    $data['Status'] = '1';
    $data['IsDeleted'] = '0';
   // $data['BeatPlanDate'] = $CreatedDate;
    $data['Updated_at'] = $CreatedDate;
    $data['Created_at'] = $CreatedDate;
    $data['Created_by'] = $UserId;
    $data['AssignTo'] = $UserId;

    $data['Updated_by'] = $UserId;
    unset($data['DistributorName']);
    unset($data['RetailerNames']);
    unset($data['SalesTerritoryName']);
    unset($data['SalesAreaName']);
    unset($data['Retailers']);
    unset($data['Customers']);
    $BeatPlan_insert = BeatPlan::insert($data);
    $CustomerIds = '';
    if($BeatPlan_insert)
    {
        $BeatPlanDate = isset($data['BeatPlanDate']) ? $data['BeatPlanDate'] : '';
        $BeatPlanName = isset($data['BeatPlanName']) ? $data['BeatPlanName'] : '';
        $BeatPlanType = isset($data['BeatPlanType']) ? $data['BeatPlanType'] : '';
        $SalesAreaId = isset($data['SalesAreaId']) ? $data['SalesAreaId'] : '';
        $SalesTerritoryId = isset($data['SalesTerritoryId']) ? $data['SalesTerritoryId'] : '';
        $Status = isset($data['Status']) ? $data['Status'] : '';
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
        $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';
        // $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';


        $BeatPlanQuery = "insert into salesforce.Beat_Plan__c (Beat_Plan_Id__c,BeatPlan_Date__c,Name,BeatPlan_Type__c,Sales_Area_Id__c,Sales_Territory_Id__c,CreatedDate,Status__c,Is_Deleted__c,Updated_by__c) values ('$BeatPlanId','$BeatPlanDate','$BeatPlanName','$BeatPlanType','$SalesAreaId','$SalesTerritoryId','$CreatedDate','$Status','$IsDeleted','$Updated_by')";

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


        if(count($BeatPlanCustomers) > 0)
        {
            $p=0;
            for($i =0; $i < count($BeatPlanCustomers); $i++)
            {
                $BeatPlanCustomerId = $this->userLib->useridGenrator();
                $CustomerId = $BeatPlanCustomers[$i];
                $CustomerIds .= $CustomerId.',';
                $BeatPlanCustomerData = array();
                $BeatPlanCustomerData['BeatPlanCustomerId'] = $BeatPlanCustomerId;
                $BeatPlanCustomerData['BeatPlanId'] = $BeatPlanId;
                $BeatPlanCustomerData['CustomerId'] = $CustomerId;
                $BeatPlanCustomerData['AssignTo'] = $UserId;
                $BeatPlanCustomerData['Status'] = '1';
                $BeatPlanCustomerData['IsDeleted'] = '0';
                $BeatPlanCustomerData['Updated_at'] = $CreatedDate;
                $BeatPlanCustomerData['Created_at'] = $CreatedDate;
                $BeatPlanCustomerData['Created_by'] = $UserId;
                $BeatPlanCustomerData['Updated_by'] = $UserId;

                $bpc_insert = BeatPlanCustomer::insert($BeatPlanCustomerData);

                if($bpc_insert)
                {
                    $p = $p + 1;
                }
            }
        }

        if($CustomerIds)
        {
            $CustomerIds = rtrim($CustomerIds, ',');
        }
        $RetailerNameId = array('RetailerNameId'=>$CustomerIds);

        $BeatPlan_insert = BeatPlan::where('BeatPlanId',$BeatPlanId)->update($RetailerNameId);


        $BPValue =  array();
        if($p == count($BeatPlanCustomers))
        {
            $BeatPlans = BeatPlan::select('*')
            ->where('BeatPlanId', $BeatPlanId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($BeatPlans->count() > 0)
            {
                $BPValue = $BeatPlans->first();

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

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

                //Retailer RetailerNameId
                $RetailerNameIds = $BPValue->RetailerNameId;
                $RetailerNames = '';
                $RetailerNameValue = '';
                if($RetailerNameIds)
                {
                    $RetailerNameIdArray = explode(',', $RetailerNameIds);
                    for($h=0;$h < count($RetailerNameIdArray); $h++)
                    {
                        $RetailerNameId = $RetailerNameIdArray[$h];
                        $RCustomer = Customer::where('CustomerId', $RetailerNameId)->get();
                        if ($RCustomer->count() > 0)
                        {   //email is not exist

                            $RCustomerData = $RCustomer->first();
                            $CustomerName = $RCustomerData->CustomerName;
                            $RetailerNameValue .= $CustomerName.', ';
                        }
                    }
                    if($RetailerNameValue)
                    {
                        $RetailerNames = rtrim($RetailerNameValue, ', ');
                    }
                }
                $BPValue['RetailerNames'] = $RetailerNames;

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

                    $SalesTerritoryData = $SalesTerritory->first();
                    $SalesTerritoryName = $SalesTerritoryData->Name;
                }
                $BPValue['SalesTerritoryName'] = $SalesTerritoryName;

                //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;

                $BeatPlanCustomer = BeatPlanCustomer::select('*')
                ->where('BeatPlanId', $BeatPlanId)
                ->where('Status', '=', '1')
                ->where('IsDeleted', '=', 0)
                ->get();
                if ($BeatPlanCustomer->count() > 0)
                {
                    foreach ($BeatPlanCustomer as $key => $BPCValue)
                    {
                        $CustomerName = '';
                        $CustomerId = $BPCValue->CustomerId;
                        $RCustomer = Customer::where('CustomerId', $CustomerId)->get();
                        if ($RCustomer->count() > 0)
                        {   //email is not exist

                            $RCustomerData = $RCustomer->first();
                            $CustomerName = $RCustomerData->CustomerName;

                        }
                        $BPCValue['CustomerName']=  $CustomerName;
                    }
                }

                $BPValue['Retailers'] = $BeatPlanCustomer;
            }
        }

        $response = [
            'Success' => true,
            'ResponseMessage' => "BeatPlan has been created",
            'ResponseCode' => "200",
            'BeatPlan' => $BPValue,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
            'BeatPlanQuery' => $BeatPlanQuery
        ];
        return response()->json($response);


    }
    else
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "Invalid data",
            'ResponseCode' => "204",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

//updateBeatPlan
public function updateBeatPlan(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $BeatPlanId = $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);
    }

    if(strtoupper($data['BeatPlanType']) == strtoupper('SALESAREAWISE'))
    {
        $BeatPlanCustomers = isset($data['Customers']) ? $data['Customers'] :'';
    }
    else
    {
        $BeatPlanCustomers = isset($data['Retailers']) ? $data['Retailers'] :'';
    }
    $BeatPlanCustomers = json_decode(json_encode($BeatPlanCustomers),true);
    $BeatPlanId = $data['BeatPlanId'];


   // $data['BeatPlanDate'] = $CreatedDate;
    $data['Updated_at'] = $CreatedDate;
    $data['Created_at'] = $CreatedDate;
    $data['Created_by'] = $UserId;
    $data['Updated_by'] = $UserId;
    unset($data['DistributorName']);
    unset($data['RetailerNames']);
    unset($data['SalesTerritoryName']);
    unset($data['SalesAreaName']);
    unset($data['Retailers']);
    unset($data['Customers']);
    unset($data['BeatPlanId']);
    $BeatPlan_update = BeatPlan::where('BeatPlanId',$BeatPlanId)->update($data);
    $CustomerIds = '';
    if($BeatPlan_update)
    {
        $BeatPlanDate = isset($data['BeatPlanDate']) ? $data['BeatPlanDate'] : '';
        $BeatPlanName = isset($data['BeatPlanName']) ? $data['BeatPlanName'] : '';
        $BeatPlanType = isset($data['BeatPlanType']) ? $data['BeatPlanType'] : '';
        $SalesAreaId = isset($data['SalesAreaId']) ? $data['SalesAreaId'] : '';
        $SalesTerritoryId = isset($data['SalesTerritoryId']) ? $data['SalesTerritoryId'] : '';
        $Status = isset($data['Status']) ? $data['Status'] : '';
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
        $Updated_by = $UserId;
        // $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';

        $BeatPlanQuery = "update salesforce.Beat_Plan__c set BeatPlan_Date__c='$BeatPlanDate',Name='$BeatPlanName',BeatPlan_Type__c='$BeatPlanType',Sales_Area_Id__c='$SalesAreaId',Sales_Territory_Id__c='$SalesTerritoryId',Updated_at__c='$CreatedDate',Status__c='$Status',Is_Deleted__c='$IsDeleted',Updated_by__c='$Updated_by' where Beat_Plan_Id__c='$BeatPlanId'";

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

        if(count($BeatPlanCustomers) > 0)
        {
            $p=0;
            for($i =0; $i < count($BeatPlanCustomers); $i++)
            {
                $BeatPlanCustomerId = $this->userLib->useridGenrator();
                $CustomerId = $BeatPlanCustomers[$i];
                $CustomerIds .= $CustomerId.',';
                $BeatPlanCustomerData = array();
                $BeatPlanCustomerData['BeatPlanCustomerId'] = $BeatPlanCustomerId;
                $BeatPlanCustomerData['BeatPlanId'] = $BeatPlanId;
                $BeatPlanCustomerData['CustomerId'] = $CustomerId;
                $BeatPlanCustomerData['Status'] = '1';
                $BeatPlanCustomerData['IsDeleted'] = '0';
                $BeatPlanCustomerData['AssignTo'] = $UserId;
                $BeatPlanCustomerData['Updated_at'] = $CreatedDate;
                $BeatPlanCustomerData['Created_at'] = $CreatedDate;
                $BeatPlanCustomerData['Created_by'] = $UserId;
                $BeatPlanCustomerData['Updated_by'] = $UserId;
                $bpc_delete = BeatPlanCustomer::where('BeatPlanId',$BeatPlanId)->delete();
                if($bpc_delete)
                {
                    $bpc_insert = BeatPlanCustomer::insert($BeatPlanCustomerData);
                    if($bpc_insert)
                    {
                        $p = $p + 1;
                    }
                }
            }
        }

        if($CustomerIds)
        {
            $CustomerIds = rtrim($CustomerIds, ',');
        }
        $RetailerNameId = array('RetailerNameId'=>$CustomerIds);

        $BeatPlan_insert = BeatPlan::where('BeatPlanId',$BeatPlanId)->update($RetailerNameId);


        $BPValue = '';
        if($p == count($BeatPlanCustomers))
        {
            $BeatPlans = BeatPlan::select('*')
            ->where('BeatPlanId', $BeatPlanId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($BeatPlans->count() > 0)
            {
                $BPValue = $BeatPlans->first();

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

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

                //Retailer RetailerNameId
                $RetailerNameIds = $BPValue->RetailerNameId;
                $RetailerNames = '';
                $RetailerNameValue = '';
                if($RetailerNameIds)
                {
                    $RetailerNameIdArray = explode(',', $RetailerNameIds);
                    for($h=0;$h < count($RetailerNameIdArray); $h++)
                    {
                        $RetailerNameId = $RetailerNameIdArray[$h];
                        $RCustomer = Customer::where('CustomerId', $RetailerNameId)->get();
                        if ($RCustomer->count() > 0)
                        {   //email is not exist

                            $RCustomerData = $RCustomer->first();
                            $CustomerName = $RCustomerData->CustomerName;
                            $RetailerNameValue .= $CustomerName.', ';
                        }
                    }
                    if($RetailerNameValue)
                    {
                        $RetailerNames = rtrim($RetailerNameValue, ', ');
                    }
                }
                $BPValue['RetailerNames'] = $RetailerNames;

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

                    $SalesTerritoryData = $SalesTerritory->first();
                    $SalesTerritoryName = $SalesTerritoryData->Name;
                }
                $BPValue['SalesTerritoryName'] = $SalesTerritoryName;

                //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;

                $BeatPlanCustomer = BeatPlanCustomer::select('*')
                ->where('BeatPlanId', $BeatPlanId)
                ->where('Status', '=', '1')
                ->where('IsDeleted', '=', 0)
                ->get();
                if ($BeatPlanCustomer->count() > 0)
                {
                    foreach ($BeatPlanCustomer as $key => $BPCValue)
                    {
                        $CustomerName = '';
                        $CustomerId = $BPCValue->CustomerId;
                        $RCustomer = Customer::where('CustomerId', $CustomerId)->get();
                        if ($RCustomer->count() > 0)
                        {   //email is not exist

                            $RCustomerData = $RCustomer->first();
                            $CustomerName = $RCustomerData->CustomerName;

                        }
                        $BPCValue['CustomerName']=  $CustomerName;
                    }
                }

                $BPValue['Retailers'] = $BeatPlanCustomer;
            }
        }

        $response = [
            'Success' => true,
            'ResponseMessage' => "BeatPlan has been updated",
            'ResponseCode' => "200",
            'BeatPlanData' => $BPValue,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
            'BeatPlanQuery' => $BeatPlanQuery
        ];
        return response()->json($response);


    }
    else
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "Invalid data",
            'ResponseCode' => "204",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

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


        $BeatPlans = BeatPlan::select('*')
        ->where('BeatPlanId',$BeatPlanId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get();



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

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


        $BeatPlanType = $BPValue->BeatPlanType;


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

            $CustomerData = $Customer->first();
            $CustomerName = $CustomerData->CustomerName;
        }
        $BPValue['DistributorName'] = $CustomerName;
        //Retailer RetailerNameId
        $RetailerNameIds = $BPValue->RetailerNameId;
        $RetailerNames = '';
        $RetailerNameValue = '';
        $userNames = array();
        if($RetailerNameIds)
        {
            $RetailerNameIdArray = explode(',', $RetailerNameIds);

            for($h=0;$h < count($RetailerNameIdArray); $h++)
            {
                $RetailerNameId = $RetailerNameIdArray[$h];
                $RCustomer = Customer::where('CustomerId', $RetailerNameId)->get();
                if ($RCustomer->count() > 0)
                {   //email is not exist

                    $RCustomerData = $RCustomer->first();
                    $CustomerName = $RCustomerData->CustomerName;
                    $RetailerNameValue .= $CustomerName.', ';
                    $userNames[] = $RCustomerData->CustomerId;
                }
            }
            if($RetailerNameValue)
            {
                $RetailerNames = rtrim($RetailerNameValue, ', ');

            }
        }
        $BPValue['RetailerNames'] = $RetailerNames;
        $BPValue['Retailers'] = $userNames;

         //Customer CustomerNameId
        //  $CustomerNameIds = $BPValue->CustomerId;
        //  $CustomerNames = '';
        //  $CustomerNameValue = '';
        //  if($CustomerNameIds)
        //  {
        //      $CustomerNameIdArray = explode(',', $CustomerNameIds);
        //      for($c=0;$c < count($CustomerNameIdArray); $c++)
        //      {
        //          $CustomerNameId = $CustomerNameIdArray[$c];
        //          $GetCustomer = Customer::where('CustomerId', $CustomerNameId)->get();
        //          if ($GetCustomer->count() > 0)
        //          {

        //              $GetCustomerData = $GetCustomer->first();
        //              $CustomerName = $GetCustomerData->CustomerName;
        //              $CustomerNameValue .= $CustomerName.', ';
        //              echo $CustomerNameValue;
        //          }
        //      }
        //      if($CustomerNameValue)
        //      {
        //          $CustomerNames = rtrim($CustomerNameValue, ', ');
        //      }
        //     $BPValue['CustomerNames'] = $CustomerNames;
        //  }

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

            $SalesTerritoryData = $SalesTerritory->first();
            $SalesTerritoryName = $SalesTerritoryData->Name;
        }
        $BPValue['SalesTerritoryName'] = $SalesTerritoryName;

        //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;

        if(strtoupper($BeatPlanType) == strtoupper('SALESAREAWISE'))
        {
            $BPValue['CustomerNameId'] = $BPValue['RetailerNameId'];
            $BPValue['CustomerNames'] = $BPValue['RetailerNames'];
            $BPValue['RetailerNames'] = '';
            $BPValue['RetailerNameId'] = '';
            $BPValue['Customers'] = $BPValue['Retailers'];
            $BPValue['Retailers'] = '';

        }
        else
        {
            $BPValue['CustomerNames'] = '';
            $BPValue['CustomerNameId'] = '';
            $BPValue['Customers'] = array();
        }

        $response = [
            'Success' => true,
            'ResponseMessage' => "Success",
            'ResponseCode' => "200",
            'UserId' => $UserId,
            'AuthToken' => $AuthToken,
            'BeatPlanDetails' => $BPValue,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
        ];


        return response()->json($response);
    }
    else
    {
        // fail
        $response = [
            'Success' => false,
            'ResponseMessage' => "Beat plan does not exist",
            'ResponseCode' => "201",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}

//getBeatPlanList
public function getBeatPlanList(Request $request, $BeatPlanType='') {
    $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(strtoupper($BeatPlanType) == strtoupper('SALESAREAWISE'))
    {
        $BeatPlans = BeatPlan::select('*')
        ->where('BeatPlanType', 'like', $BeatPlanType)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }
    else if(strtoupper($BeatPlanType) == strtoupper('DistributorWise'))
    {
        $BeatPlans = BeatPlan::select('*')
        ->where('BeatPlanType', 'like', $BeatPlanType)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }
    else
    {
        $BeatPlans = BeatPlan::select('*')
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'DESC')
        ->get();
    }


    if ($BeatPlans->count() > 0)
    {
        foreach ($BeatPlans as $key => $BPValue)
        {


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


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

                $CustomerData = $Customer->first();
                $CustomerName = $CustomerData->CustomerName;
            }
            $BPValue['DistributorName'] = $CustomerName;
            //Retailer RetailerNameId
            $RetailerNameIds = $BPValue->RetailerNameId;
            $RetailerNames = '';
            $RetailerNameValue = '';
            if($RetailerNameIds)
            {
                $RetailerNameIdArray = explode(',', $RetailerNameIds);
                for($h=0;$h < count($RetailerNameIdArray); $h++)
                {
                    $RetailerNameId = $RetailerNameIdArray[$h];
                    $RCustomer = Customer::where('CustomerId', $RetailerNameId)->get();
                    if ($RCustomer->count() > 0)
                    {   //email is not exist

                        $RCustomerData = $RCustomer->first();
                        $CustomerName = $RCustomerData->CustomerName;
                        $RetailerNameValue .= $CustomerName.', ';
                    }
                }
                if($RetailerNameValue)
                {
                    $RetailerNames = rtrim($RetailerNameValue, ', ');
                }
            }
            $BPValue['RetailerNames'] = $RetailerNames;

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

                $SalesTerritoryData = $SalesTerritory->first();
                $SalesTerritoryName = $SalesTerritoryData->Name;
            }
            $BPValue['SalesTerritoryName'] = $SalesTerritoryName;

            //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;
        }

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

//getBeatPlanListCustomer
public function getBeatPlanListCustomer(Request $request, $CustomerId='') {
    $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($CustomerId)
    {
        $BeatPlans = BeatPlan::select('tbl_beat_plan.*')
        ->leftJoin('tbl_beat_plan_customers', 'tbl_beat_plan_customers.BeatPlanId', '=', 'tbl_beat_plan.BeatPlanId')
        ->where('tbl_beat_plan_customers.CustomerId', 'like', $CustomerId)
        ->where('tbl_beat_plan.Status', '=', '1')
        ->where('tbl_beat_plan.IsDeleted', '=', 0)
        ->where('tbl_beat_plan.AssignTo', '=', $UserId)
        ->orderBy('tbl_beat_plan.id', 'DESC')
        ->get();
    }
    else
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "CustomerId required",
            'ResponseCode' => "305",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }





    if ($BeatPlans->count() > 0)
    {
        foreach ($BeatPlans as $key => $BPValue)
        {


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


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

                $CustomerData = $Customer->first();
                $CustomerName = $CustomerData->CustomerName;
            }
            $BPValue['DistributorName'] = $CustomerName;
            //Retailer RetailerNameId
            $RetailerNameIds = $BPValue->RetailerNameId;
            $RetailerNames = '';
            $RetailerNameValue = '';
            if($RetailerNameIds)
            {
                $RetailerNameIdArray = explode(',', $RetailerNameIds);
                for($h=0;$h < count($RetailerNameIdArray); $h++)
                {
                    $RetailerNameId = $RetailerNameIdArray[$h];
                    $RCustomer = Customer::where('CustomerId', $RetailerNameId)->get();
                    if ($RCustomer->count() > 0)
                    {   //email is not exist

                        $RCustomerData = $RCustomer->first();
                        $CustomerName = $RCustomerData->CustomerName;
                        $RetailerNameValue .= $CustomerName.', ';
                    }
                }
                if($RetailerNameValue)
                {
                    $RetailerNames = rtrim($RetailerNameValue, ', ');
                }
            }
            $BPValue['RetailerNames'] = $RetailerNames;

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

                $SalesTerritoryData = $SalesTerritory->first();
                $SalesTerritoryName = $SalesTerritoryData->Name;
            }
            $BPValue['SalesTerritoryName'] = $SalesTerritoryName;

            //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;
        }

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

public function getSalesAreaList(Request $request, $TerritoryId='') {
    $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($TerritoryId)
   {
        $SalesArea = SalesArea::select('*')
        ->where('SalesTerritoryId', 'like', $TerritoryId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        //->where('Created_by', '=', $UserId)
        ->Orderby('Name','Asc')
        ->get();
   }
   else
   {
        $SalesArea = SalesArea::select('*')
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
       // ->where('Created_by', '=', $UserId)
        ->Orderby('Name','Asc')
        ->get();
   }

    if ($SalesArea->count() > 0)
    {

        foreach ($SalesArea as $key => $SalesAreaValue)
        {
            $CreatedFormatedDate = $SalesAreaValue->Created_at;
            $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
            $SalesAreaValue->CreatedFormatedDate = $CreatedFormatedDate;
        }

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



//tbl_expense_type
public function getSalesTerritoryList(Request $request, $UserId='') {
    $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);
    }


    $SalesTerritory = SalesTerritory::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->orderBy('Name','ASC')
    ->get();
    if ($SalesTerritory->count() > 0)
    {

        foreach ($SalesTerritory as $key => $SalesTerritoryValue)
        {
            $CreatedFormatedDate = $SalesTerritoryValue->Created_at;
            $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
            $SalesTerritoryValue->CreatedFormatedDate = $CreatedFormatedDate;
        }

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



### Customer List
public function getAllCustomerList(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);
    }

    $Customer = Customer::where('Status', '=', '1')
        ->where('IsDeleted', '=', '0')->get();

    $Retailer = Customer::select('tbl_customer.*', 'tbl_customer_type.Name as CustomerType')
    ->leftJoin('tbl_customer_type', 'tbl_customer.CustomerTypeId', '=', 'tbl_customer_type.CustomerTypeId')
    ->where('tbl_customer.CustomerTypeId', '=', '7zbZseyyTqvA6n7n5Bk01RvCm30KpPQa8M8k7')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('tbl_customer.AssignTo', '=', $UserId)
    ->orderBy('tbl_customer.id', 'desc')
    ->get();
    $Distributor = Customer::select('tbl_customer.*', 'tbl_customer_type.Name as CustomerType')
    ->leftJoin('tbl_customer_type', 'tbl_customer.CustomerTypeId', '=', 'tbl_customer_type.CustomerTypeId')
    ->where('tbl_customer.CustomerTypeId', '=', '4zZVseyyTqvA6n7n5Bk01RvCm30KpPQa8M8k2')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('tbl_customer.AssignTo', '=', $UserId)
    ->orderBy('tbl_customer.id', 'desc')
    ->get();
    $WholeSeller = Customer::select('tbl_customer.*', 'tbl_customer_type.Name as CustomerType')
    ->leftJoin('tbl_customer_type', 'tbl_customer.CustomerTypeId', '=', 'tbl_customer_type.CustomerTypeId')
    ->where('tbl_customer.CustomerTypeId', '=', 'ozbVseyyTqvA6n7n5Bk01RvCm40KpPQa8M8k3')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('tbl_customer.AssignTo', '=', $UserId)
    ->orderBy('tbl_customer.id', 'desc')
    ->get();
    return response()->json([
        'status' => 200,
        'Customer' => $Customer,
        'Retailer' => $Retailer,
        'Distributor' => $Distributor,
        'WholeSeller' => $WholeSeller,
    ]);

}


## Retailer List
public function getRetailerList(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);
    }
    $Retailer = Customer::select('tbl_customer.*', 'tbl_customer_type.Name as CustomerType')
    ->leftJoin('tbl_customer_type', 'tbl_customer.CustomerTypeId', '=', 'tbl_customer_type.CustomerTypeId')
    ->where('tbl_customer.CustomerTypeId', '=', '7zbZseyyTqvA6n7n5Bk01RvCm30KpPQa8M8k7')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('AssignTo', '=', $UserId)
    ->orderBy('tbl_customer.id', 'desc')
    ->get();
    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",
        'UserId' => $UserId,
        'AuthToken' => $AuthToken,
        'Retailer' => $Retailer,
        'ApiUrl' => env('APP_URL'),
        'ApiVersion' => env('APP_VERSION'),
    ];
    return response()->json($response);
}

## Distributor List
public function getDistributorList(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);
    }
    $Distributor = Customer::select('tbl_customer.*', 'tbl_customer_type.Name as CustomerType')
    ->leftJoin('tbl_customer_type', 'tbl_customer.CustomerTypeId', '=', 'tbl_customer_type.CustomerTypeId')
    ->where('tbl_customer.CustomerTypeId', '=', '4zZVseyyTqvA6n7n5Bk01RvCm30KpPQa8M8k2')
    ->where('tbl_customer.Status', '=', '1')
    ->where('tbl_customer.IsDeleted', '=', '0')
    ->where('AssignTo', '=', $UserId)
    ->orderBy('tbl_customer.id', 'desc')
    ->get();
    $response = [
        'Success' => true,
        'ResponseMessage' => "Success",
        'ResponseCode' => "200",
        'UserId' => $UserId,
        'AuthToken' => $AuthToken,
        'Distributor' => $Distributor,
        '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;
    }

}