File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/APIAttendanceController.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\Attendance;
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 APIAttendanceController extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
protected $userLib;
protected $dateFormat = 'dd-mm-yyyy';
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
//createAttendance
public function createAttendance(Request $request) {
//TODO What is device_token
$data = $request->json()->all();
$AttendanceId = $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);
}
$data['AttendanceId'] = $AttendanceId;
$data['Status'] = '1';
$data['IsDeleted'] = '0';
// $data['AttendanceDate'] = $CreatedDate;
$data['Updated_at'] = $CreatedDate;
$data['Created_at'] = $CreatedDate;
$data['Created_by'] = $UserId;
$data['Updated_by'] = $UserId;
$data['CreatedDate'] = $CreatedDate;
$data['ModifiedDate'] = $CreatedDate;
$Attendance_insert = Attendance::insert($data);
$CustomerIds = '';
if($Attendance_insert)
{
$AttendanceDate = isset($data['AttendanceDateTime']) ? $data['AttendanceDateTime'] : '';
// $CheckInDateTime = isset($data['CheckInDateTime']) ? $data['CheckInDateTime'] : '';
$CheckIn = date('Y-m-d H:i:s',time());
$Location = isset($data['Location']) ? $data['Location'] : '';
$Latitude = '';
$Longitude = '';
if($Location){
$values = explode(',', $Location);
$Latitude = isset($values[0]) ? $values[0] : '';
$Longitude = isset($values[1]) ? $values[1] : '';
}
$OwnerId = isset($data['OwnerId']) ? $data['OwnerId'] : '';
$Status = '1';
$IsDeleted = '0';
$Created_by = $UserId;
$CreatedDate = date('Y-m-d H:i:s',time());
$AttendanceQuery = "insert into salesforce.Attendance__c (AttendanceId__c,Attendance_Date__c,Check_In__c,Location__Latitude__s,Location__Longitude__s,OwnerId__c,Status__c,IsDeleted__c,Created_by__c,Created_at__c) values ('$AttendanceId','$AttendanceDate','$CheckIn','$Latitude','$Longitude','$OwnerId','$Status','$IsDeleted','$Created_by','$CreatedDate')";
DB::connection('pgsql')->insert($AttendanceQuery);
$Attendance = Attendance::select('*')
->where('AttendanceId',$AttendanceId)
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->get()->first();
$response = [
'Success' => true,
'ResponseMessage' => "Attendance has been created",
'ResponseCode' => "200",
'Attendance' => $Attendance,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
'AttendanceQuery' => $AttendanceQuery
];
return response()->json($response);
}
else
{
$response = [
'Success' => false,
'ResponseMessage' => "Invalid data",
'ResponseCode' => "204",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//updateAttendance
public function updateAttendance(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);
}
$AttendanceId = $data['AttendanceId'];
$data['Updated_at'] = $CreatedDate;
$data['Updated_by'] = $UserId;
unset($data['AttendanceId']);
$Attendance_update = Attendance::where('AttendanceId',$AttendanceId)->update($data);
if($Attendance_update)
{
$AttendanceDate = isset($data['AttendanceDateTime']) ? $data['AttendanceDateTime'] : '';
$CheckOutDateTime = isset($data['CheckOutDateTime']) ? $data['CheckOutDateTime'] : '';
$CheckOut = date('Y-m-d H:i:s',time());
$CheckOutDate = isset($data['CheckOutDate']) ? $data['CheckOutDate'] : '';
$Location = isset($data['Location']) ? $data['Location'] : '';
$Latitude = '';
$Longitude = '';
if($Location){
$values = explode(',', $Location);
$Latitude = isset($values[0]) ? $values[0] : '';
$Longitude = isset($values[1]) ? $values[1] : '';
}
$OwnerId = isset($data['OwnerId']) ? $data['OwnerId'] : '';
$Updated_by = $UserId;
$UpdatedDate = date('Y-m-d H:i:s',time());
$updateQury = '';
if($Latitude)
{
$updateQury .= ", Location__Latitude__s='$Latitude'";
}
if($Longitude)
{
$updateQury .= ", Location__Longitude__s='$Longitude'";
}
$AttendanceQuery = "update salesforce.Attendance__c set Attendance_Date__c='$AttendanceDate',Check_Out__c='$CheckOut' $updateQury ,OwnerId__c='$OwnerId',Updated_by__c='$Updated_by',Updated_at__c='$UpdatedDate' where AttendanceId__c='$AttendanceId'";
DB::connection('pgsql')->update($AttendanceQuery);
$Attendance = Attendance::select('*')
->where('AttendanceId',$AttendanceId)
->get()->first();
$response = [
'Success' => true,
'ResponseMessage' => "Attendance has been updated",
'ResponseCode' => "200",
'Attendance' => $Attendance,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
'AttendanceQuery' => $AttendanceQuery
];
return response()->json($response);
}
else
{
$response = [
'Success' => false,
'ResponseMessage' => "Invalid data",
'ResponseCode' => "204",
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
}
//getAttendanceDetails
public function getAttendanceDetails(Request $request, $AttendanceId='') {
$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);
}
$Attendance = Attendance::select('*')
->where('AttendanceId',$AttendanceId)
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->get();
if ($Attendance->count() > 0)
{
$BPValue = $Attendance->first();
$CreatedFormatedDate = $BPValue->Created_at;
$CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
$BPValue->CreatedFormatedDate = $CreatedFormatedDate;
// $AttendanceTypeId = $BPValue->AttendanceTypeId;
// $AttendanceType = AttendanceType::where('AttendanceTypeId', $AttendanceTypeId)->get();
// $AttendanceTypeName = '';
// $AttendanceTypeSortName = '';
// if ($AttendanceType->count() > 0)
// { //email is not exist
// $AttendanceTypeData = $AttendanceType->first();
// $AttendanceTypeName = $AttendanceTypeData->Name;
// $AttendanceTypeSortName = $AttendanceTypeData->SortName;
// }
// $BPValue->AttendanceTypeName = $AttendanceTypeName;
// $BPValue->AttendanceTypeSortName = $AttendanceTypeSortName;
$response = [
'Success' => true,
'ResponseMessage' => "Success",
'ResponseCode' => "200",
'UserId' => $UserId,
'AuthToken' => $AuthToken,
'AttendanceDetails' => $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);
}
}
//getAttendanceList
public function getAttendanceList(Request $request, $searchquery='') {
$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($searchquery)
{
$Attendance = Attendance::select('*')
->where('OwnerId', $searchquery)
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->orderBy('id', 'DESC')
->get();
}
else
{
$Attendance = Attendance::select('*')
->where('Status', '=', '1')
->where('IsDeleted', '=', 0)
->orderBy('id', 'DESC')
->get();
}
if ($Attendance->count() > 0)
{
foreach ($Attendance as $key => $LValue)
{
//Distributer
$CreatedFormatedDate = $LValue->Created_at;
$CreatedFormatedDate = date("j M Y",strtotime($CreatedFormatedDate));
$LValue->CreatedFormatedDate = $CreatedFormatedDate;
// $AttendanceTypeId = $LValue->AttendanceTypeId;
// $AttendanceType = AttendanceType::where('AttendanceTypeId', $AttendanceTypeId)->get();
// $AttendanceTypeName = '';
// $AttendanceTypeSortName = '';
// if ($AttendanceType->count() > 0)
// { //email is not exist
// $AttendanceTypeData = $AttendanceType->first();
// $AttendanceTypeName = $AttendanceTypeData->Name;
// $AttendanceTypeSortName = $AttendanceTypeData->SortName;
// }
// $LValue['AttendanceTypeName'] = $AttendanceTypeName;
// $LValue['AttendanceTypeSortName'] = $AttendanceTypeSortName;
}
$response = [
'Success' => true,
'ResponseMessage' => "Success",
'ResponseCode' => "200",
'UserId' => $UserId,
'AuthToken' => $AuthToken,
'AttendanceList' => $Attendance,
'ApiUrl' => env('APP_URL'),
'ApiVersion' => env('APP_VERSION'),
];
return response()->json($response);
}
else
{
// fail
$response = [
'Success' => false,
'ResponseMessage' => "Beat attendance 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;
}
}