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