51 lines
1.6 KiB
PHP
51 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Setup;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Admin\Setup\UpsertElectionSettingsRequest;
|
|
use App\Models\Election;
|
|
use App\Services\Admin\ElectionSettingsService;
|
|
use App\Services\RegistrationPeriodService;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\View\View;
|
|
|
|
class ElectionSettingsController extends Controller
|
|
{
|
|
public function edit(Election $election, RegistrationPeriodService $registrationPeriodService): View
|
|
{
|
|
return view('admin.setup.settings.edit', [
|
|
'election' => $election->load('settings'),
|
|
'isRegistrationOpen' => $election->settings
|
|
? $registrationPeriodService->isOpen($election)
|
|
: false,
|
|
]);
|
|
}
|
|
|
|
public function store(
|
|
UpsertElectionSettingsRequest $request,
|
|
Election $election,
|
|
ElectionSettingsService $service,
|
|
): RedirectResponse {
|
|
abort_if($election->settings !== null, 409);
|
|
|
|
$service->create($election, $request->validated(), $request->user());
|
|
|
|
return redirect()->route('admin.setup.settings.edit', $election)
|
|
->with('status', 'Tetapan pilihanraya telah dicipta.');
|
|
}
|
|
|
|
public function update(
|
|
UpsertElectionSettingsRequest $request,
|
|
Election $election,
|
|
ElectionSettingsService $service,
|
|
): RedirectResponse {
|
|
abort_unless($election->settings !== null, 404);
|
|
|
|
$service->update($election, $request->validated(), $request->user());
|
|
|
|
return redirect()->route('admin.setup.settings.edit', $election)
|
|
->with('status', 'Tetapan pilihanraya telah dikemas kini.');
|
|
}
|
|
}
|