58 lines
2.3 KiB
PHP
58 lines
2.3 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\Filament\Support\CheerfulNotification;
|
|
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(fn () => CheerfulNotification::getMessage('Buat Pengumuman Baru 📢✨', 'Tambah Pengumuman'))
|
|
->modalDescription(fn () => CheerfulNotification::getMessage('Siarkan kabar terbaru ke seluruh sistem biar semua orang tetap update! 🚀😊', 'Silakan isi formulir di bawah ini untuk membuat pengumuman baru.'))
|
|
->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));
|
|
});
|
|
}),
|
|
];
|
|
}
|
|
}
|