51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Setup;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Admin\Setup\ImportPusatRequest;
|
|
use App\Models\Dun;
|
|
use App\Models\Election;
|
|
use App\Services\Admin\PusatImportService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\View\View;
|
|
|
|
class PusatImportController extends Controller
|
|
{
|
|
public function create(): View
|
|
{
|
|
return view('admin.setup.import.create', [
|
|
'elections' => Election::query()->orderByDesc('id')->get(),
|
|
]);
|
|
}
|
|
|
|
public function store(ImportPusatRequest $request, PusatImportService $importService): RedirectResponse
|
|
{
|
|
/** @var Election $election */
|
|
$election = Election::query()->findOrFail($request->validated('election_id'));
|
|
|
|
$dunCode = strtoupper(trim((string) $request->validated('dun_code')));
|
|
$dunName = trim((string) $request->validated('dun_name'));
|
|
|
|
$dun = Dun::query()->updateOrCreate(
|
|
['election_id' => $election->id, 'code' => $dunCode],
|
|
['name' => $dunName],
|
|
);
|
|
|
|
$result = $importService->import($election, $dun, $request->file('file'));
|
|
|
|
$message = "Import selesai: {$result['imported']} Pusat Mengundi, {$result['salurans']} Saluran dicipta untuk DUN {$dunCode} - {$dunName}.";
|
|
|
|
if (! empty($result['errors'])) {
|
|
$message .= ' '.count($result['errors']).' baris gagal.';
|
|
|
|
return redirect()->route('admin.setup.import.create')
|
|
->with('status', $message)
|
|
->with('import_errors', $result['errors']);
|
|
}
|
|
|
|
return redirect()->route('admin.setup.pusat.index')
|
|
->with('status', $message);
|
|
}
|
|
}
|