I am new in toggles. i want to update model status using toggles in the table and also update database at the same time.
Route
Route::prefix('attendance')->group(function () {
Route::post('search', 'AttendanceController@searchAttendance')->name('man_power.search_attendance');
Route::post('store', 'AttendanceController@storeAttendance')->name('man_power.store_attendance');
Route::get('report', 'AttendanceController@report')->name('man_power.attendance_report');
Route::post('report', 'AttendanceController@showReport')->name('man_power.attendance_report');
Route::get('edit/{id}', 'AttendanceController@edit')->name('man_power.attendance.edit');
Route::patch('edit/{id}', 'AttendanceController@update');
Route::delete('delete', 'AttendanceController@delete')->name('man_power.attendance.delete');
});
AttendanceController.php(only function)
public function showReport(Request $request) {
$this->checkPermission();
if(Auth::user()->isAdmin() || Auth::user()->isAccountant()) {
$project = Project::findOrFail($request->post('pid'));
}
else {
$project = Auth::user()->projects()
->findOrFail($request->post('pid'));
}
$attendances = $project->attendances()
->whereBetween('attendance_date', [Carbon::parse($request->post('start')), Carbon::parse($request->post('end'))])
->orderByDesc('attendance_date')
->get();
return view('admin.manpower.report.ajax-attendance')
->with([
'project' => $project,
'attendances' => $this->makeAttendanceReport($attendances),
'start' => Carbon::parse($request->post('start'))->toFormattedDateString(),
'end' => Carbon::parse($request->post('end'))->toFormattedDateString()
]);
}
protected function makeAttendanceReport(Collection $collection) {
$attendances = collect();
foreach ($collection as $item) {
$uuid = Carbon::parse($item->attendance_date)->format('Y_m_d') . '_' . $item->user->id;
if($attendances->isNotEmpty() && $existingKey = $this->uuidExists($uuid, $attendances)) {
$shift = ['id' => $item->shift->shift_id, 'name' => $item->shift->shift_name];
array_push($attendances[$existingKey]->shifts, $shift);
$attendances[$existingKey]->payable += ($item->attendance_payable_amount ? $item->attendance_payable_amount : 0);
$attendances[$existingKey]->paid += ($item->attendance_paid_amount ? $item->attendance_paid_amount : 0);
}
else {
$attendances->push( $this->makeNewCollectionItem($item) );
}
}
return $attendances;
}
public function storeAttendance(Request $request) {
$this->checkPermission();
if(Auth::user()->isAdmin() || Auth::user()->isAccountant()) {
$project = Project::findOrFail($request->post('project_id'));
}
else {
$project = Auth::user()->projects()
->findOrFail($request->post('project_id'));
}
if(!$project) {
return sendJsonResponse('error', 'Project not found or you are not authorised!');
}
$dtCheck = $this->checkDateTimeForAttendance($request->post('date'), $request->post('shift'));
if($dtCheck != 'ok') {
return sendJsonResponse('error', $dtCheck);
}
$staff = $project->users()->find($request->post('labour_id'));
if(!$staff) {
return sendJsonResponse('error', 'Staff not found!');
}
$oldAtt = Attendance::whereAttendanceProjectId($project->project_id)
->where('attendance_user_id', '=', $staff->id)
->where('attendance_date', '=', $request->post('date'))
->where('attendance_shift_id', '=', $request->post('shift'))
->first();
if($oldAtt) {
return sendJsonResponse('error', 'Attendance already taken!');
}
$attendance = new Attendance();
$attendance->attendance_date = $request->post('date');
$attendance->attendance_user_id = $request->post('labour_id');
$attendance->attendance_project_id = $project->project_id;
$attendance->attendance_shift_id = $request->post('shift');
$attendance->attendance_payable_amount = number_format($staff->salary / 2, 2);
$attendance->attendance_paid_amount = $request->post('paid');
$attendance->attendance_note = $request->post('note');
$attendance->status = true;
$attendance->save();
addActivity('attendance', $attendance->attendance_id, 'Attendance Added');
if($attendance->attendance_paid_amount > 0) {
$payment = createNewPayment([
'type' => 'debit',
'to_user' => $attendance->attendance_user_id,
'from_user' => (!Auth::user()->isAdmin() && !Auth::user()->isAccountant()) ? Auth::id() : null,
'to_bank_account' => null,
'from_bank_account' => null,
'amount' => $attendance->attendance_paid_amount,
'project' => $attendance->attendance_project_id,
'purpose' => 'salary',
'by' => 'cash',
'date' => $attendance->attendance_date,
'image' => null,
'note' => $attendance->attendance_note
]);
if(!$payment) {
return redirectBackWithNotification();
}
}
return sendJsonResponse('success', 'Attendance Added Successfully!');
}
mainly this function are working with toggle button
my ajax file is
@foreach($attendances as $index => $attendance)
<td>
<input type="checkbox" data-id="" name="status" class="js-switch" >
</td>
@endforeach
and script
let elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch')); elems.forEach(function(html) { let switchery = new Switchery(html, { size: 'small' }); }); $(document).ready(function(){ $('.js-switch').change(function () { let status = $(this).prop('checked') === true ? 1 : 0; let userId = $(this).data('attendance_id'); $.ajax({ type: "GET", dataType: "json", url: '', data: {'status': status, 'user_id': userId}, success: function (data) { toastr.options.closeButton = true; toastr.options.closeMethod = 'fadeOut'; toastr.options.closeDuration = 100; toastr.success(data.message); } }); }); });
i want to update toggle button in database so that if i change a toggle button and refresh the page then button should be the changeable. in database i add ``` $table->boolean('status')->default(0);``` .
How can i update toggle button in database in ```showReport``` function?
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire