This commit is contained in:
Saufi
2026-06-03 08:51:22 +08:00
commit a14d43fe34
347 changed files with 38197 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Services\Admin\Management;
use App\Models\Election;
use App\Models\SystemNote;
use App\Models\User;
use App\Services\RegistrationPeriodService;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\ValidationException;
class AdminPostCloseNoteService
{
public function __construct(
private readonly RegistrationPeriodService $registrationPeriodService,
) {}
public function requireIfClosed(Election $election, ?string $note): void
{
if ($this->registrationPeriodService->isOpen($election)) {
return;
}
if (blank($note)) {
throw ValidationException::withMessages([
'note' => 'Catatan wajib diisi untuk perubahan selepas tempoh pendaftaran ditutup.',
]);
}
}
public function recordIfClosed(Election $election, Model $noteable, User $actor, ?string $note, string $type): ?SystemNote
{
if ($this->registrationPeriodService->isOpen($election) || blank($note)) {
return null;
}
return SystemNote::query()->create([
'election_id' => $election->id,
'noteable_type' => $noteable::class,
'noteable_id' => $noteable->getKey(),
'note_type' => $type,
'note' => $note,
'created_by_user_id' => $actor->id,
]);
}
}