simedkom/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php
2026-02-02 15:33:27 +07:00

56 lines
1.9 KiB
PHP

<?php
namespace App\Filament\Resources\Publication\Announcements\Pages;
use App\Enums\AnnouncementType;
use App\Filament\Actions\Cheerful\CreateAction;
use App\Filament\Resources\Publication\Announcements\AnnouncementResource;
use App\Models\Company;
use App\Models\PartnerMedia;
use App\Models\User;
use App\Notifications\BroadcastNotification;
use Filament\Resources\Pages\ManageRecords;
use Filament\Support\Enums\Width;
class ManageAnnouncements extends ManageRecords
{
protected static string $resource = AnnouncementResource::class;
protected static ?string $title = 'Pengumuman';
protected function getHeaderActions(): array
{
return [
CreateAction::make()
->label('Tambah')
->modalHeading('Tambah Pengumuman')
->modalSubmitActionLabel('Simpan')
->modalCancelActionLabel('Batal')
->extraModalFooterActions(fn (CreateAction $action): array => [
$action->makeModalSubmitAction('createAnother', arguments: ['another' => true])
->label('Simpan dan Tambah Lagi'),
])
->modalWidth(Width::FiveExtraLarge)
->after(function (array $data) {
if ($data['type'] === AnnouncementType::PUBLIC) {
return;
}
$payload = [
'title' => $data['title'],
'body' => $data['content'],
];
$userIds = Company::whereIn(
'id',
PartnerMedia::whereIn('id', $data['partnerMedia'])->pluck('company_id')
)->pluck('user_id');
User::whereIn('id', $userIds)->each(function ($user) use ($payload) {
$user->notify(new BroadcastNotification($payload));
});
}),
];
}
}