有什么方法可以阻止以前的班次,以便用户不能选择那里的以前班次?
示例:A是用户,如果他/她去编辑页面并编辑她/他的信息,则他/她不应该在此选择先前的班次。假设有4个班次,如果A在早晨开始时选择2个班次,则他/她不能将其更改为1个班次,则该班次禁用,因为该班次是给某人的。
路线
Route::get('edit/{id}', 'AttendanceController@edit')->name('man_power.attendance.edit');
Route::patch('edit/{id}', 'AttendanceController@update');
AttendanceController.php(编辑功能)
public function edit($id) {
if(!Auth::user()->isAdmin() && !Auth::user()->isAccountant()) {
return redirectBackWithNotification('error', 'You are not authorised!');
}
$attendance = Attendance::findOrFail($id);
return view('admin.manpower.attendance-edit')
->with([
'attendance' => $attendance
]);
}
public function update(Request $request, $id) {
if(!Auth::user()->isAdmin() && !Auth::user()->isAccountant()) {
return redirectBackWithNotification('error', 'You are not authorised!');
}
$validator = Validator::make($request->all(), [
'date' => ['required'],
'shift' => ['required', 'numeric'],
'paid' => ['nullable', 'numeric'],
'note' => ['required', 'string']
]);
if($validator->fails()) {
return redirectBackWithValidationError($validator);
}
$attendance = Attendance::findOrFail($id);
$oldAtt = Attendance::whereAttendanceProjectId($attendance->attendance_project_id)
->where('attendance_user_id', '=', $attendance->attendance_user_id)
->where('attendance_date', '=', $request->post('date'))
->where('attendance_shift_id', '=', $request->post('shift'))
->where('attendance_paid_amount', '=', $request->post('paid'))
->first();
if($oldAtt) {
return redirectBackWithNotification('error', 'Attendance already taken!');
}
$attendance->attendance_date = $request->post('date');
$attendance->attendance_shift_id = $request->post('shift');
$attendance->attendance_note = $request->post('note');
if(!$attendance->save()) {
return redirectBackWithNotification();
}
if($request->has('paid') && $request->post('paid') > 0) {
if($attendance->attendance_paid_amount > 0 && $request->post('paid') != $attendance->attendance_paid_amount) {
$payment = Payment::where('payment_to_user', '=', $attendance->user->id)
->where('payment_for_project', '=', $attendance->project->project_id)
->where('payment_amount', '=', $attendance->attendance_paid_amount)
->where('payment_purpose', '=', 'salary')
->first();
if($payment) {
$payment->payment_amount = $request->post('paid');
$payment->save();
}
}
if(!$attendance->attendance_paid_amount || $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' => $request->post('paid'),
'project' => $attendance->attendance_project_id,
'purpose' => 'salary',
'by' => 'cash',
'date' => $attendance->attendance_date,
'image' => null,
'note' => $attendance->attendance_note
]);
if(!$payment) {
return redirectBackWithNotification();
}
}
$attendance->attendance_paid_amount = $request->post('paid');
$attendance->save();
}
return redirectBackWithNotification('success', 'Attendance Updated!');
}
attendance-edit.blade.php(仅限班次)
<div class="form-group row mb-4">
<label for="shift" class="col-form-label col-md-3 font-weight-bold">Shift</label>
<div class="col-md-9">
<select name="shift" id="shift" class="custom-select" required>
<option selected disabled>--- Select Shift ---</option>
@foreach($attendance->project->shifts as $shift)
<option value="{{ $shift->shift_id }}" {{ ($shift->shift_id == $attendance->attendance_shift_id) ? 'selected' : '' }}>
{{ $shift->shift_name }} ---
{{ \Carbon\Carbon::parse($shift->shift_start)->format('h:i A') }} TO
{{ \Carbon\Carbon::parse($shift->shift_end)->format('h:i A') }}
</option>
@endforeach
</select>
</div>
</div>
我想阻止该用户的上一个班次,以便用户无法选择它。
有什么方法可以阻止数组先前的ID?
阻止或禁用特定用户的先前班次的方法是什么?