filters($request); return view('kewangan.bank.index', [ 'verifications' => $this->sortedQuery( $verificationQuery->build($filters), ['status'], 'id', 'desc' )->paginate(15)->withQueryString(), 'positions' => Position::query()->orderBy('sort_order')->orderBy('name')->get(), 'pusats' => PusatMengundi::query()->orderBy('name')->get(), 'filters' => $filters, ]); } public function show(BankVerification $bankVerification): View { return view('kewangan.bank.show', [ 'verification' => $bankVerification->load([ 'application.election', 'application.pusatMengundi', 'application.approvedPosition', 'application.requestedPosition', 'application.documents', 'application.staffAssignments.position', 'application.staffAssignments.saluranMengundi', 'verifiedBy', ]), ]); } public function update(UpdateBankVerificationRequest $request, BankVerification $bankVerification, BankVerificationService $service): RedirectResponse { $service->update($bankVerification, $request->user(), $request->validated()); return redirect()->route('kewangan.bank.show', $bankVerification) ->with('status', 'Status verifikasi bank telah dikemas kini.'); } public function export(Request $request, FinanceExportService $exportService): StreamedResponse { $exportLog = $exportService->export($request->user(), $this->filters($request)); return Storage::disk($exportLog->disk ?? 'local') ->download($exportLog->path, $exportLog->file_name); } /** * @return array */ private function filters(Request $request): array { return [ 'status' => $request->filled('status') ? $request->string('status')->toString() : null, 'pusat_mengundi_id' => $request->filled('pusat_mengundi_id') ? $request->integer('pusat_mengundi_id') : null, 'role_id' => $request->filled('role_id') ? $request->integer('role_id') : null, 'missing_bank_statement' => $request->boolean('missing_bank_statement'), 'missing_account_number' => $request->boolean('missing_account_number'), 'q' => $request->filled('q') ? $request->string('q')->toString() : null, ]; } }