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/APIOrderController.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\PaymentTerm;

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;

class APIOrderController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    protected $userLib;
    protected $dateFormat = 'dd-mm-yyyy';
    protected $APICommonController;
    protected $TeamList = array();

    protected $myTeam = array();
    public function __construct(UserLib $userLib, APICommonController $APICommonController)
	{
		$this->userLib = $userLib;
        $this->APICommonController = $APICommonController;
	}

    //download pdf DownloadOrderPDF



    //createOrder

    //User Registration
    public function createOrder(Request $request) {
		//TODO What is device_token
        $data = $request->json()->all();
        $OrderId = $this->userLib->useridGenrator();

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');
        //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);
        }

        $OrderNo = $data['OrderNo'] ? $data['OrderNo'] : '';

        $Order = Order::select('*')
        ->where('OrderNo', 'like', $OrderNo)
        ->get();

        if ($Order->count() > 0)
        {
            $response = [
                'Success' => true,
                'ResponseMessage' => "Order No already exist",
                'ResponseCode' => "206",
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }


        //get user data
        if(count($data['OrderItems']) > 0)
        {
            $OrderItems = $data['OrderItems'];

            $CustomerId =  $data['CustomerId'];





            if ($CustomerId) {
                $Customer = Customer::where('CustomerId', '=', $CustomerId)->get()->first();
                $CustomerCode = $Customer->CustomerCode;
                $CustomerName = $Customer->CustomerName;

                $customerName = strtoupper($CustomerName);
                // $OrderNo = 'ODR-'.substr($customerName, 0, 4).$this->userLib->otpGenrator();;
                $OrderNo = 'ODR-' . $CustomerCode . '-' . time();
                $data['OrderNo'] = $OrderNo;
                $data['CustomerName'] = $CustomerName;
            }


            $data['OrderStatusId'] = 'AUEFg65834sd2';
            $data['OrderId'] = $OrderId;
            $data['Status'] = '1';
            $data['Approved'] = isset($data['Approved']) ? $data['Approved'] : '9';
            $data['AssignTo'] = $UserId;
            if($UserId){
                $user_details = User::select('tbl_user.*')
                ->where('tbl_user.UserId', $UserId)
                ->get()->first();
                $data['CreatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
                $data['UpdatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
            }
            $data['Created_at'] = date('Y-m-d H:i:s',time());
            $data['Updated_at'] = date('Y-m-d H:i:s',time());

            unset($data['OrderItems']);
            unset($data['id']);
            $order_insert = Order::insert($data);


            if($order_insert)
            {
                $AmountWithGST = isset($data['AmountWithGST']) ? $data['AmountWithGST'] : '';
                $BillingCity = isset($data['BillingCity']) ? $data['BillingCity'] : '';
                $BillingCountry = isset($data['BillingCountry']) ? $data['BillingCountry'] : '';
                $BillingPostalCode = isset($data['BillingPostalCode']) ? $data['BillingPostalCode'] : '';
                $BillingState = isset($data['BillingState']) ? $data['BillingState'] : '';
                $BillingStreetAddress = isset($data['BillingStreetAddress']) ? $data['BillingStreetAddress'] : '';
                $ShippingCity = isset($data['ShippingCity']) ? $data['ShippingCity'] : '';
                $ShippingCountry = isset($data['ShippingCountry']) ? $data['ShippingCountry'] : '';
                $ShippingPostalCode = isset($data['ShippingPostalCode']) ? $data['ShippingPostalCode'] : '';
                $ShippingState = isset($data['ShippingState']) ? $data['ShippingState'] : '';
                $ShippingStreetAddress = isset($data['ShippingStreetAddress']) ? $data['ShippingStreetAddress'] : '';
                $CountOrderItem = isset($data['CountOrderItem']) ? $data['CountOrderItem'] : '';
                $CustomerId = isset($data['CustomerId']) ? $data['CustomerId'] : '';
                $DeliveryMethod = isset($data['DeliveryMethod']) ? $data['DeliveryMethod'] : '';
                $FullFilledBy = isset($data['FullFilledBy']) ? $data['FullFilledBy'] : '';
                $GrandTotal = isset($data['GrandTotal']) ? $data['GrandTotal'] : '';
                $OrderBookDate = isset($data['OrderBookDate']) ? $data['OrderBookDate'] : '';
                $OrderDeliveryDate = isset($data['OrderDeliveryDate']) ? $data['OrderDeliveryDate'] : '';
                $OrderNo = isset($data['OrderNo']) ? $data['OrderNo'] : '';
                $OrderNotes = isset($data['OrderNotes']) ? $data['OrderNotes'] : '';
                $OrderSignature = isset($data['OrderSignature']) ? $data['OrderSignature'] : '';
                $OrderStatusId = isset($data['OrderStatusId']) ? $data['OrderStatusId'] : '';
                $PaymentTerms = isset($data['PaymentTerms']) ? $data['PaymentTerms'] : '';
                $ReturnReason = isset($data['ReturnReason']) ? $data['ReturnReason'] : '';
                $SubTotal = isset($data['SubTotal']) ? $data['SubTotal'] : '';
                $Supplier = isset($data['Supplier']) ? $data['Supplier'] : '';
                $TotalAmount = isset($data['TotalAmount']) ? $data['TotalAmount'] : '';
                $TotalDiscount = isset($data['TotalDiscount']) ? $data['TotalDiscount'] : '';
                $TotalGST = isset($data['TotalGST']) ? $data['TotalGST'] : '';
                $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
                $IsReturn = isset($data['IsReturn']) ? $data['IsReturn'] : '';
                $Created_at = date('Y-m-d H:i:s',time());
                $EffectiveDate = date('Y-m-d H:i:s',time());
                $Status = '1';
                // $Approved = isset($data['Approved']) ? $data['Approved'] : '';
                // $ApprovedBy = isset($data['ApprovedBy']) ? $data['ApprovedBy'] : '';
                // $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';
                // $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';

                $OrderQuery = "insert into salesforce.Order (Order_Id__c,Amount_With_GST__c,BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,ShippingCity,ShippingCountry,ShippingPostalCode,ShippingState,ShippingStreet,Count_Order_Item__c,Customer_Id__c,Delivery_Method__c,FullFilled_By__c,Grand_Total__c,Order_Book_Date__c,Order_Delivery_Date__c,Name,Order_Notes__c,Order_Signature__c, Order_Status_Id__c,Payment_Terms__c,Return_Reason__c,Sub_Total__c,Supplier__c,Total_Amount__c,Total_Discount__c,Total_GST__c,Is_Deleted__c,Is_Return__c,CreatedDate,EffectiveDate,Status) values ('$OrderId','$AmountWithGST','$BillingCity','$BillingCountry','$BillingPostalCode','$BillingState','$BillingStreetAddress','$ShippingCity','$ShippingCountry','$ShippingPostalCode','$ShippingState','$ShippingStreetAddress','$CountOrderItem','$CustomerId','$DeliveryMethod','$FullFilledBy','$GrandTotal','$OrderBookDate','$OrderDeliveryDate','$OrderNo','$OrderNotes','$OrderSignature','$OrderStatusId','$PaymentTerms','$ReturnReason','$SubTotal','$Supplier','$TotalAmount','$TotalDiscount','$TotalGST','$IsDeleted','$IsReturn','$Created_at','$EffectiveDate',$Status)";

                $Insert_OrderSF = DB::connection('pgsql')->insert($OrderQuery);

                if($Insert_OrderSF)
                {
                    $p=0;
                   // sleep(10);
                    for($i =0; $i < count($OrderItems); $i++)
                    {
                        $OrderItemId = $this->userLib->useridGenrator();
                        $OrderItemData = $OrderItems[$i];
                        $OrderItemData['OrderItemId'] = $OrderItemId;
                        $OrderItemData['OrderId'] = $OrderId;
                        $OrderItemData['Status'] = '1';
                        $OrderItemData['Created_at'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['Updated_at'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['ModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastReferencedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastViewedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['CreatedDate'] = date('Y-m-d H:i:s',time());
                        unset($OrderItemData['id']);
                        $order_item_insert = OrderItems::insert($OrderItemData);
                        if($order_item_insert)
                        {
                        $p = $p + 1;

                        // $ProductId = isset($OrderItemData['ProductId']) ? $OrderItemData['ProductId'] : '';
                        // $ListPrice = isset($OrderItemData['ListPrice']) ? $OrderItemData['ListPrice'] : '';
                        // $SalePrice = isset($OrderItemData['SalePrice']) ? $OrderItemData['SalePrice'] : '';
                        // $Quantity = isset($OrderItemData['Quantity']) ? $OrderItemData['Quantity'] : '';
                        // $TotalPrice = isset($OrderItemData['TotalPrice']) ? $OrderItemData['TotalPrice'] : '';
                        // $DiscountType = isset($OrderItemData['DiscountType']) ? $OrderItemData['DiscountType'] : '';
                        // $Discount = isset($OrderItemData['Discount']) ? $OrderItemData['Discount'] : '';
                        // $DiscountInRupees = isset($OrderItemData['DiscountInRupees']) ? $OrderItemData['DiscountInRupees'] : '';
                        // $SubTotal = isset($OrderItemData['SubTotal']) ? $OrderItemData['SubTotal'] : '';
                        // $GSTInRupees = isset($OrderItemData['GSTInRupees']) ? $OrderItemData['GSTInRupees'] : '';
                        // $AmountWithGST = isset($OrderItemData['AmountWithGST']) ? $OrderItemData['AmountWithGST'] : '';
                        // $GstSlab = isset($OrderItemData['GstSlab']) ? $OrderItemData['GstSlab'] : '';
                        // $Name = isset($OrderItemData['Name']) ? $OrderItemData['Name'] : '';
                        // $PriceBookEntry = isset($OrderItemData['PriceBookEntry']) ? $OrderItemData['PriceBookEntry'] : '';
                        // $ProductFamily = isset($OrderItemData['ProductFamily']) ? $OrderItemData['ProductFamily'] : '';
                        // $Status = isset($OrderItemData['Status']) ? $OrderItemData['Status'] : '';
                        // $IsDeleted = isset($OrderItemData['IsDeleted']) ? $OrderItemData['IsDeleted'] : '';
                        // $Created_by = isset($OrderItemData['Created_by']) ? $OrderItemData['Created_by'] : '';
                        // $CreatedDate = date('Y-m-d H:i:s',time());
                        // $Updated_by = isset($OrderItemData['Updated_by']) ? $OrderItemData['Updated_by'] : '';

                        // $OrderItemQuery = "insert into salesforce.OrderItem (External_Order_Item_Id__c,Order_Id__c,Product_Id__c,List_Price__c,Sale_Price__c,Quantity,Total_Price__c,Discount_Type__c,Discount__c,Discount_In_Rupees__c,Sub_Total__c,GST_In_Rupees__c,Amount_With_GST__c,Gst_Slab__c,Name__c,Price_Book_Entry__c,Product_Family__c,Status__c,IsDeleted,Created_By_Id__c,CreatedDate,Updated_By__c,UnitPrice) values ('$OrderItemId','$OrderId','$ProductId','$ListPrice','$SalePrice','$Quantity','$TotalPrice','$DiscountType','$Discount','$DiscountInRupees','$SubTotal','$GSTInRupees','$AmountWithGST','$GstSlab','$Name','$PriceBookEntry','$ProductFamily','$Status','$IsDeleted','$Created_by','$CreatedDate','$Updated_by','$ListPrice')";
                        // //sleep(5);
                        // DB::connection('pgsql')->insert($OrderItemQuery);
                        }
                    }

                }

                if(count($OrderItems) == $p)
                {

                    $Order = Order::select('*')
                    ->where('OrderId', 'like', $OrderId)
                    ->get();

                    if ($Order->count() > 0)
                    {
                        $OrderData = $Order->first();
                        $OrderItems = OrderItems::select('*')
                        ->where('OrderId', '=', $OrderId)
                        ->get();
                        $OrderData->OrderItems = array();
                        if ($OrderItems->count() > 0)
                        {
                            $OrderData->OrderItems = $OrderItems;
                        }

                        $response = [
                            'Success' => true,
                            'ResponseMessage' => "Order has been created",
                            'ResponseCode' => "200",


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


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

            }
            else
            {
                // fail
                $response = [
                    'Success' => false,
                    'ResponseMessage' => "Invalid data",
                    'ResponseCode' => "202",
                    'ApiVersion' => env('APP_VERSION'),
                ];
                return response()->json($response);
            }
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "Order items has not found",
                'ResponseCode' => "202",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

    }



    //Order update
    public function updateOrder(Request $request) {
		//TODO What is device_token
        $data = $request->json()->all();
        $OrderId = $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,
                'error_message' => "Authentication Failed",
                'error_code' => "301",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $OrderNo = $data['OrderNo'] ? $data['OrderNo'] : '';
        $OrderId = $data['OrderId'] ? $data['OrderId'] : '';

        $Order = Order::select('*')
        ->where('OrderId', 'like', $OrderId)
        ->get();

        if ($Order->count() == 0)
        {
            $response = [
                'Success' => true,
                'ResponseMessage' => "Order not exist",
                'ResponseCode' => "206",
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }


        //get user data
        if(count($data['OrderItems']) > 0)
        {
            $OrderItems = $data['OrderItems'];




            $CustomerId =  $data['CustomerId'];

            $OrderBookDate = isset($data['OrderBookDate']) ? $data['OrderBookDate'] : '';
            if($OrderBookDate)
            {
                $data['OrderBookDate'] = date('Y-m-d',strtotime($OrderBookDate));
            }


            $OrderDeliveryDate = isset($data['OrderDeliveryDate']) ? $data['OrderDeliveryDate'] : '';
            if($OrderDeliveryDate)
            {
                $data['OrderDeliveryDate'] = date('Y-m-d',strtotime($OrderDeliveryDate));
            }


            $data['Updated_by'] = $UserId;
            if($UserId){
                $user_details = User::select('tbl_user.*')
                ->where('tbl_user.UserId', $UserId)
                ->get()->first();
                $data['UpdatedByName'] = $user_details->FirstName.' '.$user_details->LastName;
            }
            $data['Updated_at'] = $CreatedDate;

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

            unset($data['OrderItems']);
            unset($data['DeliveryFormatedDate']);
            unset($data['id']);

            $order_update = Order::where('OrderId',$OrderId)->update($data);


            if($order_update)
            {
                $AmountWithGST = isset($data['AmountWithGST']) ? $data['AmountWithGST'] : '';
                $BillingCity = isset($data['BillingCity']) ? $data['BillingCity'] : '';
                $BillingCountry = isset($data['BillingCountry']) ? $data['BillingCountry'] : '';
                $BillingPostalCode = isset($data['BillingPostalCode']) ? $data['BillingPostalCode'] : '';
                $BillingState = isset($data['BillingState']) ? $data['BillingState'] : '';
                $BillingStreetAddress = isset($data['BillingStreetAddress']) ? $data['BillingStreetAddress'] : '';
                $ShippingCity = isset($data['ShippingCity']) ? $data['ShippingCity'] : '';
                $ShippingCountry = isset($data['ShippingCountry']) ? $data['ShippingCountry'] : '';
                $ShippingPostalCode = isset($data['ShippingPostalCode']) ? $data['ShippingPostalCode'] : '';
                $ShippingState = isset($data['ShippingState']) ? $data['ShippingState'] : '';
                $ShippingStreetAddress = isset($data['ShippingStreetAddress']) ? $data['ShippingStreetAddress'] : '';
                $CountOrderItem = isset($data['CountOrderItem']) ? $data['CountOrderItem'] : '';
                $CustomerId = isset($data['CustomerId']) ? $data['CustomerId'] : '';
                $DeliveryMethod = isset($data['DeliveryMethod']) ? $data['DeliveryMethod'] : '';
                $FullFilledBy = isset($data['FullFilledBy']) ? $data['FullFilledBy'] : '';
                $GrandTotal = isset($data['GrandTotal']) ? $data['GrandTotal'] : '';
                $OrderBookDate = isset($data['OrderBookDate']) ? $data['OrderBookDate'] : '';
                $OrderDeliveryDate = isset($data['OrderDeliveryDate']) ? $data['OrderDeliveryDate'] : '';
                $OrderNo = isset($data['OrderNo']) ? $data['OrderNo'] : '';
                $OrderNotes = isset($data['OrderNotes']) ? $data['OrderNotes'] : '';
                $OrderSignature = isset($data['OrderSignature']) ? $data['OrderSignature'] : '';
                $OrderStatusId = isset($data['OrderStatusId']) ? $data['OrderStatusId'] : '';
                $PaymentTerms = isset($data['PaymentTerms']) ? $data['PaymentTerms'] : '';
                $ReturnReason = isset($data['ReturnReason']) ? $data['ReturnReason'] : '';
                $SubTotal = isset($data['SubTotal']) ? $data['SubTotal'] : '';
                $Supplier = isset($data['Supplier']) ? $data['Supplier'] : '';
                $TotalAmount = isset($data['TotalAmount']) ? $data['TotalAmount'] : '';
                $TotalDiscount = isset($data['TotalDiscount']) ? $data['TotalDiscount'] : '';
                $TotalGST = isset($data['TotalGST']) ? $data['TotalGST'] : '';
                // $Approved = isset($data['Approved']) ? $data['Approved'] : '';
                // $ApprovedBy = isset($data['ApprovedBy']) ? $data['ApprovedBy'] : '';
                // $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';
                // $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';

                $OrderQuery = "update salesforce.Order set Amount_With_GST__c='$AmountWithGST',BillingCity='$BillingCity',BillingCountry='$BillingCountry',BillingPostalCode='$BillingPostalCode',BillingState='$BillingState',BillingStreet='$BillingStreetAddress',ShippingCity='$ShippingCity',ShippingCountry='$ShippingCountry',ShippingPostalCode='$ShippingPostalCode',ShippingState='$ShippingState',ShippingStreet='$ShippingStreetAddress',Count_Order_Item__c='$CountOrderItem',Customer_Id__c='$CustomerId',Delivery_Method__c='$DeliveryMethod',FullFilled_By__c='$FullFilledBy',Grand_Total__c='$GrandTotal',Order_Book_Date__c='$OrderBookDate',Order_Delivery_Date__c='$OrderDeliveryDate',Order_No__c='$OrderNo',Order_Notes__c='$OrderNotes',Order_Signature__c='$OrderSignature', Order_Status_Id__c='$OrderStatusId',Payment_Terms__c='$PaymentTerms',Return_Reason__c='$ReturnReason',Sub_Total__c='$SubTotal',Supplier__c='$Supplier',Total_Amount__c='$TotalAmount',Total_Discount__c='$TotalDiscount',Total_GST__c='$TotalGST' where Order_Id__c='$OrderId'";

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

                $p=0;

                //return response()->json($OrderItems);


                for($i =0; $i < count($OrderItems); $i++)
                {

                    $OrderItemData = $OrderItems[$i];


                    $OrderItemId = $OrderItemData['OrderItemId'];


                    if($OrderItemId)
                    {
                        $OrderItemData['Updated_by'] = $UserId;
                        $OrderItemData['Updated_at'] = $CreatedDate;
                        $OrderItemData['ModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastReferencedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastViewedDate'] = date('Y-m-d H:i:s',time());
                        $order_item_insert = OrderItems::where('OrderId',$OrderId)->where('OrderItemId',$OrderItemId)->update($OrderItemData);
                        if($order_item_insert)
                        {
                            $p = $p + 1;
                        }

                        $ProductId = isset($OrderItemData['ProductId']) ? $OrderItemData['ProductId'] : '';
                        $ListPrice = isset($OrderItemData['ListPrice']) ? $OrderItemData['ListPrice'] : '';
                        $SalePrice = isset($OrderItemData['SalePrice']) ? $OrderItemData['SalePrice'] : '';
                        $Quantity = isset($OrderItemData['Quantity']) ? $OrderItemData['Quantity'] : '';
                        $TotalPrice = isset($OrderItemData['TotalPrice']) ? $OrderItemData['TotalPrice'] : '';
                        $DiscountType = isset($OrderItemData['DiscountType']) ? $OrderItemData['DiscountType'] : '';
                        $Discount = isset($OrderItemData['Discount']) ? $OrderItemData['Discount'] : '';
                        $DiscountInRupees = isset($OrderItemData['DiscountInRupees']) ? $OrderItemData['DiscountInRupees'] : '';
                        $SubTotal = isset($OrderItemData['SubTotal']) ? $OrderItemData['SubTotal'] : '';
                        $GSTInRupees = isset($OrderItemData['GSTInRupees']) ? $OrderItemData['GSTInRupees'] : '';
                        $AmountWithGST = isset($OrderItemData['AmountWithGST']) ? $OrderItemData['AmountWithGST'] : '';
                        $GstSlab = isset($OrderItemData['GstSlab']) ? $OrderItemData['GstSlab'] : '';
                        $Name = isset($OrderItemData['Name']) ? $OrderItemData['Name'] : '';
                        $PriceBookEntry = isset($OrderItemData['PriceBookEntry']) ? $OrderItemData['PriceBookEntry'] : '';
                        $ProductFamily = isset($OrderItemData['ProductFamily']) ? $OrderItemData['ProductFamily'] : '';
                        $Status = isset($OrderItemData['Status']) ? $OrderItemData['Status'] : '';
                        $IsDeleted = isset($OrderItemData['IsDeleted']) ? $OrderItemData['IsDeleted'] : '';
                        $UpdatedDate = date('Y-m-d H:i:s',time());
                        $Updated_by = isset($OrderItemData['Updated_by']) ? $OrderItemData['Updated_by'] : '';

                        $OrderItemQuery = "update salesforce.OrderItem set Product_Id__c='$ProductId',List_Price__c='$ListPrice',UnitPrice='$ListPrice',Sale_Price__c='$SalePrice',Quantity='$Quantity',Total_Price__c='$TotalPrice',Discount_Type__c='$DiscountType',Discount__c='$Discount',Discount_In_Rupees__c='$DiscountInRupees',Sub_Total__c='$SubTotal',GST_In_Rupees__c='$GSTInRupees',Amount_With_GST__c='$AmountWithGST',Gst_Slab__c='$GstSlab',Name__c='$Name',Price_Book_Entry__c='$PriceBookEntry',Product_Family__c='$ProductFamily',Status__c='$Status',IsDeleted='$IsDeleted',Updated_At__c='$UpdatedDate',Updated_By__c='$Updated_by' where External_Order_Item_Id__c='$OrderItemId' and Order_Id__c='$OrderId'";

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

                        $OrderItemId = $this->userLib->useridGenrator();
                        $OrderItemData = $OrderItems[$i];
                        $OrderItemData['OrderItemId'] = $OrderItemId;
                        $OrderItemData['OrderId'] = $OrderId;
                        $OrderItemData['Status'] = '1';
                        $OrderItemData['Created_at'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['Updated_at'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['ModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastModifiedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastReferencedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['LastViewedDate'] = date('Y-m-d H:i:s',time());
                        $OrderItemData['CreatedDate'] = date('Y-m-d H:i:s',time());

                        unset($OrderItemData['id']);

                        $order_item_insert = OrderItems::insert($OrderItemData);
                        if($order_item_insert)
                        {
                            $p = $p + 1;
                        }

                        // $ProductId = isset($OrderItemData['ProductId']) ? $OrderItemData['ProductId'] : '';
                        // $ListPrice = isset($OrderItemData['ListPrice']) ? $OrderItemData['ListPrice'] : '';
                        // $SalePrice = isset($OrderItemData['SalePrice']) ? $OrderItemData['SalePrice'] : '';
                        // $Quantity = isset($OrderItemData['Quantity']) ? $OrderItemData['Quantity'] : '';
                        // $TotalPrice = isset($OrderItemData['TotalPrice']) ? $OrderItemData['TotalPrice'] : '';
                        // $DiscountType = isset($OrderItemData['DiscountType']) ? $OrderItemData['DiscountType'] : '';
                        // $Discount = isset($OrderItemData['Discount']) ? $OrderItemData['Discount'] : '';
                        // $DiscountInRupees = isset($OrderItemData['DiscountInRupees']) ? $OrderItemData['DiscountInRupees'] : '';
                        // $SubTotal = isset($OrderItemData['SubTotal']) ? $OrderItemData['SubTotal'] : '';
                        // $GSTInRupees = isset($OrderItemData['GSTInRupees']) ? $OrderItemData['GSTInRupees'] : '';
                        // $AmountWithGST = isset($OrderItemData['AmountWithGST']) ? $OrderItemData['AmountWithGST'] : '';
                        // $GstSlab = isset($OrderItemData['GstSlab']) ? $OrderItemData['GstSlab'] : '';
                        // $Name = isset($OrderItemData['Name']) ? $OrderItemData['Name'] : '';
                        // $PriceBookEntry = isset($OrderItemData['PriceBookEntry']) ? $OrderItemData['PriceBookEntry'] : '';
                        // $ProductFamily = isset($OrderItemData['ProductFamily']) ? $OrderItemData['ProductFamily'] : '';
                        // $Status = isset($OrderItemData['Status']) ? $OrderItemData['Status'] : '';
                        // $IsDeleted = isset($OrderItemData['IsDeleted']) ? $OrderItemData['IsDeleted'] : '';
                        // $Created_by = isset($OrderItemData['Created_by']) ? $OrderItemData['Created_by'] : '';
                        // $CreatedDate = date('Y-m-d H:i:s',time());
                        // $Updated_by = isset($OrderItemData['Updated_by']) ? $OrderItemData['Updated_by'] : '';

                        // $OrderItemQuery = "insert into salesforce.OrderItem (External_Order_Item_Id__c,Order_Id__c,Product_Id__c,List_Price__c,Sale_Price__c,Quantity,Total_Price__c,Discount_Type__c,Discount__c,Discount_In_Rupees__c,Sub_Total__c,GST_In_Rupees__c,Amount_With_GST__c,Gst_Slab__c,Name__c,Price_Book_Entry__c,Product_Family__c,Status__c,IsDeleted,Created_By_Id__c,CreatedDate,Updated_By__c) values ('$OrderItemId','$OrderId','$ProductId','$ListPrice','$SalePrice','$Quantity','$TotalPrice','$DiscountType','$Discount','$DiscountInRupees','$SubTotal','$GSTInRupees','$AmountWithGST','$GstSlab','$Name','$PriceBookEntry','$ProductFamily','$Status','$IsDeleted','$Created_by','$CreatedDate','$Updated_by')";

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


                if(count($OrderItems))
                {

                    $Order = Order::select('*')
                    ->where('OrderId', 'like', $OrderId)
                    ->where('IsDeleted', '=', '0')
                    ->get();

                    if ($Order->count() > 0)
                    {
                        $OrderData = $Order->first();
                        $OrderItems = OrderItems::select('*')
                        ->where('OrderId', '=', $OrderId)
                        ->where('IsDeleted', '=', '0')
                        ->get();
                        $OrderData->OrderItems = array();
                        if ($OrderItems->count() > 0)
                        {
                            $OrderData->OrderItems = $OrderItems;
                        }

                        $response = [
                            'Success' => true,
                            'ResponseMessage' => "Order has been updated",
                            'ResponseCode' => "200",
                            'Order' => $OrderData,
                            'ApiUrl' => env('APP_URL'),
                            'ApiVersion' => env('APP_VERSION'),
                            'OrderQuery' => $OrderQuery,
                        ];
                        return response()->json($response);
                    }
                    else
                    {
                        // fail
                        $response = [
                            'Success' => false,
                            'validate'=>count($OrderItems) ." == ". $p,
                            'ResponseMessage' => "Invalid data",
                            'ResponseCode' => "204",
                            'ApiVersion' => env('APP_VERSION'),
                        ];
                        return response()->json($response);
                    }


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

            }
            else
            {
                // fail
                $response = [
                    'Success' => false,
                    'ResponseMessage' => "Invalid data",
                    'ResponseCode' => "202",
                    'ApiVersion' => env('APP_VERSION'),
                ];
                return response()->json($response);
            }
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "Order items has not found",
                'ResponseCode' => "202",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

    }
    //End of Order Update


    //getOrderDetails

    public function getOrderDetails(Request $request, $OrderId) {
        $data = $request->json()->all();

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');

        //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 validation
        if (!$OrderId)
        {
            $response = [
                'Success' => false,
                'ResponseMessage' => "OrderId is required!",
                'ResponseCode' => '220',
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }



        $Order = Order::select('*')
        ->where('OrderId', 'like', $OrderId)
        ->where('IsDeleted', '=', '0')
        ->get();


        foreach ($Order as $key => $OrderValue)
        {
            $CustomerId = $OrderValue->CustomerId;

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

                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }

            $OrderValue['CustomerName'] = $CustomerName;
        }
        $pdf_url = '';
        if ($Order->count() > 0)
        {
            $OrderData = $Order->first();

            $OrderId = $OrderData->OrderId;
            if($OrderId)
            {
                // $curl = curl_init();

                // $baseurl = env('APP_URL');
                // $api_url = "http://172.105.42.62/fb-order-invoice/?invoice_pdf=$baseurl/order-invoice-mobile/".$OrderId;

                // curl_setopt_array($curl, array(
                //   CURLOPT_URL => $api_url,
                //   CURLOPT_RETURNTRANSFER => true,
                //   CURLOPT_ENCODING => '',
                //   CURLOPT_MAXREDIRS => 10,
                //   CURLOPT_TIMEOUT => 0,
                //   CURLOPT_FOLLOWLOCATION => true,
                //   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                //   CURLOPT_CUSTOMREQUEST => 'GET',
                //   CURLOPT_HTTPHEADER => array(),
                // ));

                // $response = curl_exec($curl);
                // curl_close($curl);

                $curl = curl_init();
                curl_setopt_array($curl, array(
                CURLOPT_URL => 'http://172.105.42.62/fb-order-invoice/curl.php?OrderId='.$OrderId,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'GET',
                CURLOPT_HTTPHEADER => array(
                    'Cookie: private_content_version=3f7abce738dd8b52d0dcb8653bfe8e93; mage-messages=%5B%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%2C%7B%22type%22%3A%22error%22%2C%22text%22%3A%22Invalid%20Form%20Key.%20Please%20refresh%20the%20page.%22%7D%5D'
                ),
                ));
                $response = curl_exec($curl);
                curl_close($curl);

                $api_response = json_decode($response,true);
                $pdf_url = isset($api_response['pdf_url']) ? $api_response['pdf_url'] : '';
            }


            $OrderData->InvoicePDFURL = $pdf_url;
            $OrderData->OrderBookDate = date('d-m-Y', strtotime($OrderData->OrderBookDate));
            $OrderData->OrderDeliveryDate = date('d-m-Y', strtotime($OrderData->OrderDeliveryDate));


            $CreatedFormatedDate = $OrderData->OrderBookDate;
            $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
            $OrderData->CreatedFormatedDate = $CreatedFormatedDate;


            $DeliveryFormatedDate = $OrderData->OrderDeliveryDate;
            $DeliveryFormatedDate = date("j M Y",strtotime($DeliveryFormatedDate));
            $OrderData->DeliveryFormatedDate = $DeliveryFormatedDate;


            $OrderItems = OrderItems::select('*')
            ->where('OrderId', '=', $OrderId)
            ->where('IsDeleted', '=', '0')
            ->where('Quantity', '!=', '0')
            ->get();
            $OrderData->OrderItems = array();
            if ($OrderItems->count() > 0)
            {
                $OrderData->OrderItems = $OrderItems;
            }

            $OrderData->ShippingCountryName = '';
            if($OrderData->ShippingCountry)
            {
                $countries = Countries::select('country_name')
                ->where('id', $OrderData->ShippingCountry)
                ->get()->first();
                $OrderData->ShippingCountryName = $countries->country_name;
            }


            $OrderData->BillingCountryName = '';
            if($OrderData->BillingCountry)
            {
                $countries = Countries::select('country_name')
                ->where('id', $OrderData->BillingCountry)
                ->get()->first();
                $OrderData->BillingCountryName = $countries->country_name;
            }

            $OrderData->OrderStatusTitle = '';
            if($OrderData->OrderStatusId)
            {
                $OrderStatus = OrderStatus::select('*')
                ->where('OrderStatusId', '=', $OrderData->OrderStatusId)
                ->where('Status', '=', '1')
                ->where('IsDeleted', '=', '0')
                ->get();
                if ($OrderStatus->count() > 0)
                {   //email is not exist

                    $OrderStatus = $OrderStatus->first();
                    $OrderData->OrderStatusTitle = $OrderStatus->OrderStatusTitle;
                }
            }
            $OrderData->PaymentTermTitle = '';
            if($OrderData->PaymentTerms)
            {
                $PaymentTermDetails = PaymentTerm::select('*')
                ->where('PaymentTermId', '=', $OrderData->PaymentTerms)
                ->where('Status', '=', '1')
                ->where('IsDeleted', '=', '0')
                ->get();
                if ($OrderStatus->count() > 0)
                {   //email is not exist

                    $PaymentTermData = $PaymentTermDetails->first();
                    $OrderData->PaymentTermTitle = $PaymentTermData->Name;
                }
            }

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


    public function getTodayOrderList(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,
                'error_message' => "Authentication Failed",
                'error_code' => "301",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $CustomerName='';
        $today = date('Y-m-d',time());
        if($CustomerId)
        {
            $Order = Order::select('*')
            ->where('CustomerId', 'like', $CustomerId)
            ->where('IsDeleted', '=', 0)
            ->where('Created_at', 'like', '%'. $today.'%')
            ->where('Created_by',$UserId)
            ->orderBy('id', 'desc')
            ->get();


        }
        else
        {

            $Order = Customer::select('tbl_order.*')
            ->leftJoin('tbl_order', 'tbl_customer.CustomerId', '=', 'tbl_order.CustomerId')
            ->where('tbl_customer.IsDeleted', '=', '0')
            ->where('tbl_order.IsDeleted', '=', '0')
            ->where('tbl_order.Created_at', 'like', '%'. $today.'%')
            ->where('tbl_order.Created_by',$UserId)
            ->orderBy('tbl_order.id', 'desc')
            ->get();


            // $Order = Order::select('*')
            // ->where('IsDeleted', '=', 0)
            // ->where('Created_at', 'like', '%'. $today.'%')
            // ->orderBy('id', 'desc')
            // ->get();
        }




        foreach ($Order as $key => $OrderValue)
        {
            $CustomerId = $OrderValue->CustomerId;
            $OrderStatusId = $OrderValue->OrderStatusId;

            $OrderBookDate = date('d-m-Y', strtotime($OrderValue->OrderBookDate));
            $OrderDeliveryDate = date('d-m-Y', strtotime($OrderValue->OrderDeliveryDate));

            $OrderValue['OrderBookDate'] = $OrderBookDate;
            $OrderValue['OrderDeliveryDate'] = $OrderDeliveryDate;


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

                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }
            $OrderValue['CustomerName'] = $CustomerName;

            $OrderStatusTitle = '';
            $OrderStatus = OrderStatus::select('*')
            ->where('OrderStatusId', '=', $OrderStatusId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($OrderStatus->count() > 0)
            {   //email is not exist

                $OrderStatus = $OrderStatus->first();
                $OrderStatusTitle = $OrderStatus->OrderStatusTitle;
            }

            $OrderValue['OrderStatusTitle'] = $OrderStatusTitle;

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




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

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

    //Get Team Order List
    public function getTeamOrderList(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,
                'error_message' => "Authentication Failed",
                'error_code' => "301",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $TeamList = $this->APICommonController->getManagerTeamList($UserId);


            $Order = Customer::select('tbl_order.*')
            ->leftJoin('tbl_order', 'tbl_customer.CustomerId', '=', 'tbl_order.CustomerId')
            ->where('tbl_customer.IsDeleted', '=', '0')
            ->where('tbl_order.IsDeleted', '=', '0')
            ->whereIn('tbl_order.AssignTo',$TeamList)
            ->orderBy('tbl_order.id', 'desc')
            ->get();
            // $Order = Order::select('*')
            // ->where('IsDeleted', '=', 0)
            // ->orderBy('id', 'desc')
            // ->get();

        foreach ($Order as $key => $OrderValue)
        {
            $CustomerId = $OrderValue->CustomerId;
            $OrderStatusId = $OrderValue->OrderStatusId;
            $OrderBookDate = date('d-m-Y', strtotime($OrderValue->OrderBookDate));
            $OrderDeliveryDate = date('d-m-Y', strtotime($OrderValue->OrderDeliveryDate));
            $OrderValue['OrderBookDate'] = $OrderBookDate;
            $OrderValue['OrderDeliveryDate'] = $OrderDeliveryDate;
            $CustomerName = '';
            $custmer = Customer::where('CustomerId', $CustomerId)->get();
            if ($custmer->count() > 0)
            {   //email is not exist
                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }
            $OrderValue['CustomerName'] = $CustomerName;
            $OrderStatusTitle = '';
            $OrderStatus = OrderStatus::select('*')
            ->where('OrderStatusId', 'like', $OrderStatusId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($OrderStatus->count() > 0)
            {   //email is not exist
                $OrderStatus = $OrderStatus->first();
                $OrderStatusTitle = $OrderStatus->OrderStatusTitle;
            }
            $OrderValue['OrderStatusTitle'] = $OrderStatusTitle;
            $CreatedFormatedDate = $OrderValue->Created_at;
            $CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
            $OrderValue->CreatedFormatedDate = $CreatedFormatedDate;
        }
        if ($Order->count() > 0)
        {
            $response = [
                'Success' => true,
                'ResponseMessage' => "Success",
                'ResponseCode' => "200",
                'UserId' => $UserId,
                'AuthToken' => $AuthToken,
                'Orders' => $Order,
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "Order does not exist",
                'ResponseCode' => "201",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
    }


    //getOrderDetails
    public function getOrderList(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,
                'error_message' => "Authentication Failed",
                'error_code' => "301",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $CustomerName='';
        if($CustomerId)
        {
            $Order = Order::select('*')
            ->where('CustomerId', 'like', $CustomerId)
            ->where('IsDeleted', '=', 0)
            ->where('AssignTo',$UserId)
            ->orderBy('id', 'desc')
            ->get();


        }
        else
        {


            $Order = Customer::select('tbl_order.*')
            ->leftJoin('tbl_order', 'tbl_customer.CustomerId', '=', 'tbl_order.CustomerId')
            ->where('tbl_customer.IsDeleted', '=', '0')
            ->where('tbl_order.IsDeleted', '=', '0')
            ->where('tbl_order.AssignTo',$UserId)
            ->orderBy('tbl_order.id', 'desc')
            ->get();


            // $Order = Order::select('*')
            // ->where('IsDeleted', '=', 0)
            // ->orderBy('id', 'desc')
            // ->get();
        }


        foreach ($Order as $key => $OrderValue)
        {
            $CustomerId = $OrderValue->CustomerId;
            $OrderStatusId = $OrderValue->OrderStatusId;

            $OrderBookDate = date('d-m-Y', strtotime($OrderValue->OrderBookDate));
            $OrderDeliveryDate = date('d-m-Y', strtotime($OrderValue->OrderDeliveryDate));

            $OrderValue['OrderBookDate'] = $OrderBookDate;
            $OrderValue['OrderDeliveryDate'] = $OrderDeliveryDate;


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

                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }
            $OrderValue['CustomerName'] = $CustomerName;

            $OrderStatusTitle = '';
            $OrderStatus = OrderStatus::select('*')
            ->where('OrderStatusId', 'like', $OrderStatusId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($OrderStatus->count() > 0)
            {   //email is not exist

                $OrderStatus = $OrderStatus->first();
                $OrderStatusTitle = $OrderStatus->OrderStatusTitle;
            }

            $OrderValue['OrderStatusTitle'] = $OrderStatusTitle;

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




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

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


    //Gloabl Search
    public function getOrderSearchList(Request $request, $OrderNo='') {
        $data = $request->json()->all();

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');

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

        $CustomerName='';
        if($OrderNo)
        {
            $Order = Order::select('*')
            ->where('OrderNo', 'iLIKE', '%'.$OrderNo.'%')
            ->where('IsDeleted', '=', 0)
            ->where('Created_by',$UserId)
            ->orderBy('id', 'desc')
            ->get();
        }
        else
        {
            $Order = Order::select('*')
            ->where('IsDeleted', '=', 0)
            ->where('Created_by',$UserId)
            ->orderBy('id', 'desc')
            ->get();
        }
        foreach ($Order as $key => $OrderValue)
        {
            $CustomerId = $OrderValue->CustomerId;
            $OrderStatusId = $OrderValue->OrderStatusId;
            $OrderBookDate = date('d-m-Y', strtotime($OrderValue->OrderBookDate));
            $OrderDeliveryDate = date('d-m-Y', strtotime($OrderValue->OrderDeliveryDate));
            $OrderValue['OrderBookDate'] = $OrderBookDate;
            $OrderValue['OrderDeliveryDate'] = $OrderDeliveryDate;
            $CustomerName = '';
            $custmer = Customer::where('CustomerId', $CustomerId)->get();
            if ($custmer->count() > 0)
            {   //email is not exist
                $custmer = $custmer->first();
                $CustomerName = $custmer->CustomerName;
            }
            $OrderValue['CustomerName'] = $CustomerName;
            $OrderStatusTitle = '';
            $OrderStatus = OrderStatus::select('*')
            ->where('OrderStatusId', '=', $OrderStatusId)
            ->where('Status', '=', '1')
            ->where('IsDeleted', '=', 0)
            ->get();
            if ($OrderStatus->count() > 0)
            {   //email is not exist
                $OrderStatus = $OrderStatus->first();
                $OrderStatusTitle = $OrderStatus->OrderStatusTitle;
            }
            $OrderValue['OrderStatusTitle'] = $OrderStatusTitle;
        }
        if ($Order->count() > 0)
        {
            $response = [
                'Success' => true,
                'ResponseMessage' => "Success",
                'ResponseCode' => "200",
                'UserId' => $UserId,
                'AuthToken' => $AuthToken,
                'Orders' => $Order,
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "Order does not exist",
                'ResponseCode' => "201",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
    }
    //Global Search End


    //User get getUserRoleList
    public function getUserRoleList($ManagerId='') {

        //Check Memeber is exist or not
        $users = User::select('UserId', 'FirstName', 'LastName', 'Email','Mobile', 'ManagerId', 'ProfileId')
                    ->where('ManagerId',$ManagerId)
                    ->get();
        if ($users->count() > 0)
        {   //email is exist
            foreach ($users as $key => $UValue)
            {
                $UserId = $UValue['UserId'];
                $FirstName = $UValue['FirstName'];
                $LastName = $UValue['LastName'];
                $ManagerId = $UValue['ManagerId'];

                $this->TeamList[] = $UValue;
                //echo 'UserId - '.$UserId .'('.$FirstName.') '.', ManagerId - '.$ManagerId."\n";
                if($UserId){
                $this->getUserRoleList($UserId);
                }
            }
        }
    return $responseData = $this->TeamList;
        //return response()->json($responseData);
    }

    //Order Search
    public function getOrderSearch(Request $request, $SearchKey='') {
        $data = $request->json()->all();

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');


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

        $CustomerName='';
        $Order = array();


      //  $TeamList = $this->getUserRoleList($UserId);

        $TeamList = $this->APICommonController->getManagerTeamList($UserId);

        if(!$TeamList)
        {
            $TeamList = array();
        }

        array_push($TeamList, $UserId);


        if(!$SearchKey)
        {
            $response = [
                'Success' => false,
                'ResponseMessage' => "search text required.",
                'ResponseCode' => "204",
                'ApiVersion' => env('APP_VERSION'),
                'TeamList'=>$TeamList
            ];
            return response()->json($response);
        }

       // DB::enableQueryLog();
        $Order = Order::select('*')
        ->leftJoin('tbl_customer', 'tbl_customer.CustomerId', '=', 'tbl_order.CustomerId')
        ->where('tbl_order.OrderNo', 'iLIKE', '%'.$SearchKey.'%')
        //->orWhere('tbl_customer.CustomerName', 'iLIKE', '%'.$SearchKey.'%')
        ->where('tbl_order.IsDeleted', '=', '0')
        ->whereIn('tbl_order.AssignTo',$TeamList)
        ->orderBy('tbl_order.id', 'desc')
        ->get();
        //dd(DB::getQueryLog());

        //echo $UserId;
        //exit;



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

            foreach ($Order as $key => $OrderValue)
            {
                $CustomerId = $OrderValue->CustomerId;
                $OrderStatusId = $OrderValue->OrderStatusId;
                $OrderBookDate = date('d-m-Y', strtotime($OrderValue->OrderBookDate));
                $OrderDeliveryDate = date('d-m-Y', strtotime($OrderValue->OrderDeliveryDate));
                $OrderValue['OrderBookDate'] = $OrderBookDate;
                $OrderValue['OrderDeliveryDate'] = $OrderDeliveryDate;
                $CustomerName = '';
                $custmer = Customer::where('CustomerId', $CustomerId)->get();
                if ($custmer->count() > 0)
                {   //email is not exist
                    $custmer = $custmer->first();
                    $CustomerName = $custmer->CustomerName;
                }
                $OrderValue['CustomerName'] = $CustomerName;
                $OrderStatusTitle = '';
                $OrderStatus = OrderStatus::select('*')
                ->where('OrderStatusId', '=', $OrderStatusId)
                ->where('Status', '=', '1')
                ->where('IsDeleted', '=', 0)
                ->get();
                if ($OrderStatus->count() > 0)
                {   //email is not exist
                    $OrderStatus = $OrderStatus->first();
                    $OrderStatusTitle = $OrderStatus->OrderStatusTitle;
                }
                $OrderValue['OrderStatusTitle'] = $OrderStatusTitle;
            }


            $response = [
                'Success' => true,
                'ResponseMessage' => "Success",
                'ResponseCode' => "200",
                'UserId' => $UserId,
                'AuthToken' => $AuthToken,
                'Orders' => $Order,
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
                'TeamList'=>$TeamList
            ];
            return response()->json($response);
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "Order not found.",
                'ResponseCode' => "201",
                'ApiVersion' => env('APP_VERSION'),
                'TeamList'=>$TeamList
            ];
            return response()->json($response);
        }
    }
    //Order Search



    //getOrderStatusList
    public function getOrderStatusList(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,
                'error_message' => "Authentication Failed",
                'error_code' => "301",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }


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

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

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

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');
        //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);
        }

        $CustomerId = isset($data['CustomerId']) ? $data['CustomerId'] : '';
        $OrderId = isset($data['OrderId']) ? $data['OrderId'] : '';
        $OrderItemId = isset($data['OrderItemId']) ? $data['OrderItemId'] : '';

        if(!$OrderId)
        {
            $response = [
                'success' => false,
                'error_message' => "OrderId required",
                'error_code' => "302",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }




        $tmpdata = array();
        $tmpdata['IsDeleted'] = '1';
        $tmpdata['Updated_by'] = $UserId;
        $tmpdata['Updated_at'] = $CreatedDate;
        $orderItemDelete = OrderItems::where('OrderId',$OrderId)->where('OrderItemId',$OrderItemId)->update($tmpdata);
        if($orderItemDelete)
        {




            $response = [
                'Success' => true,
                'ResponseMessage' => "Order Item has been deleted",
                'ResponseCode' => "200",
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);

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




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

        $UserId = $request->header('UserId');
        $AuthToken = $request->header('AuthToken');
        //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);
        }

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

        if(!$OrderId)
        {
            $response = [
                'success' => false,
                'error_message' => "OrderId required",
                'error_code' => "302",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        if(!$CustomerId)
        {
            $response = [
                'success' => false,
                'error_message' => "CustomerId required",
                'error_code' => "303",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }


        $tmpdata = array();
        $tmpdata['IsDeleted'] = '1';
        $tmpdata['Updated_by'] = $UserId;
        $tmpdata['Updated_at'] = $CreatedDate;
        $orderDelete = Order::where('OrderId',$OrderId)->where('CustomerId',$CustomerId)->update($tmpdata);
        if($orderDelete)
        {
            $OrderQuery = "update salesforce.Order set Status = '1',Is_Deleted__c='1' where Order_Id__c='$OrderId'";

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

            $tmpdata = array();
            $tmpdata['IsDeleted'] = '1';
            $tmpdata['Updated_by'] = $UserId;
            $tmpdata['Updated_at'] = $CreatedDate;
            $orderItemDelete = OrderItems::where('OrderId',$OrderId)->where('CustomerId',$CustomerId)->update($tmpdata);


            $response = [
                'Success' => true,
                'ResponseMessage' => "Order has been Deleted",
                'ResponseCode' => "200",



                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);

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