有什么方法可以阻止laravel中的array []以前的ID,以便用户无法选择它?

时间:2019-11-28 09:44:35

标签: php arrays laravel laravel-query-builder

有什么方法可以阻止以前的班次,以便用户不能选择那里的以前班次?

示例: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 }} &nbsp;&nbsp; --- &nbsp;&nbsp;
                                            {{ \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?

阻止或禁用特定用户的先前班次的方法是什么?

0 个答案:

没有答案