studentService->getAllForSelect(status: StudentStatus::Active->value); $invoicedTermIdsByStudent = $this->service->getInvoicedTermIdsByStudent($students->pluck('id')->all()); $students->each(function ($student) use ($invoicedTermIdsByStudent) { $student->invoiced_term_ids = $invoicedTermIdsByStudent->get($student->id, []); }); return Inertia::render('admin/finances/tuition-invoices/index', [ 'invoices' => $this->service->paginated( ...$request->validatedWithDefaults(), academicTermId: $request->validated('academic_term_id'), ), 'students' => $students, 'academicTerms' => $this->academicTermService->getAllForSelect(), 'filters' => $request->only(['academic_term_id']), ]); } public function store(TuitionInvoiceRequest $request): RedirectResponse { $this->service->createMany($request->validated('student_ids'), $request->validated()); Inertia::flash('toast', ['type' => 'success', 'message' => 'Tagihan berhasil ditambahkan.']); return to_route('admin.finances.tuition-invoices.index'); } public function update(TuitionInvoiceRequest $request, TuitionInvoice $tuitionInvoice): RedirectResponse { $this->service->update($tuitionInvoice, $request->validated()); Inertia::flash('toast', ['type' => 'success', 'message' => 'Tagihan berhasil diperbarui.']); return to_route('admin.finances.tuition-invoices.index'); } public function destroy(TuitionInvoice $tuitionInvoice): RedirectResponse { $this->service->delete($tuitionInvoice); return Inertia::flash('toast', ['type' => 'success', 'message' => 'Tagihan berhasil dihapus.'])->back(); } }