parseDataTableQuery($request); $status = $request->string('status')->toString(); $user = $request->user(); return Inertia::render('admin/finance/employee-advances/Index', [ 'employeeAdvances' => $this->employeeAdvanceService->paginateForIndex($tableQuery, $user, $status), 'summary' => $this->employeeAdvanceService->outstandingSummary($user), 'authEmployeeId' => $user?->employee?->id, 'canSubmit' => $user?->can(Permission::EMPLOYEE_ADVANCES_CREATE->value) && ! $user->can(Permission::EMPLOYEE_ADVANCES_VERIFY->value) && $user->employee !== null, 'filters' => $this->dataTableFilters($tableQuery, [ 'status' => $status, ]), ]); } public function store(EmployeeAdvanceRequest $request): RedirectResponse { $this->employeeAdvanceService->create($request->validated(), $request->user()); $this->flashSuccess('Kasbon berhasil diajukan.'); return redirect()->route('admin.finance.employee_advances.index'); } public function update(EmployeeAdvanceRequest $request, EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->update($employeeAdvance, $request->validated(), $request->user()); $this->flashUpdated('Kasbon'); return redirect()->route('admin.finance.employee_advances.index'); } public function destroy(EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->delete($employeeAdvance, auth()->user()); $this->flashDeleted('Kasbon'); return redirect()->route('admin.finance.employee_advances.index'); } public function approve(EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->approve($employeeAdvance, auth()->user()); $this->flashSuccess('Kasbon berhasil disetujui dan dicairkan dari kas.'); return redirect()->route('admin.finance.employee_advances.index'); } public function reject(RejectEmployeeAdvanceRequest $request, EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->reject( $employeeAdvance, $request->validated('reason'), auth()->user() ); $this->flashSuccess('Kasbon berhasil ditolak.'); return redirect()->route('admin.finance.employee_advances.index'); } public function pay(Request $request, EmployeeAdvance $employeeAdvance): RedirectResponse { $payAmount = $request->input('amount') ? (int) $request->input('amount') : null; $this->employeeAdvanceService->pay($employeeAdvance, auth()->user(), $payAmount); $this->flashSuccess('Kasbon berhasil dibayar.'); return redirect()->route('admin.finance.employee_advances.index'); } }