/home/techb158/ileadtechnology.com/SSM/vendor/mint/service/src/Controllers
Edit: /home/techb158/ileadtechnology.com/SSM/vendor/mint/service/src/Controllers/AttendanceController.php (4158B)
employee = $employee;
$this->admission = $admission;
$this->academic_session = $academic_session;
$this->student_attendance = $student_attendance;
}
/**
* Used to get Biometric Attendance
* @post ("/api/biometric")
* @return Response
*/
public function read()
{
$params = request()->all();
$data = json_decode(gv($params, 'request_data'), true);
$data = gv($data, 'ApiRequestInfo');
$auth_token = gv($data, 'AuthToken');
$user_id = gv($data, 'UserId');
$date_time = gv($data, 'OperationTime');
$response = $this->process($auth_token, $user_id, $date_time);
return response()->json($response, 200);
}
/**
* Used to get Biometric Attendance V2
* @post ("/api/biometric/v2")
* @return Response
*/
public function readV2()
{
$params = request()->all();
$auth_token = gv($params, 'auth_token');
$user_id = gv($params, 'user_id');
$date_time = gv($params, 'date_time');
$response = $this->process($auth_token, $user_id, $date_time);
return response()->json($response, 200);
}
/**
* User to process attendance
* @param String $auth_token
* @param integer $user_id
* @param timestamp $date_time
* @return arr [description]
*/
private function process($auth_token, $user_id, $date_time)
{
if (! $auth_token) {
return ['status' => 'error', 'text' => 'missing auth token'];
}
if (! $user_id) {
return ['status' => 'error', 'text' => 'missing user id'];
}
if (! $date_time) {
return ['status' => 'error', 'text' => 'missing date time'];
}
$date_time = Carbon::createFromTimestampUTC($date_time);
$text = 'Request received for User Id: '.$user_id;
$text .= ' with Time: '.$date_time;
$text .= ' at '.Carbon::now()->toDateTimeString();
$text .= ($auth_token != config('config.biometric_auth_token')) ? (' Auth Token: '. $auth_token) : '';
if ($date_time->toDateTimeString() > Carbon::now()) {
$text .= ' Error: Invalid Time';
$this->logApi($text);
return ['status' => 'done'];
}
if (date('Y-m-d', strtotime($date_time->toDateTimeString())) != date('Y-m-d')) {
$text .= ' Error: Attendance Expired';
$this->logApi($text);
return ['status' => 'done'];
}
if ($auth_token != explode(',', config('config.biometric_auth_token'))) {
$text .= ' Error: Unauthorized Action';
$this->logApi($text);
return ['status' => 'done'];
}
$academic_session = $this->academic_session->where('start_date', '<=', today())->where('end_date', '>=', today())->first();
// $employee = $this->employee->where(\DB::raw('concat_ws(prefix," ",LPAD(code, ' . config('config.employee_code_digit') . ', 0))'), '=', $user_id)->first();
// if ($employee) {
// $this->updateEmployeeAttendance($employee);
// }
$admissions = $this->admission->all()->pluck('id', 'admission_number')->all();
if (isset($admissions[$user_id])) {
$status = $this->student_attendance->updateApiAttendance([
'admission_id' => $admissions[$user_id],
'academic_session_id' => $academic_session->id,
'date_time' => $date_time->toDateTimeString()
]);
$text .= $status;
$this->logApi($text);
}
return ['status' => 'done'];
}
/**
* Log Api data
* @param string $text
* @return void
*/
private function logApi($text)
{
$file = 'biometric-api-log/'.date('Y-m-d').'.log';
\Storage::append($file, $text);
}
}