parseDataTableQuery($request); $pageData = $this->leaveRequestService->indexPageData($tableQuery, $request->user()); return Inertia::render('admin/hr/leave-requests/Index', [ ...$pageData, 'filters' => $this->dataTableFilters($tableQuery), ]); } public function store(SubmitLeaveRequest $request): RedirectResponse { $this->leaveRequestService->create($request->validated(), $request->user()); $this->flashSuccess('Pengajuan cuti berhasil diajukan.'); return redirect()->route('admin.hr.leave_requests.index'); } public function update(SubmitLeaveRequest $request, LeaveRequest $leaveRequest): RedirectResponse { try { $leaveRequest->ensureEditable(); } catch (ValidationException) { abort(403); } $this->leaveRequestService->update($leaveRequest, $request->validated(), $request->user()); $this->flashUpdated('Pengajuan cuti'); return redirect()->route('admin.hr.leave_requests.index'); } public function destroy(LeaveRequest $leaveRequest): RedirectResponse { try { $leaveRequest->ensureEditable(); } catch (ValidationException) { abort(403); } $this->leaveRequestService->delete($leaveRequest); $this->flashDeleted('Pengajuan cuti'); return redirect()->route('admin.hr.leave_requests.index'); } public function approve(ApproveLeaveRequestRequest $request, LeaveRequest $leaveRequest): RedirectResponse { $this->leaveRequestService->approve($leaveRequest, $request->user()); $this->flashSuccess('Pengajuan cuti berhasil disetujui.'); return redirect()->route('admin.hr.leave_requests.index'); } public function reject(RejectLeaveRequestRequest $request, LeaveRequest $leaveRequest): RedirectResponse { $this->leaveRequestService->reject( $leaveRequest, $request->validated('reason'), $request->user(), ); $this->flashSuccess('Pengajuan cuti berhasil ditolak.'); return redirect()->route('admin.hr.leave_requests.index'); } }