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/APIExpenseController.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\Expense;
use App\Models\ExpenseType;
use App\Models\ExpenseTypeTravel;




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 APIExpenseController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

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


    //User Registration
    public function createExpense(Request $request) {
		//TODO What is device_token
        $data = $request->json()->all();
        $expenseId = $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(!$data['UserId'])
        {
            $response = [
                'success' => false,
                'ResponseMessage' => "Customer Id Required",
                'ResponseCode' => "302",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $ExpenseNo = "EXP-".time().'-'.rand();
        $data['ExpenseNo'] = $ExpenseNo;
        $data['ExpenseId'] = $expenseId;
       // $data['expenseDate'] = $CreatedDate;
        $data['Updated_at'] = $CreatedDate;
        $data['Created_at'] = $CreatedDate;

        $data['AssignTo'] = $UserId;
        $data['Created_by'] = $UserId;
        $data['Updated_by'] = $UserId;
        $expense_insert = Expense::insert($data);

        if($expense_insert)
        {
            $AmountOption = isset($data['AmountOption']) ? $data['AmountOption'] : '';
            $Approved = isset($data['Approved']) ? $data['Approved'] : '';
            $Date = isset($data['Date']) ? $data['Date'] : '';
            $Description = isset($data['Description']) ? $data['Description'] : '';
            $ExpenseAmount = isset($data['ExpenseAmount']) ? $data['ExpenseAmount'] : '';
            $ExpenseTypeId = isset($data['ExpenseTypeId']) ? $data['ExpenseTypeId'] : '';
            $ExpenseTypeTravelId = isset($data['ExpenseTypeTravelId']) ? $data['ExpenseTypeTravelId'] : '';
            $ExpenseTypeTravelName = isset($data['ExpenseTypeTravelName']) ? $data['ExpenseTypeTravelName'] : '';
            $TravelKm = isset($data['TravelKm']) ? $data['TravelKm'] : '';
            $TypeOfExpense = isset($data['TypeOfExpense']) ? $data['TypeOfExpense'] : '';
            $UserId = isset($data['UserId']) ? $data['UserId'] : '';
            $IsDeleted = '0';
            $Status = '1';
            $Created_by = isset($data['Created_by']) ? $data['Created_by'] : '';
            $Updated_by = isset($data['Updated_by']) ? $data['Updated_by'] : '';

            $ExpenseQuery = "insert into salesforce.Expense__c (Expense_Id__c,Amount_Option__c,Approved_By__c,Date__c,Description__c,Expense_Amount__c,Expense_Type_Id__c,Expense_Type_Travel_Id__c,ExpenseTypeTravelName__c,TravelKm__c,Type_Of_Expense__c,UserId__c,Is_Deleted__c,Status__c,CreatedDate,Created_By__c,Updated_By__c,Name) values ('$expenseId','$AmountOption','$Approved','$Date','$Description','$ExpenseAmount','$ExpenseTypeId','$ExpenseTypeTravelId','$ExpenseTypeTravelName','$TravelKm','$TypeOfExpense','$UserId','$IsDeleted','$Status','$CreatedDate','$Created_by','$Updated_by','$ExpenseNo')";

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

            $expenseDetails = Expense::where('ExpenseId', '=', $expenseId)->get()->first();

            if ($expenseDetails->UserId) {
                $User = User::where('UserId', '=', $expenseDetails->UserId)->get()->first();
                $FirstName = $User->FirstName;
                $LastName = $User->LastName;
                $UserName = $FirstName.' '.$LastName;
                $expenseDetails->UserName = $UserName;
            }

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


    //User Registration
    public function updateexpense(Request $request) {
		//TODO What is device_token
        $data = $request->json()->all();
        $expenseId = $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(!$data['UserId'])
        {
            $response = [
                'success' => false,
                'ResponseMessage' => "Customer Id Required",
                'ResponseCode' => "302",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }

        $expenseId = $data['ExpenseId'];
       // $data['expenseDate'] = $CreatedDate;
        $data['Updated_at'] = $CreatedDate;
        $data['Updated_by'] = $UserId;
        unset($data['ExpenseId']);

        $expense_insert = Expense::where('ExpenseId', '=', $expenseId)->update($data);

        if($expense_insert)
        {
            $AmountOption = isset($data['AmountOption']) ? $data['AmountOption'] : '';
            $Approved = isset($data['Approved']) ? $data['Approved'] : '';
            $Date = isset($data['Date']) ? $data['Date'] : '';
            $Description = isset($data['Description']) ? $data['Description'] : '';
            $ExpenseAmount = isset($data['ExpenseAmount']) ? $data['ExpenseAmount'] : '';
            $ExpenseTypeId = isset($data['ExpenseTypeId']) ? $data['ExpenseTypeId'] : '';
            $ExpenseTypeTravelId = isset($data['ExpenseTypeTravelId']) ? $data['ExpenseTypeTravelId'] : '';
            $ExpenseTypeTravelName = isset($data['ExpenseTypeTravelName']) ? $data['ExpenseTypeTravelName'] : '';
            $TravelKm = isset($data['TravelKm']) ? $data['TravelKm'] : '';
            $TypeOfExpense = isset($data['TypeOfExpense']) ? $data['TypeOfExpense'] : '';
            $UserId = isset($data['UserId']) ? $data['UserId'] : '';
            $Updated_by = $UserId;
            $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
            $Status = isset($data['Status']) ? $data['Status'] : '';

            $ExpenseQuery = "update salesforce.Expense__c set Amount_Option__c='$AmountOption',Approved_By__c='$Approved',Date__c='$Date',Description__c='$Description',Expense_Amount__c='$ExpenseAmount',Expense_Type_Id__c='$ExpenseTypeId',Expense_Type_Travel_Id__c='$ExpenseTypeTravelId',ExpenseTypeTravelName__c='$ExpenseTypeTravelName',TravelKm__c='$TravelKm',Type_Of_Expense__c='$TypeOfExpense',UserId__c='$UserId',Updated_At__c='$CreatedDate',Updated_By__c='$Updated_by',Is_Deleted__c='$IsDeleted',Status__c='$Status' where Expense_Id__c='$expenseId'";

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

            $expenseDetails = Expense::where('ExpenseId', '=', $expenseId)->get()->first();

            if ($expenseDetails->UserId) {
                $User = User::where('UserId', '=', $expenseDetails->UserId)->get()->first();
                $FirstName = $User->FirstName;
                $LastName = $User->LastName;
                $UserName = $FirstName.' '.$LastName;
                $expenseDetails->UserName = $UserName;
            }

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


    //Upload expense image
    public function uploadexpensefiles(Request $request) {
		//TODO What is device_token
       // $data = $request->json()->all();


        $CreatedDate = date('Y-m-d H:i:s',time());

        $expenseId = $request->input('ExpenseId');
        $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);
        }
        $data = array();
        $data['Updated_by'] = session('UserId');;
        $data['Updated_at'] = $CreatedDate;

        ##ExpenseUploadFile1
        // $imageName = $this->userLib->useridGenrator();
        // if ($request->hasFile('ExpenseFile1'))
        // {
        //     $path = '';
        //     $file = $request->file('ExpenseFile1');
        //     $extension = $file->getClientOriginalExtension();
        //     $newFileName = $imageName . '-' . time() . '.' . $extension;

        //     Storage::putFileAs(
        //         'public/expense',
        //         $file,
        //         $newFileName
        //     );
        //     $destinationPath = 'expense';
        //     $isUploaded = $file->move($destinationPath,$newFileName);

        //     if($isUploaded)
        //     {
        //         $path = 'expense/' . $newFileName;
        //         $ThumbnailUrl = $path;
        //     }
        //     $data['ExpenseFile1'] = $ThumbnailUrl;
        // }
        $imageName1 = $this->userLib->useridGenrator();
        if ($request->hasFile('ExpenseFile1'))
        {
            $path1 = '';
            $file1 = $request->file('ExpenseFile1');
            $extension = $file1->getClientOriginalExtension();
            $newFileName1 = $imageName1 . '-' . time() . '.' . $extension;

            Storage::putFileAs(
                'public/expense/',
                $file1,
                $newFileName1
            );
            $destinationPath = 'expense/';
            $isUploaded = $file1->move($destinationPath,$newFileName1);

            $uploadedFileURL1 = '';
            if($isUploaded)
            {
                $path1 = 'expense/' . $newFileName1;
                $ThumbnailUrl = $path1;
            //File Upload Service as s3
            $sourceFileURL = env('APP_URL').'/'.$path1;
            $curl = curl_init();
            curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://172.105.42.62/s3-file-server/api-upload.php',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array('file_url' => $sourceFileURL),
            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);
            $uploadedFile = json_decode($response,true);
            $uploadedFileURL1 = isset($uploadedFile['url']) ? $uploadedFile['url'] : '';
            }
            $data['ExpenseFile1'] = $uploadedFileURL1;
        }
       ##ExpenseUploadFile2
        // $imageName2 = $this->userLib->useridGenrator();
        // if ($request->hasFile('ExpenseFile2'))
        // {
        //     $path = '';
        //     $file = $request->file('ExpenseFile2');
        //     $extension = $file->getClientOriginalExtension();
        //     $newFileName = $imageName2 . '-' . time() . '.' . $extension;

        //     Storage::putFileAs(
        //         'public/expense',
        //         $file,
        //         $newFileName
        //     );
        //     $destinationPath = 'expense';
        //     $isUploaded = $file->move($destinationPath,$newFileName);

        //     if($isUploaded)
        //     {
        //         $path = 'expense/' . $newFileName;
        //         $ThumbnailUrl = $path;
        //     }
        //     $data['ExpenseFile2'] = $ThumbnailUrl;
        // }
        $imageName2 = $this->userLib->useridGenrator();
        if ($request->hasFile('ExpenseFile2'))
        {
            $path2 = '';
            $file2 = $request->file('ExpenseFile2');
            $extension = $file2->getClientOriginalExtension();
            $newFileName2 = $imageName2 . '-' . time() . '.' . $extension;

            Storage::putFileAs(
                'public/expense',
                $file2,
                $newFileName2
            );
            $destinationPath = 'expense';
            $isUploaded = $file2->move($destinationPath,$newFileName2);

            $uploadedFileURL2='';
            if($isUploaded)
            {
                $path2 = 'expense/' . $newFileName2;
                $ThumbnailUrl = $path2;

                //File Upload Service
                $sourceFileURL = env('APP_URL').'/'.$path2;
                $curl = curl_init();
                curl_setopt_array($curl, array(
                CURLOPT_URL => 'http://172.105.42.62/s3-file-server/api-upload.php',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => array('file_url' => $sourceFileURL),
                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);
                $uploadedFile = json_decode($response,true);
                $uploadedFileURL2 = isset($uploadedFile['url']) ? $uploadedFile['url'] : '';
            }
            $data['ExpenseFile2'] = $uploadedFileURL2;
        }


        $expense_update = Expense::where('ExpenseId', $expenseId)->update($data);
        if($expense_update)
        {
            $expenseDetails = Expense::where('ExpenseId', $expenseId)->get()->first();

            if ($expenseDetails->UserId) {
                $User = User::where('UserId', '=', $expenseDetails->UserId)->get()->first();
                $FirstName = $User->FirstName;
                $LastName = $User->LastName;
                $UserName = $FirstName.' '.$LastName;
                $expenseDetails->UserName = $UserName;
            }

            $response = [
                'success' => true,
                'ResponseMessage' => "Success",
                'ResponseCode' => "200",
                'ApiVersion' => env('APP_VERSION'),
                'ApiUrl' => env('APP_URL'),
                'expense'=>$expenseDetails,

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

    //expensePaymentType
    public function expensePaymentType(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);
        }


        $Paymenttypes = PaymentType::select('*')
        ->where('Status', '=', 1)
        ->orderBy('PaymentTypeName', 'asc')
        ->get();
        if ($Paymenttypes->count() > 0)
        {
            $response = [
                'Success' => true,
                'ResponseMessage' => "Success",
                'ResponseCode' => "200",
                'UserId' => $UserId,
                'AuthToken' => $AuthToken,
                'Paymenttypes' => $Paymenttypes,
                'ApiUrl' => env('APP_URL'),
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
        else
        {
            // fail
            $response = [
                'Success' => false,
                'ResponseMessage' => "expenses does not exist",
                'ResponseCode' => "201",
                'ApiVersion' => env('APP_VERSION'),
            ];
            return response()->json($response);
        }
    }


    //getOrderDetails
    public function expenseList(Request $request, $expenseId='')
    {

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


        $expenses = Expense::select('*')
        // ->where('ExpenseId', 'like', $expenseId)
        ->where('IsDeleted', '=', '0')
        ->where('AssignTo', '=', $UserId)
        ->orderBy('id', 'desc')
        ->get();
        if ($expenses->count() > 0)
        {
            foreach ($expenses as $key => $ColletionValue)
            {
                $UserId = $ColletionValue->UserId;

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

                $ExpensCreatedFormatedDate = $ColletionValue->Date;
                $ExpensCreatedFormatedDate = date("j M Y",strtotime($ExpensCreatedFormatedDate));
                $ColletionValue->ExpensCreatedFormatedDate = $ExpensCreatedFormatedDate;

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

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

                $ColletionValue['UserName'] = $UserName;
            }

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



    //getOrderStatusList
    public function getOrderStatusList(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);
        }


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


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


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

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


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


        $expenses = Expense::select('*')
        ->where('ExpenseId', '=', $expenseId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', '0')
        ->get();


        if ($expenses->count() > 0)
        {
            $expenseData = $expenses->first();


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


            if ($expenseData->UserId) {
                $User = User::where('UserId', '=', $expenseData->UserId)->get()->first();

                $FirstName = $User->FirstName;
                $LastName = $User->LastName;
                $UserName = $FirstName.' '.$LastName;
                $expenseData->UserName = $UserName;
            }

            // if ($expenseData->PaymentType) {
            //     $pt = PaymentType::where('PaymentTypeId', '=', $expenseData->PaymentType)->get()->first();
            //     $PaymentTypeName = $pt->PaymentTypeName;
            //     $expenseData->PaymentTypeName = $PaymentTypeName;
            // }




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


//tbl_expense_type
public function getExpenseTypeList(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);
    }


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

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

    function count_digit($number) {
        return strlen($number);
    }

    function divider($number_of_digits)
    {
        $tens="1";

        if($number_of_digits>8)
            return 10000000;

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

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


        if($SearchKey)
        {

            $expenses = Expense::select('*')
            ->leftJoin('tbl_expense_type', 'tbl_expense_type.ExpenseTypeId', '=', 'tbl_expense.ExpenseTypeId')
            ->where('tbl_expense_type.ExpenseTypeName', 'iLIKE', '%'.$SearchKey.'%')
            ->where('tbl_expense.IsDeleted', '=', 0)
            ->where('tbl_expense.AssignTo', '=', $UserId)
            ->orderBy('tbl_expense.id', 'desc')
            ->get();

        }
        else
        {
            $expenses = Expense::select('*')
            // ->where('ExpenseId', 'like', $expenseId)
            ->where('IsDeleted', '=', 0)
            ->where('AssignTo', '=', $UserId)
            ->orderBy('id', 'desc')
            ->get();
        }



        if ($expenses->count() > 0)
        {
            foreach ($expenses as $key => $ColletionValue)
            {
                $UserId = $ColletionValue->UserId;

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

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

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

                $ColletionValue['UserName'] = $UserName;
            }

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

}