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/APILeaveController.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\Leave;
use App\Models\LeaveType;

use App\Models\Expense;
use App\Models\ExpenseType;
use App\Models\ExpenseTypeTravel;
use App\Models\SalesArea;
use App\Models\SalesTerritory;


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


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

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

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

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

    // $Leave = Leave::select('*')
    //     ->where('LeaveName',$LeaveName)
    //     ->where('Created_by',$UserId)
    //     ->where('Status', '=', '1')
    //     ->where('IsDeleted', '=', 0)
    //     ->get();
    // if ($Leave->count() > 0)
    // {
    //     $response = [
    //         'Success' => false,
    //         'ResponseMessage' => "Leave title already exist.",
    //         'ResponseCode' => "202",
    //         'ApiVersion' => env('APP_VERSION'),
    //     ];
    //     return response()->json($response);
    // }

    $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
    $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
    // $DuplicateLeave = Leave::select('*')
    //     ->where('StartDate',$StartDate)
    //     ->where('EndDate',$EndDate)
    //     ->where('Created_by',$UserId)
    //     ->where('Status', '=', '1')
    //     ->where('IsDeleted', '=', 0)
    //     ->get();
        $LeaveStartDate = date('Y-m-d', strtotime($StartDate));
        $LeaveEndDate = date('Y-m-d', strtotime($EndDate));

        $OnStartDuplicateLeave = Leave::select('tbl_leave.*')
        ->where('StartDate', '<=', $LeaveStartDate)
        ->where('EndDate', '>=', $LeaveStartDate)
        ->where('UserName', $UserId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get();
        $OnEndDuplicateLeave = Leave::select('tbl_leave.*')
        ->where('StartDate', '<=', $LeaveEndDate)
        ->where('EndDate', '>=', $LeaveEndDate)
        ->where('UserName', $UserId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get();

    if ($OnStartDuplicateLeave ->count() > 0 OR $OnEndDuplicateLeave ->count() > 0)
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "A leave with the same date already exists!",
            'ResponseCode' => "203",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }

    $data['LeaveId'] = $LeaveId;
    $ApplicationNo = "LEAVE-" . time() . '-' . rand();
    $data['ApplicationNo'] = $ApplicationNo;
    $data['Status'] = '1';
    $data['IsDeleted'] = '0';
    $data['LeaveStatus'] = '0';
    $data['Approved'] = '0';
   // $data['LeaveDate'] = $CreatedDate;
    $data['Updated_at'] = $CreatedDate;
    $data['Created_at'] = $CreatedDate;
    $data['LastActivityDate'] = $CreatedDate;
    $data['LastModifiedDate'] = $CreatedDate;
    $data['ModifiedDate'] = $CreatedDate;
    $data['CreatedDate'] = $CreatedDate;
    $data['Created_by'] = $UserId;
    $data['Updated_by'] = $UserId;
    $data['UserName'] = $UserId;
    $data['AssignTo'] = $UserId;
    $data['StartDate'] = $LeaveStartDate;
    $data['EndDate'] = $LeaveEndDate;

    $Leave_insert = Leave::insert($data);
    $CustomerIds = '';
    if($Leave_insert)
    {
        $LeaveName = isset($data['LeaveName']) ? $data['LeaveName'] : '';
        $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
        $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
        $TotalLeave = isset($data['TotalLeave']) ? $data['TotalLeave'] : '';
        $Description = isset($data['Description']) ? $data['Description'] : '';
        $LeaveTypeId = isset($data['LeaveTypeId']) ? $data['LeaveTypeId'] : '';
        $Approved = isset($data['Approved']) ? $data['Approved'] : '';
        $LeaveStatus = '0';
        $Status = '1';
        $IsDeleted = '0';
        $Created_by = $UserId;
        $CreatedDate = date('Y-m-d H:i:s',time());

        $LeaveQuery = "insert into salesforce.Leave__c (Name,LeaveId__c,LeaveName__c,StartDate__c,EndDate__c,TotalLeave__c,Description__c,LeaveTypeId__c,Approved__c,Status__c,LeaveStatus__c,IsDeleted__c,Created_by__c,Created_at__c,Fb_User_Id__c) values ('$ApplicationNo','$LeaveId','$LeaveName','$StartDate','$EndDate','$TotalLeave','$Description','$LeaveTypeId','$Approved','$Status','$LeaveStatus','$IsDeleted','$Created_by','$CreatedDate','$UserId')";

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

        $Leave = Leave::select('*')
        ->where('LeaveId',$LeaveId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get()->first();
        $response = [
            'Success' => true,
            'ResponseMessage' => "Leave has been created",
            'ResponseCode' => "201",
            'Leave' => $Leave,
            'ApiUrl' => env('APP_URL'),
            'ApiVersion' => env('APP_VERSION'),
            'LeaveQuery' => $LeaveQuery
        ];
        return response()->json($response);
    }
    else
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "Invalid data",
            'ResponseCode' => "204",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
}


//updateLeave

public function updateLeave(Request $request) {
    //TODO What is device_token
    $data = $request->json()->all();
    $CreatedDate = date('Y-m-d H:i:s',time());
    $UserId = $request->header('UserId');
    $AuthToken = $request->header('AuthToken');
    //check auth token
    if($this->userLib->tokenChecker($request) == FALSE)
    {
        $response = [
            'success' => false,
            'ResponseMessage' => "Authentication Failed",
            'ResponseCode' => "301",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    $LeaveId = $data['LeaveId'];
    $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
    $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
    $LeaveStartDate = date('Y-m-d', strtotime($StartDate));
    $LeaveEndDate = date('Y-m-d', strtotime($EndDate));

    // $DuplicateLeave = Leave::select('*')
    //     ->where('StartDate', '<=', $LeaveStartDate)
    //     ->where('EndDate', '>=', $LeaveStartDate)
    //     ->where('LeaveId', '!=', $LeaveId)
    //     ->where('UserName',$UserId)
    //     ->where('Status', '=', '1')
    //     ->where('IsDeleted', '=', 0)
    //     ->get();
        $OnStartDuplicateLeave = Leave::select('tbl_leave.*')
        ->where('StartDate', '<=', $LeaveStartDate)
        ->where('EndDate', '>=', $LeaveStartDate)
        ->where('LeaveId', '!=', $LeaveId)
        ->where('UserName', $UserId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get();
        $OnEndDuplicateLeave = Leave::select('tbl_leave.*')
        ->where('StartDate', '<=', $LeaveEndDate)
        ->where('EndDate', '>=', $LeaveEndDate)
        ->where('LeaveId', '!=', $LeaveId)
        ->where('UserName', $UserId)
        ->where('Status', '=', '1')
        ->where('IsDeleted', '=', 0)
        ->get();

    if ($OnStartDuplicateLeave ->count() > 0 OR $OnEndDuplicateLeave ->count() > 0)
    {
        $response = [
            'Success' => false,
            'ResponseMessage' => "A leave with the same date already exists!",
            'ResponseCode' => "203",
            'ApiVersion' => env('APP_VERSION'),
        ];
        return response()->json($response);
    }
    // $LeaveId = $data['LeaveId'];
    $data['StartDate'] = $LeaveStartDate;
    $data['EndDate'] = $LeaveEndDate;
    $data['Updated_at'] = $CreatedDate;
    $data['Updated_by'] = $UserId;
    unset($data['LeaveId']);
    $Leave_update = Leave::where('LeaveId',$LeaveId)->update($data);
    if($Leave_update)
    {
        $LeaveName = isset($data['LeaveName']) ? $data['LeaveName'] : '';
        $StartDate = isset($data['StartDate']) ? $data['StartDate'] : '';
        $EndDate = isset($data['EndDate']) ? $data['EndDate'] : '';
        $TotalLeave = isset($data['TotalLeave']) ? $data['TotalLeave'] : '';
        $Description = isset($data['Description']) ? $data['Description'] : '';
        $LeaveTypeId = isset($data['LeaveTypeId']) ? $data['LeaveTypeId'] : '';
        // $Approved = isset($data['Approved']) ? $data['Approved'] : '';
        $Status = isset($data['Status']) ? $data['Status'] : '';
        $IsDeleted = isset($data['IsDeleted']) ? $data['IsDeleted'] : '';
        $Updated_by = $UserId;
        $UpdatedDate = date('Y-m-d H:i:s',time());

        $LeaveQuery = "update salesforce.Leave__c set LeaveName__c='$LeaveName',StartDate__c='$StartDate',EndDate__c='$EndDate',TotalLeave__c='$TotalLeave',Description__c='$Description',LeaveTypeId__c='$LeaveTypeId',Status__c='$Status',IsDeleted__c='$IsDeleted',Updated_by__c='$Updated_by',Updated_at__c='$UpdatedDate' where LeaveId__c='$LeaveId'";

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

        $Leave = Leave::select('*')
        ->where('LeaveId',$LeaveId)
        ->get()->first();


        $LeaveTypeId = $Leave->LeaveTypeId;
        $LeaveType = LeaveType::where('LeaveTypeId', $LeaveTypeId)->get();
        $LeaveTypeName = '';
        $LeaveTypeSortName = '';
        if ($LeaveType->count() > 0)
        {   //email is not exist

            $LeaveTypeData = $LeaveType->first();
            $LeaveTypeName = $LeaveTypeData->Name;
            $LeaveTypeSortName = $LeaveTypeData->SortName;
        }
        $Leave->LeaveTypeName = $LeaveTypeName;
        $Leave->LeaveTypeSortName = $LeaveTypeSortName;


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



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

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

    if ($Leave->count() > 0)
    {
        $BPValue = $Leave->first();
        $LeaveTypeId = $BPValue->LeaveTypeId;
        $LeaveType = LeaveType::where('LeaveTypeId', $LeaveTypeId)->get();
        $LeaveTypeName = '';
        $LeaveTypeSortName = '';
        if ($LeaveType->count() > 0)
        {   //email is not exist

            $LeaveTypeData = $LeaveType->first();
            $LeaveTypeName = $LeaveTypeData->Name;
            $LeaveTypeSortName = $LeaveTypeData->SortName;
        }
        $BPValue->LeaveTypeName = $LeaveTypeName;
        $BPValue->LeaveTypeSortName = $LeaveTypeSortName;

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


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


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


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

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

    $Leave = Leave::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->where('AssignTo', '=', $UserId)
    ->orderBy('id', 'DESC')
    ->get();



    if ($Leave->count() > 0)
    {
        foreach ($Leave as $key => $LValue)
        {
            //Distributer

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

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

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


            $LeaveTypeId = $LValue->LeaveTypeId;
            $LeaveType = LeaveType::where('LeaveTypeId', $LeaveTypeId)->get();
            $LeaveTypeName = '';
            $LeaveTypeSortName = '';
            if ($LeaveType->count() > 0)
            {   //email is not exist

                $LeaveTypeData = $LeaveType->first();
                $LeaveTypeName = $LeaveTypeData->Name;
                $LeaveTypeSortName = $LeaveTypeData->SortName;
            }
            $LValue['LeaveTypeName'] = $LeaveTypeName;
            $LValue['LeaveTypeSortName'] = $LeaveTypeSortName;
        }


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




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

    $Leave = LeaveType::select('*')
    ->where('Status', '=', '1')
    ->where('IsDeleted', '=', 0)
    ->orderBy('id', 'DESC')
    ->get();



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



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


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

}