File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/APIApprovals.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\Stocks;
use App\Models\StockProducts;
use App\Models\Performance;
use App\Models\PerformanceLineItem;
use App\Models\TargetType;
use App\Models\SalesTerritory;
use App\Models\Announcement;
use App\Models\Leave;
use App\Models\LeaveType;
use App\Models\Expense;
use App\Models\Visits;
use App\Models\BeatPlan;
use App\Models\SalesArea;
use DateTime;
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 APIApprovals extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $userLib;
protected $dateFormat = 'dd-mm-yyyy';
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
//User get UserList
public function getApprovalUserList(Request $request) {
//TODO What is device_token
$data = $request->json()->all();
$tblData = array();
$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 Memeber is exist or not
$users = User::select('UserId', 'FirstName', 'LastName', 'Email','Mobile')
->where('ManagerId',$UserId)
->where('isActive', '=', '1')
->where('IsDeleted', '=', 0)
->get();
if ($users->count() > 0)
{ //email is exist
$UserId = $request->header('UserId');
$AuthToken = $request->header('AuthToken');
$response = [
'Success' => true,
'ResponseMessage' => "Success",
'ResponseCode' => "200",
'UserId' => $UserId,
'AuthToken' => $AuthToken,
'Users' => $users,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
else
{
// fail
$response = [
'Success' => false,
'ResponseMessage' => "User does not exist",
'ResponseCode' => "201",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//getLeaveList
public function getApprovalLeaveList(Request $request, $AssignTo) {
$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('Approved', '=', '0')
->where('IsDeleted', '=', 0)
->where('AssignTo', '=', $AssignTo)
->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);
}
}
public function approvallLeaveUpdate(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'];
$data['Approved'] = $data['Approved'];
$data['LeaveStatus'] = $data['Approved'];
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = $UserId;
$data['ApprovedBy'] = $UserId;
unset($data['LeaveId']);
$Leave_update = Leave::where('LeaveId',$LeaveId)->update($data);
if($Leave_update)
{
$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'),
];
return response()->json($response);
}
else
{
$response = [
'Success' => false,
'ResponseMessage' => "Invalid data",
'ResponseCode' => "204",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//Expenses
public function approvalExpenseList(Request $request, $AssignTo='')
{
$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('IsDeleted', '=', 0)
->where('Approved', '=', '0')
->where('AssignTo', '=', $AssignTo)
->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);
}
}
public function approvalExpenseUpdate(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);
}
$expenseId = $data['ExpenseId'];
// $data['expenseDate'] = $CreatedDate;
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = $UserId;
$data['Approved'] = $data['Approved'];
$data['ExpenseStatus'] = $data['Approved'];
$data['ApprovedBy'] = $UserId;
unset($data['ExpenseId']);
$expense_insert = Expense::where('ExpenseId', '=', $expenseId)->update($data);
if($expense_insert)
{
$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'),
];
return response()->json($response);
}
else
{
$response = [
'Success' => false,
'ResponseMessage' => "Invalid data",
'ResponseCode' => "204",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//Visit
public function getApprovalVisitList(Request $request, $AssignTo='') {
$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);
}
$today = date('d-m-Y',time());
$Visits = Visits::select('*')
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->where('Approved', '=', '0')
->where('AssignTo', '=', $AssignTo)
->orderBy('id', 'DESC')
->get();
if ($Visits->count() > 0)
{
if ($Visits->count() > 0)
{
foreach ($Visits as $key => $BPValue)
{
//Distributer
$CreatedFormatedDate = $BPValue->Created_at;
$CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
$BPValue->CreatedFormatedDate = $CreatedFormatedDate;
//BeatPlanId
$BeatPlanId = $BPValue->BeatPlanId;
$BeatPlanName = '';
$BeatPlan = BeatPlan::where('BeatPlanId', $BeatPlanId)->get();
if ($BeatPlan->count() > 0)
{ //email is not exist
$BeatPlanData = $BeatPlan->first();
$BeatPlanName = $BeatPlanData->BeatPlanName;
}
$BPValue['BeatPlanName'] = $BeatPlanName;
//SalesAreaName
$SalesAreaId = $BPValue->SalesAreaId;
$SalesAreaName = '';
$SalesArea = SalesArea::where('SalesAreaId', $SalesAreaId)->get();
if ($SalesArea->count() > 0)
{ //email is not exist
$SalesAreaData = $SalesArea->first();
$SalesAreaName = $SalesAreaData->Name;
}
$BPValue['SalesAreaName'] = $SalesAreaName;
//Get Customer Name
$CustomerName = '';
$CustomerId = $BPValue->CustomerId;
$Customers = Customer::where('CustomerId', $CustomerId)->get();
if ($Customers->count() > 0)
{ //email is not exist
$CustomerData = $Customers->first();
$CustomerName = $CustomerData->CustomerName;
// $CustomerNames .= $CustomerName.', ';
}
$BPValue['CustomerName'] = $CustomerName;
}
}
$response = [
'Success' => true,
'ResponseMessage' => "Success",
'ResponseCode' => "200",
'UserId' => $UserId,
'AuthToken' => $AuthToken,
'VisitList' => $Visits,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
else
{
// fail
$response = [
'Success' => false,
'ResponseMessage' => "visit does not exist",
'ResponseCode' => "201",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
public function approvalVisitUpdate(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);
}
$VisitId = $data['VisitId'];
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = $UserId;
$data['Approved'] = $data['Approved'];
$data['VisitStatus'] = $data['Approved'];
$data['ApprovedBy'] = $UserId;
unset($data['VisitId']);
if(isset($data['CheckedOut']))
{
$CheckedIn = $data['CheckedIn'];
$CheckedOut = $data['CheckedOut'];
$start_time = new DateTime($CheckedIn);
$end_time = new DateTime($CheckedOut);
$interval = $start_time->diff($end_time);
$h =($interval->format("%a") * 24) + $interval->format("%h");
$hour = $h. 'hour';
if($h > 1)
{
$hour = $h. 'hours';
}
$TotalSpentTime = $hour. $interval->format(" %i minutes ");
$data['TotalSpentTime'] = $TotalSpentTime;
}
$Visits_update = Visits::where('VisitId',$VisitId)->update($data);
if($Visits_update)
{
$Visits = Visits::select('*')
->where('VisitId',$VisitId)
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->get()->first();
$CheckedIn = isset($Visits->CheckedIn) ? $Visits->CheckedIn : '';
$CheckedOut = isset($Visits->CheckedOut) ? $Visits->CheckedOut : '';
if($CheckedIn)
{
$Visits->CheckedIn = date('d-m-Y, H:i', strtotime($Visits->CheckedIn));
}
if($CheckedOut)
{
$Visits->CheckedOut = date('d-m-Y, H:i', strtotime($Visits->CheckedOut));
}
$response = [
'Success' => true,
'ResponseMessage' => "Visits has been updated",
'ResponseCode' => "200",
'Visits' => $Visits,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
else
{
$response = [
'Success' => false,
'ResponseMessage' => "Invalid data",
'ResponseCode' => "204",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//order
public function getApprovalOrderList(Request $request, $AssignTo='') {
$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 = 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.Approved', '=', '0')
->where('tbl_order.AssignTo',$AssignTo)
->orderBy('tbl_order.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);
}
}
public function approvalOrderUpdate(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);
}
$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);
}
$data['Updated_by'] = $UserId;
$data['Updated_at'] = $CreatedDate;
$Approved = isset($data['Approved']) ? $data['Approved'] : '';
$data['Approved'] = $Approved;
if($Approved == '1') //if Approved
{
$data['OrderStatusId'] = 'HOrK56K3F33f2'; //Approved
// $data['OrderStatusTitle'] = 'Approved';
}
else if($Approved == '2')
{
//if AppReject
$data['OrderStatusId'] = 'HOpK56K3F33h2'; //Rejected
// $data['OrderStatusTitle'] = 'Rejected';
}
$data['ApprovedBy'] = $UserId;
$order_update = Order::where('OrderId',$OrderId)->update($data);
if($order_update)
{
$response = [
'Success' => true,
'ResponseMessage' => "Order has been updated",
'ResponseCode' => "200",
'ApiUrl' => env('APP_URL'),
'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
}