$this->service->paginated( ...$request->validatedWithDefaults(), status: $request->validated('status'), ), 'students' => $this->studentService->getAllForSelect(), 'filters' => $request->only(['status']), ]); } public function mine(Request $request): Response { return Inertia::render('student/letter-requests/index', [ 'letterRequests' => $this->service->mine($this->currentStudent($request)), ]); } public function create(): Response { return Inertia::render('student/letter-requests/create'); } public function show(Request $request, LetterRequest $letterRequest): Response { $student = $this->currentStudent($request); abort_if($letterRequest->student_id !== $student->id, 403); return Inertia::render('student/letter-requests/show', [ 'letterRequest' => $this->service->withDetails($letterRequest), ]); } public function store(LetterRequestRequest $request): RedirectResponse { if ($request->routeIs('student.*')) { $student = $this->currentStudent($request); $letterRequest = $this->service->create([ 'student_id' => $student->id, 'letter_type' => $request->validated('letter_type'), 'purpose' => $request->validated('purpose'), ], null); Inertia::flash('toast', ['type' => 'success', 'message' => 'Surat permohonan berhasil diajukan.']); return to_route('student.letter-requests.show', $letterRequest); } $this->service->create($request->validated(), $request->file('result')); Inertia::flash('toast', ['type' => 'success', 'message' => 'Surat permohonan berhasil ditambahkan.']); return to_route('admin.services.letter-requests.index'); } public function update(LetterRequestRequest $request, LetterRequest $letterRequest): RedirectResponse { $this->service->update($letterRequest, $request->validated(), $request->file('result')); Inertia::flash('toast', ['type' => 'success', 'message' => 'Surat permohonan berhasil diperbarui.']); return to_route('admin.services.letter-requests.index'); } public function destroy(LetterRequest $letterRequest): RedirectResponse { $this->service->delete($letterRequest); return Inertia::flash('toast', ['type' => 'success', 'message' => 'Surat permohonan berhasil dihapus.'])->back(); } private function currentStudent(Request $request): Student { $student = $request->user()->student; abort_if(! $student, 403); return $student; } }