first
This commit is contained in:
87
app/Http/Controllers/Kewangan/BankVerificationController.php
Normal file
87
app/Http/Controllers/Kewangan/BankVerificationController.php
Normal file
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Kewangan;
|
||||
|
||||
use App\Http\Concerns\SortsQuery;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Kewangan\UpdateBankVerificationRequest;
|
||||
use App\Models\BankVerification;
|
||||
use App\Models\Position;
|
||||
use App\Models\PusatMengundi;
|
||||
use App\Services\Finance\BankVerificationService;
|
||||
use App\Services\Finance\FinanceExportService;
|
||||
use App\Services\Finance\FinanceVerificationQuery;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\View\View;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
|
||||
class BankVerificationController extends Controller
|
||||
{
|
||||
use SortsQuery;
|
||||
|
||||
public function index(Request $request, FinanceVerificationQuery $verificationQuery): View
|
||||
{
|
||||
$filters = $this->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<string, mixed>
|
||||
*/
|
||||
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,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user