Добавьте новую запись о посещаемости в базу данных и json верните user_id null с помощью JWT AUthentication

Я создал запись о посещаемости, но когда я тестирую на POSTMAN, user_id имеет значение null и scan_in_status также имеет значение null.

{
"success": true,
"user_id": null,
"action": "SCAN_IN",
"scan_in_location": null,
"date": "2018/11/11",
"time": "05:51:06",
"scan_in_status": null
}

Я использую Аутентификацию JWT, и когда я добавляю, следует добавить user_id, потому что я использую учетную запись, в которой существует user_id, но он является нулевым. Это мой код ниже

public function store(Request $request){
//declare variable for taking current date - time
$input = $request->all();
$user_id = request('user_id');
$scan_out_location = request('scan_out_location');
$work_hour = request('work_hour');
$work_hour_total = request('work_hour_total');
$scan_in_location = request('scan_in_location');
$scan_in_status = request('scan_in_status');
//check attendance using user_id
$res = Attendance::select('id')
->where('user_id' , '=' , $user_id)
->where('attendance_date', '=' , DB::RAW('DATE(NOW())'))
->where('user_id' , '!=' , null)
->where('scan_in_time', '!=' , null)
->where('scan_out_time', '=', null)->get()->count();

//set status 0 - Absent, 1 - On time, 2 - Late, 3 - very late, 4 - On leave
$attendance_status = Attendance::where('user_id', '=' , $user_id)
->select(DB::RAW("CASE WHEN TIME(NOW()) >= '08:30:00' AND TIME(NOW()) < '09:00:00'
THEN '2' WHEN TIME(NOW()) > '09:00:00' THEN '3' ELSE '1' END"))
->value('scan_in_status');

if($res > 0){
$res = DB::statement("UPDATE attendances SET scan_out_time = NOW(),
scan_out_location = ? ,work_hour = TIMESTAMPDIFF(MINUTE, scan_in_time, scan_out_time,lunch_break),
work_hour_total = TIMESTAMPDIFF(MINUTE, scan_in_time, scan_out_time)
WHERE user_id =  ? AND NOT scan_in_time IS NULL AND
scan_out_time IS NULL", [$user_id, $user_id, $scan_out_location, $work_hour, $work_hour_total]);

return response()->json(
array(
'success' => true,
'user_id' => $user_id,
'action' => 'SCAN_OUT',
'scan_out_location' => $scan_out_location,
'date' => date('Y/m/d'),
'time' => date('H:i:s')
)
);
}else{
$res = DB::statement("UPDATE attendances
SET scan_in_time = NOW(), scan_in_location = ?, scan_in_status = ?
WHERE attendance_date = DATE(NOW())
AND user_id = ?", [$scan_in_location, $scan_in_status, $user_id]);

return response()->json(
array(
'success' => true,
'user_id' => $user_id,
'action' => 'SCAN_IN',
'scan_in_location' => $scan_in_location,
'date' => date('Y/m/d'),
'time' => date('H:i:s'),
'scan_in_status' => $scan_in_status
)
);
}

//  $attendance = new Attendance();
$input['user_id'] = Auth::user()->user_id;
$input['attendance_date'] = Carbon::now()->format('Y/m/d');

if ($this->user->attendance()->save($input))
return response()->json([
'success' => true,
'attendance' => $attendance
]);
else
return response()->json([
'success' => false,
'message' => 'Sorry, check in attendance could not be added'
], 500);

}

Если я изменю ввод на «Новое посещение» или что-то еще, когда я использую токен своей учетной записи для регистрации, он распознается со следующим user_id и добавляется в базу данных. Спасибо

0

Решение

Я создал запись о посещаемости, но когда я тестирую на POSTMAN, user_id имеет значение null и scan_in_status также имеет значение null.

{
"success": true,
"user_id": null,
"action": "SCAN_IN",
"scan_in_location": null,
"date": "2018/11/11",
"time": "05:51:06",
"scan_in_status": null
}

Я использую Аутентификацию JWT, и когда я добавляю, следует добавить user_id, потому что я использую учетную запись, в которой существует user_id, но он является нулевым. Это мой код ниже

public function store(Request $request){
//declare variable for taking current date - time
$input = $request->all();
$user_id = request('user_id');
$scan_out_location = request('scan_out_location');
$work_hour = request('work_hour');
$work_hour_total = request('work_hour_total');
$scan_in_location = request('scan_in_location');
$scan_in_status = request('scan_in_status');
//check attendance using user_id
$res = Attendance::select('id')
->where('user_id' , '=' , $user_id)
->where('attendance_date', '=' , DB::RAW('DATE(NOW())'))
->where('user_id' , '!=' , null)
->where('scan_in_time', '!=' , null)
->where('scan_out_time', '=', null)->get()->count();

//set status 0 - Absent, 1 - On time, 2 - Late, 3 - very late, 4 - On leave
$attendance_status = Attendance::where('user_id', '=' , $user_id)
->select(DB::RAW("CASE WHEN TIME(NOW()) >= '08:30:00' AND TIME(NOW()) < '09:00:00'
THEN '2' WHEN TIME(NOW()) > '09:00:00' THEN '3' ELSE '1' END"))
->value('scan_in_status');

if($res > 0){
$res = DB::statement("UPDATE attendances SET scan_out_time = NOW(),
scan_out_location = ? ,work_hour = TIMESTAMPDIFF(MINUTE, scan_in_time, scan_out_time,lunch_break),
work_hour_total = TIMESTAMPDIFF(MINUTE, scan_in_time, scan_out_time)
WHERE user_id =  ? AND NOT scan_in_time IS NULL AND
scan_out_time IS NULL", [$user_id, $user_id, $scan_out_location, $work_hour, $work_hour_total]);

return response()->json(
array(
'success' => true,
'user_id' => $user_id,
'action' => 'SCAN_OUT',
'scan_out_location' => $scan_out_location,
'date' => date('Y/m/d'),
'time' => date('H:i:s')
)
);
}else{
$res = DB::statement("UPDATE attendances
SET scan_in_time = NOW(), scan_in_location = ?, scan_in_status = ?
WHERE attendance_date = DATE(NOW())
AND user_id = ?", [$scan_in_location, $scan_in_status, $user_id]);

return response()->json(
array(
'success' => true,
'user_id' => $user_id,
'action' => 'SCAN_IN',
'scan_in_location' => $scan_in_location,
'date' => date('Y/m/d'),
'time' => date('H:i:s'),
'scan_in_status' => $scan_in_status
)
);
}

//  $attendance = new Attendance();
$input['user_id'] = Auth::user()->user_id;
$input['attendance_date'] = Carbon::now()->format('Y/m/d');

if ($this->user->attendance()->save($input))
return response()->json([
'success' => true,
'attendance' => $attendance
]);
else
return response()->json([
'success' => false,
'message' => 'Sorry, check in attendance could not be added'
], 500);

}

Если я изменю ввод на «Новое посещение» или что-то еще, когда я использую токен своей учетной записи для регистрации, он распознается со следующим user_id и добавляется в базу данных. Спасибо

самый старый «data-shortcut =» O

Другие решения

голосует «data-shortcut =» V

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector