parseDataTableQuery($request); $user = auth()->user(); return Inertia::render('admin/finance/employee-advances/Index', [ 'employeeAdvances' => $this->employeeAdvanceService->paginateForIndex($tableQuery), 'summary' => $this->employeeAdvanceService->outstandingSummary(), '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), ]); } public function store(EmployeeAdvanceRequest $request): RedirectResponse { $this->employeeAdvanceService->create($request->validated()); Inertia::flash('success', '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()); Inertia::flash('success', 'Kasbon berhasil diperbarui.'); return redirect()->route('admin.finance.employee-advances.index'); } public function destroy(EmployeeAdvance $employeeAdvance): RedirectResponse { abort_unless(! auth()->user()?->can(Permission::EMPLOYEE_ADVANCES_VERIFY->value), 403); $this->employeeAdvanceService->delete($employeeAdvance); Inertia::flash('success', 'Kasbon berhasil dihapus.'); return redirect()->route('admin.finance.employee-advances.index'); } public function approve(EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->approve($employeeAdvance); Inertia::flash('success', 'Kasbon 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'), ); Inertia::flash('success', 'Kasbon berhasil ditolak.'); return redirect()->route('admin.finance.employee-advances.index'); } public function pay(EmployeeAdvance $employeeAdvance): RedirectResponse { $this->employeeAdvanceService->pay($employeeAdvance); Inertia::flash('success', 'Kasbon berhasil dilunasi.'); return redirect()->route('admin.finance.employee-advances.index'); } }