diff --git a/app/Filament/Actions/Cheerful/CreateAction.php b/app/Filament/Actions/Cheerful/CreateAction.php new file mode 100644 index 0000000..73f3cb8 --- /dev/null +++ b/app/Filament/Actions/Cheerful/CreateAction.php @@ -0,0 +1,18 @@ +successNotification( + CheerfulNotification::create() + ); + } +} diff --git a/app/Filament/Actions/Cheerful/DeleteAction.php b/app/Filament/Actions/Cheerful/DeleteAction.php new file mode 100644 index 0000000..18cd7fe --- /dev/null +++ b/app/Filament/Actions/Cheerful/DeleteAction.php @@ -0,0 +1,18 @@ +successNotification( + CheerfulNotification::delete() + ); + } +} diff --git a/app/Filament/Actions/Cheerful/EditAction.php b/app/Filament/Actions/Cheerful/EditAction.php new file mode 100644 index 0000000..1672243 --- /dev/null +++ b/app/Filament/Actions/Cheerful/EditAction.php @@ -0,0 +1,18 @@ +successNotification( + CheerfulNotification::update() + ); + } +} diff --git a/app/Filament/Actions/Cheerful/ForceDeleteAction.php b/app/Filament/Actions/Cheerful/ForceDeleteAction.php new file mode 100644 index 0000000..6690c69 --- /dev/null +++ b/app/Filament/Actions/Cheerful/ForceDeleteAction.php @@ -0,0 +1,18 @@ +successNotification( + CheerfulNotification::forceDelete() + ); + } +} diff --git a/app/Filament/Actions/Cheerful/RestoreAction.php b/app/Filament/Actions/Cheerful/RestoreAction.php new file mode 100644 index 0000000..de03fc9 --- /dev/null +++ b/app/Filament/Actions/Cheerful/RestoreAction.php @@ -0,0 +1,18 @@ +successNotification( + CheerfulNotification::restore() + ); + } +} diff --git a/app/Filament/Actions/DefaultBulkActions.php b/app/Filament/Actions/DefaultBulkActions.php index 2f60789..eda71ec 100644 --- a/app/Filament/Actions/DefaultBulkActions.php +++ b/app/Filament/Actions/DefaultBulkActions.php @@ -2,6 +2,7 @@ namespace App\Filament\Actions; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\DeleteBulkAction; use Filament\Actions\ForceDeleteBulkAction; use Filament\Actions\RestoreBulkAction; @@ -12,13 +13,22 @@ public static function make(string $entity): array { return [ DeleteBulkAction::make() - ->modalHeading("Hapus {$entity} yang dipilih"), + ->modalHeading("Hapus {$entity} yang dipilih") + ->successNotification( + CheerfulNotification::bulkDelete() + ), ForceDeleteBulkAction::make() - ->modalHeading("Hapus {$entity} yang dipilih"), + ->modalHeading("Hapus {$entity} yang dipilih") + ->successNotification( + CheerfulNotification::bulkForceDelete() + ), RestoreBulkAction::make() - ->modalHeading("Pulihkan {$entity} yang dipilih"), + ->modalHeading("Pulihkan {$entity} yang dipilih") + ->successNotification( + CheerfulNotification::bulkRestore() + ), ]; } } diff --git a/app/Filament/Resources/Manage/Contacts/ContactResource.php b/app/Filament/Resources/Manage/Contacts/ContactResource.php index 45be233..086760e 100644 --- a/app/Filament/Resources/Manage/Contacts/ContactResource.php +++ b/app/Filament/Resources/Manage/Contacts/ContactResource.php @@ -4,6 +4,7 @@ use App\Filament\Actions\DefaultBulkActions; use App\Filament\Resources\Manage\Contacts\Pages\ManageContacts; +use App\Filament\Support\CheerfulNotification; use App\Mail\ContactReplyMail; use App\Models\Contact; use BackedEnum; @@ -13,7 +14,6 @@ use Filament\Actions\ViewAction; use Filament\Forms\Components\Textarea; use Filament\Infolists\Components\TextEntry; -use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Section; @@ -22,6 +22,7 @@ use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Mail; use UnitEnum; @@ -169,13 +170,13 @@ public static function table(Table $table): Table $record->update([ 'reply_message' => $data['reply_message'], 'replied_at' => now(), - 'replied_by' => auth()->id(), + 'replied_by' => Auth::id(), ]); - Notification::make() - ->title('Balasan terkirim') - ->success() - ->send(); + CheerfulNotification::success( + 'Balasan Terkirim! ๐Ÿš€โœ‰๏ธ', + 'Pesan balasan Anda sudah meluncur ke email pengirim. Semoga membantu mereka ya! ๐Ÿ˜Š' + )->send(); }) ->visible(fn (Contact $record): bool => $record->replied_at === null), diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php index c37c138..568c311 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/AcceptAction.php @@ -4,13 +4,14 @@ use App\Enums\ApprovalStatus; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use App\Models\User; use App\Notifications\BroadcastNotification; use Filament\Actions\Action; -use Filament\Notifications\Notification; use Filament\Support\Icons\Heroicon; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Facades\Auth; class AcceptAction extends Action { @@ -25,7 +26,7 @@ protected function setUp(): void $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function (Builder $query): void { $query->whereHas('company', function (Builder $subQuery): void { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); @@ -33,11 +34,10 @@ protected function setUp(): void if ($cooperationMedia) { $cooperationMedia->update(['status' => ApprovalStatus::ACCEPTED]); - Notification::make() - ->title('Berhasil Diterima! โœ…โœจ') - ->body('Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! ๐Ÿ’ช') - ->success() - ->send(); + CheerfulNotification::success( + 'Berhasil Diterima! โœ…โœจ', + 'Mantap! Anda telah menerima penawaran kerja sama ini. Silakan lanjut ke tahap pengajuan proposal ya! ๐Ÿ’ช' + )->send(); // Notify Admins User::superAdmin() @@ -56,7 +56,8 @@ protected function setUp(): void } }) ->visible(function (Cooperation $record): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); if (! $user || ! $user->hasRole('Perusahaan')) { return false; @@ -65,7 +66,7 @@ protected function setUp(): void $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function (Builder $query): void { $query->whereHas('company', function (Builder $subQuery): void { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php index b6ecfe0..86c3064 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CreateTaskAssignmentAction.php @@ -5,15 +5,16 @@ use App\Enums\ApprovalStatus; use App\Enums\CooperationStatus; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use App\Notifications\BroadcastNotification; use Filament\Actions\Action; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Support\Enums\Width; use Filament\Support\Icons\Heroicon; +use Illuminate\Support\Facades\Auth; class CreateTaskAssignmentAction extends Action { @@ -94,16 +95,16 @@ protected function setUp(): void } } - Notification::make() - ->title('Penugasan Berhasil Dibuat! ๐Ÿš€โœจ') - ->body('Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! ๐Ÿ’ช') - ->success() - ->send(); + CheerfulNotification::success( + 'Penugasan Berhasil Dibuat! ๐Ÿš€โœจ', + 'Mantap! Penugasan telah dibuat dan semua media terkait sudah diberi tahu. Mari kita pantau progresnya! ๐Ÿ’ช' + )->send(); }) ->modalHeading('Buat Penugasan') ->modalSubmitActionLabel('Simpan') ->visible(function (Cooperation $record): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); return $user && ! $user->hasRole('Perusahaan') && ! $record->taskAssignments()->exists() diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php index 008154e..79b0404 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/RejectAction.php @@ -3,12 +3,13 @@ namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation; use App\Enums\ApprovalStatus; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use App\Models\User; use App\Notifications\BroadcastNotification; use Filament\Actions\Action; -use Filament\Notifications\Notification; use Filament\Support\Icons\Heroicon; +use Illuminate\Support\Facades\Auth; class RejectAction extends Action { @@ -23,7 +24,7 @@ protected function setUp(): void $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function ($query) { $query->whereHas('company', function ($subQuery) { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); @@ -31,11 +32,10 @@ protected function setUp(): void if ($cooperationMedia) { $cooperationMedia->update(['status' => ApprovalStatus::REJECTED]); - Notification::make() - ->title('Berhasil Ditolak ๐Ÿ™') - ->body('Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. ๐Ÿ˜Š') - ->info() - ->send(); + CheerfulNotification::info( + 'Berhasil Ditolak ๐Ÿ™', + 'Terima kasih atas konfirmasinya. Pesan penolakan telah diteruskan ke Admin. ๐Ÿ˜Š' + )->send(); // Notify Admins User::superAdmin() @@ -49,16 +49,17 @@ protected function setUp(): void } }) ->visible(function (Cooperation $record): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); - if (! $user->hasRole('Perusahaan')) { + if (! $user || ! $user->hasRole('Perusahaan')) { return false; } $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function ($query) { $query->whereHas('company', function ($subQuery) { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php index c560042..08f7608 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/SendProposalAction.php @@ -4,6 +4,7 @@ use App\Enums\ApprovalStatus; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use App\Models\User; use App\Notifications\BroadcastNotification; @@ -11,10 +12,10 @@ use Filament\Actions\Action; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Support\Enums\Width; use Filament\Support\Icons\Heroicon; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; class SendProposalAction extends Action @@ -54,7 +55,7 @@ protected function setUp(): void $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function (Builder $query): void { $query->whereHas('company', function (Builder $subQuery): void { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); @@ -89,17 +90,17 @@ protected function setUp(): void } } - Notification::make() - ->title('Berhasil Diajukan! ๐Ÿš€') - ->body('Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ') - ->success() - ->send(); + CheerfulNotification::success( + 'Berhasil Diajukan! ๐Ÿš€', + 'Yeay! Proposal kerja sama Anda sudah terkirim ke Admin. Mohon ditunggu ya, semoga hasilnya memuaskan! โœจ' + )->send(); // Notify Admin User::superAdmin() ->get() ->each(function ($admin) use ($isRevision, $record, $cooperationMedia): void { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); $admin->notify(new BroadcastNotification([ 'title' => $isRevision ? 'Pembaruan Proposal Kerja Sama โœจ' : 'Ada Proposal Kerja Sama Baru! ๐Ÿš€', 'body' => $isRevision @@ -117,7 +118,8 @@ protected function setUp(): void ->modalHeading('Proposal Kerja Sama') ->modalSubmitActionLabel('Kirim Proposal') ->visible(function (Cooperation $record): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); if (! $user->hasRole('Perusahaan')) { return false; @@ -126,7 +128,7 @@ protected function setUp(): void $cooperationMedia = $record->cooperationMedia() ->whereHas('partnerMedia', function (Builder $query): void { $query->whereHas('company', function (Builder $subQuery): void { - $subQuery->where('user_id', auth()->id()); + $subQuery->where('user_id', Auth::id()); }); }) ->first(); diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php index 0c87567..e1119e7 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/CreateCooperation.php @@ -3,8 +3,10 @@ namespace App\Filament\Resources\Manage\Cooperations\Pages; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Notifications\BroadcastNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; use Illuminate\Support\Facades\Storage; @@ -25,6 +27,11 @@ protected function getHeaderActions(): array ]; } + protected function getCreatedNotification(): ?Notification + { + return CheerfulNotification::create(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php b/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php index e5babfa..cbcb3a1 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/EditCooperation.php @@ -3,8 +3,10 @@ namespace App\Filament\Resources\Manage\Cooperations\Pages; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; use Illuminate\Support\Facades\Storage; @@ -42,6 +44,11 @@ protected function getHeaderActions(): array ]; } + protected function getSavedNotification(): ?Notification + { + return CheerfulNotification::update(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php index 5d32354..963d241 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php @@ -10,6 +10,7 @@ use Filament\Actions\DeleteBulkAction; use Filament\Actions\ViewAction; use Filament\Infolists\Components\TextEntry; +use Filament\Notifications\Notification; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Components\Grid; use Filament\Schemas\Schema; @@ -71,7 +72,13 @@ public function table(Table $table): Table ]) ->toolbarActions([ BulkActionGroup::make([ - DeleteBulkAction::make(), + DeleteBulkAction::make() + ->successNotification( + Notification::make() + ->title('Proposal Dihapus! ๐Ÿ—‘๏ธ') + ->body('Semua proposal yang dipilih telah berhasil dihapus. ๐Ÿ‘‹') + ->success() + ), ]), ]); } diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php index f173926..62ac9bc 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/ReportRelationManager.php @@ -6,6 +6,7 @@ use App\Filament\Resources\Manage\Cooperations\Actions\Report\AcceptAction; use App\Filament\Resources\Manage\Cooperations\Actions\Report\RejectAction; use App\Filament\Resources\Manage\Cooperations\CooperationResource; +use App\Filament\Support\CheerfulNotification; use App\Models\Report; use App\Models\User; use App\Notifications\BroadcastNotification; @@ -15,13 +16,13 @@ use Filament\Forms\Components\SpatieMediaLibraryFileUpload; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; use Filament\Support\Enums\Width; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Auth; class ReportRelationManager extends RelationManager { @@ -127,17 +128,17 @@ public function table(Table $table): Table return $data; }) ->after(function (Report $record): void { - Notification::make() - ->title('Laporan Berhasil Terkirim! ๐Ÿš€โœจ') - ->body('Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! ๐Ÿ’ช') - ->success() - ->send(); + CheerfulNotification::success( + 'Laporan Berhasil Terkirim! ๐Ÿš€โœจ', + 'Hore! Laporan Anda sudah masuk ke sistem. Admin akan segera memeriksanya. Terima kasih atas kerja kerasnya! ๐Ÿ’ช' + )->send(); // Notify Admins User::superAdmin() ->get() ->each(function ($admin) use ($record): void { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); $admin->notify(new BroadcastNotification([ 'title' => 'Ada Laporan Baru! ๐Ÿ“โœจ', 'body' => "Halo Admin! {$user->name} baru saja mengirimkan laporan \"{$record->title}\" untuk kerja sama \"{$this->getOwnerRecord()->title}\". Yuk, dicek! ๐Ÿ˜Š", @@ -150,7 +151,8 @@ public function table(Table $table): Table }); }) ->visible(function (): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); if (! $user || ! $user->hasRole('Perusahaan')) { return false; diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php index 96ab2c8..79abee4 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/TaskAssignmentRelationManager.php @@ -12,6 +12,7 @@ use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; +use Filament\Notifications\Notification; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; use Filament\Tables\Columns\TextColumn; @@ -107,16 +108,40 @@ public function table(Table $table): Table $cooperation = $this->getOwnerRecord(); return $cooperation->proposals()->accepted()->exists(); - }), + }) + ->successNotification( + Notification::make() + ->title('Penugasan Dibuat! ๐Ÿš€โœจ') + ->body('Tugas baru berhasil ditetapkan. Media terkait akan segera mengetahuinya! ๐Ÿ’ช') + ->success() + ), ]) ->recordActions([ - EditAction::make(), + EditAction::make() + ->successNotification( + Notification::make() + ->title('Penugasan Diperbarui! โœ…') + ->body('Perubahan pada penugasan berhasil disimpan. ๐Ÿ‘') + ->success() + ), - DeleteAction::make(), + DeleteAction::make() + ->successNotification( + Notification::make() + ->title('Penugasan Dihapus! ๐Ÿ—‘๏ธ') + ->body('Penugasan telah berhasil dihapus dari sistem. ๐Ÿ‘‹') + ->success() + ), ]) ->toolbarActions([ BulkActionGroup::make([ - DeleteBulkAction::make(), + DeleteBulkAction::make() + ->successNotification( + Notification::make() + ->title('Banyak Penugasan Dihapus! ๐Ÿ—‘๏ธ๐Ÿ‘‹') + ->body('Semua penugasan yang dipilih telah dihapus. ๐Ÿงน') + ->success() + ), ]), ]); } diff --git a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php index 5d6db11..ba9cf68 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/DeleteJournalistAction.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Manage\Journalists\Actions; use App\Enums\VerificationStatus; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\DeleteAction; +use Illuminate\Support\Facades\Auth; class DeleteJournalistAction extends DeleteAction { @@ -11,8 +13,13 @@ protected function setUp(): void { parent::setUp(); + $this->successNotification( + CheerfulNotification::delete() + ); + $this->visible(function (): bool { - $user = auth()->user(); + /** @var \App\Models\User $user */ + $user = Auth::user(); if (! $user->hasRole('Perusahaan')) { return true; diff --git a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php index 6510058..783f38b 100644 --- a/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php +++ b/app/Filament/Resources/Manage/Journalists/Actions/EditJournalistAction.php @@ -3,10 +3,12 @@ namespace App\Filament\Resources\Manage\Journalists\Actions; use App\Enums\VerificationStatus; +use App\Filament\Support\CheerfulNotification; use App\Models\Journalist; use Filament\Actions\EditAction; use Filament\Support\Enums\Width; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; class EditJournalistAction extends EditAction @@ -15,6 +17,10 @@ protected function setUp(): void { parent::setUp(); + $this->successNotification( + CheerfulNotification::update() + ); + $this->modalWidth(Width::Large) ->fillForm(function (Journalist $journalist): array { $data = [ @@ -89,7 +95,7 @@ protected function setUp(): void }) ->visible(function (): bool { /** @var \App\Models\User $user */ - $user = auth()->user(); + $user = Auth::user(); if (! $user->hasRole('Perusahaan')) { return true; diff --git a/app/Filament/Resources/Manage/Journalists/JournalistResource.php b/app/Filament/Resources/Manage/Journalists/JournalistResource.php index 8b71f17..5c5e23b 100644 --- a/app/Filament/Resources/Manage/Journalists/JournalistResource.php +++ b/app/Filament/Resources/Manage/Journalists/JournalistResource.php @@ -2,6 +2,8 @@ namespace App\Filament\Resources\Manage\Journalists; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Columns\TimestampColumns; use App\Filament\Pages\Media; use App\Filament\Resources\Manage\Journalists\Actions\DeleteJournalistAction; @@ -13,9 +15,7 @@ use Filament\Actions\Action; use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteBulkAction; -use Filament\Actions\ForceDeleteAction; use Filament\Actions\ForceDeleteBulkAction; -use Filament\Actions\RestoreAction; use Filament\Actions\RestoreBulkAction; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; diff --git a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php index 3b3fa5e..a1eeb68 100644 --- a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php +++ b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Manage\Journalists\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Manage\Journalists\JournalistResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; use Illuminate\Database\Eloquent\Model; diff --git a/app/Filament/Resources/Manage/Partners/PartnerResource.php b/app/Filament/Resources/Manage/Partners/PartnerResource.php index a41b4a9..3f2f65e 100644 --- a/app/Filament/Resources/Manage/Partners/PartnerResource.php +++ b/app/Filament/Resources/Manage/Partners/PartnerResource.php @@ -2,14 +2,12 @@ namespace App\Filament\Resources\Manage\Partners; +use App\Filament\Actions\DefaultBulkActions; use App\Filament\Resources\Manage\Partners\Pages\ManagePartners; use App\Filament\Resources\Manage\Partners\Pages\ViewPartner; use App\Models\User; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteBulkAction; -use Filament\Actions\ForceDeleteBulkAction; -use Filament\Actions\RestoreBulkAction; use Filament\Actions\ViewAction; use Filament\Infolists\Components\RepeatableEntry; use Filament\Infolists\Components\TextEntry; @@ -315,11 +313,7 @@ public static function table(Table $table): Table ]) ->toolbarActions([ BulkActionGroup::make([ - DeleteBulkAction::make(), - - ForceDeleteBulkAction::make(), - - RestoreBulkAction::make(), + ...DefaultBulkActions::make('rekanan'), ]), ]) ->emptyStateIcon(Heroicon::BuildingOffice2) diff --git a/app/Filament/Resources/Master/Categories/CategoryResource.php b/app/Filament/Resources/Master/Categories/CategoryResource.php index d19d2ec..e4c6f56 100644 --- a/app/Filament/Resources/Master/Categories/CategoryResource.php +++ b/app/Filament/Resources/Master/Categories/CategoryResource.php @@ -3,17 +3,15 @@ namespace App\Filament\Resources\Master\Categories; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Categories\Pages\ManageCategories; +use App\Filament\Support\CheerfulNotification; use App\Models\Category; -use BackedEnum; -use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; -use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Schemas\Schema; use Filament\Support\Enums\Width; @@ -74,6 +72,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (Category $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php index fd1b80d..e80e1df 100644 --- a/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php +++ b/app/Filament/Resources/Master/Categories/Pages/ManageCategories.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Categories\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Categories\CategoryResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/Classifications/ClassificationResource.php b/app/Filament/Resources/Master/Classifications/ClassificationResource.php index bffa19d..1e3317a 100644 --- a/app/Filament/Resources/Master/Classifications/ClassificationResource.php +++ b/app/Filament/Resources/Master/Classifications/ClassificationResource.php @@ -3,16 +3,17 @@ namespace App\Filament\Resources\Master\Classifications; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Classifications\Pages\ManageClassifications; +use App\Filament\Support\CheerfulNotification; use App\Models\Classification; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Schemas\Schema; @@ -74,6 +75,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (Classification $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php index 75bbb19..64b3681 100644 --- a/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php +++ b/app/Filament/Resources/Master/Classifications/Pages/ManageClassifications.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Classifications\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Classifications\ClassificationResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/Departments/DepartmentResource.php b/app/Filament/Resources/Master/Departments/DepartmentResource.php index cde583c..e709953 100644 --- a/app/Filament/Resources/Master/Departments/DepartmentResource.php +++ b/app/Filament/Resources/Master/Departments/DepartmentResource.php @@ -3,16 +3,17 @@ namespace App\Filament\Resources\Master\Departments; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Departments\Pages\ManageDepartments; +use App\Filament\Support\CheerfulNotification; use App\Models\Department; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Schemas\Schema; @@ -84,6 +85,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (Department $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php index a8d7133..5e22912 100644 --- a/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php +++ b/app/Filament/Resources/Master/Departments/Pages/ManageDepartments.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Departments\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Departments\DepartmentResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/Locations/LocationResource.php b/app/Filament/Resources/Master/Locations/LocationResource.php index b488a8a..2cefdcd 100644 --- a/app/Filament/Resources/Master/Locations/LocationResource.php +++ b/app/Filament/Resources/Master/Locations/LocationResource.php @@ -3,16 +3,17 @@ namespace App\Filament\Resources\Master\Locations; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Locations\Pages\ManageLocations; +use App\Filament\Support\CheerfulNotification; use App\Models\Location; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Schemas\Schema; @@ -74,6 +75,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (Location $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php index 8f8affb..1fffc43 100644 --- a/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php +++ b/app/Filament/Resources/Master/Locations/Pages/ManageLocations.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Locations\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Locations\LocationResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php index c3e44be..7f2a8f6 100644 --- a/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php +++ b/app/Filament/Resources/Master/SubClassifications/Pages/ManageSubClassifications.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\SubClassifications\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\SubClassifications\SubClassificationResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php index 5a68f49..ca810ff 100644 --- a/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php +++ b/app/Filament/Resources/Master/SubClassifications/SubClassificationResource.php @@ -3,6 +3,10 @@ namespace App\Filament\Resources\Master\SubClassifications; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\SubClassifications\Pages\ManageSubClassifications; @@ -10,12 +14,9 @@ use App\Models\SubClassification; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Schemas\Schema; use Filament\Support\Enums\Width; @@ -90,6 +91,12 @@ public static function table(Table $table): Table ->updateStateUsing(function (SubClassification $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + Notification::make() + ->title('Status Berubah! ๐Ÿ”„โœจ') + ->body('Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘') + ->success() + ->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php index aed6b5c..3ccea5c 100644 --- a/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php +++ b/app/Filament/Resources/Master/SubLocations/Pages/ManageSubLocations.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\SubLocations\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\SubLocations\SubLocationResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php index ecd96f5..23bfe93 100644 --- a/app/Filament/Resources/Master/SubLocations/SubLocationResource.php +++ b/app/Filament/Resources/Master/SubLocations/SubLocationResource.php @@ -3,17 +3,18 @@ namespace App\Filament\Resources\Master\SubLocations; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\SubLocations\Pages\ManageSubLocations; +use App\Filament\Support\CheerfulNotification; use App\Models\Location; use App\Models\SubLocation; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; @@ -90,6 +91,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (SubLocation $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php index 02afbde..c6e9623 100644 --- a/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php +++ b/app/Filament/Resources/Master/Themes/Pages/ManageThemes.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Themes\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Themes\ThemeResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/Themes/ThemeResource.php b/app/Filament/Resources/Master/Themes/ThemeResource.php index 6ad96a6..54c1f25 100644 --- a/app/Filament/Resources/Master/Themes/ThemeResource.php +++ b/app/Filament/Resources/Master/Themes/ThemeResource.php @@ -3,16 +3,17 @@ namespace App\Filament\Resources\Master\Themes; use App\Enums\IsActive; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Themes\Pages\ManageThemes; +use App\Filament\Support\CheerfulNotification; use App\Models\Theme; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Schemas\Schema; @@ -74,6 +75,8 @@ public static function table(Table $table): Table ->updateStateUsing(function (Theme $record, bool $state): void { $record->is_active = $state ? IsActive::ACTIVE : IsActive::INACTIVE; $record->save(); + + CheerfulNotification::statusUpdated()->send(); }), ...TimestampColumns::make(), diff --git a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php index 37239f3..d15db91 100644 --- a/app/Filament/Resources/Master/Users/Pages/ManageUsers.php +++ b/app/Filament/Resources/Master/Users/Pages/ManageUsers.php @@ -2,8 +2,8 @@ namespace App\Filament\Resources\Master\Users\Pages; +use App\Filament\Actions\Cheerful\CreateAction; use App\Filament\Resources\Master\Users\UserResource; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Master/Users/UserResource.php b/app/Filament/Resources/Master/Users/UserResource.php index 92a2c61..d54c72f 100644 --- a/app/Filament/Resources/Master/Users/UserResource.php +++ b/app/Filament/Resources/Master/Users/UserResource.php @@ -4,19 +4,20 @@ use App\Enums\IsActive; use App\Enums\RoleEnum; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Master\Users\Pages\ManageUsers; use App\Models\User; use BackedEnum; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\Hidden; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Schemas\Schema; use Filament\Support\Enums\Width; @@ -127,6 +128,12 @@ public static function table(Table $table): Table ->where('user_id', $record->id) ->delete(); } + + Notification::make() + ->title($state ? 'Pengguna Diaktifkan! โœ…' : 'Pengguna Dinonaktifkan โ›”') + ->body($state ? 'Status akun pengguna berhasil diaktifkan kembali. Siap beraksi! ๐Ÿš€' : 'Status akun pengguna berhasil dinonaktifkan. Istirahat dulu ya... ๐Ÿ˜ด') + ->success() + ->send(); }) ->disabled(fn (User $record): bool => $record->hasRole(RoleEnum::PERUSAHAAN->value)), diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php index 6249e5e..8580079 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/CreateContentRecap.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Monitoring\ContentRecaps\Pages; use App\Filament\Resources\Monitoring\ContentRecaps\ContentRecapResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; class CreateContentRecap extends CreateRecord @@ -23,6 +25,11 @@ protected function getHeaderActions(): array ]; } + protected function getCreatedNotification(): ?Notification + { + return CheerfulNotification::create(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php index 18577dc..758f5c9 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Pages/EditContentRecap.php @@ -4,7 +4,9 @@ use App\Filament\Resources\Monitoring\ContentRecaps\ContentRecapResource; use App\Filament\Resources\Monitoring\MediaMonitorings\Pages\ListMediaMonitorings; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; class EditContentRecap extends EditRecord @@ -22,6 +24,11 @@ protected function getHeaderActions(): array ]; } + protected function getSavedNotification(): ?Notification + { + return CheerfulNotification::update(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php b/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php index 0a20208..5956ae4 100644 --- a/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php +++ b/app/Filament/Resources/Monitoring/ContentRecaps/Tables/ContentRecapsTable.php @@ -2,13 +2,13 @@ namespace App\Filament\Resources\Monitoring\ContentRecaps\Tables; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Support\Icons\Heroicon; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\TrashedFilter; diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php b/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php index a660d34..a57d207 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Pages/CreateIssueManagement.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Pages; use App\Filament\Resources\Monitoring\IssueManagements\IssueManagementResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; class CreateIssueManagement extends CreateRecord @@ -23,6 +25,11 @@ protected function getHeaderActions(): array ]; } + protected function getCreatedNotification(): ?Notification + { + return CheerfulNotification::create(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php b/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php index 4e3dff5..8e59fbe 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Pages/EditIssueManagement.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Pages; use App\Filament\Resources\Monitoring\IssueManagements\IssueManagementResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; class EditIssueManagement extends EditRecord @@ -21,6 +23,11 @@ protected function getHeaderActions(): array ]; } + protected function getSavedNotification(): ?Notification + { + return CheerfulNotification::update(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php index a1b0665..36f02e0 100644 --- a/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php +++ b/app/Filament/Resources/Monitoring/IssueManagements/Tables/IssueManagementTable.php @@ -2,13 +2,13 @@ namespace App\Filament\Resources\Monitoring\IssueManagements\Tables; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Support\Icons\Heroicon; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\SelectFilter; diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php index 4fe915e..317f9bc 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Actions/CrawlNewsAction.php @@ -2,12 +2,12 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Actions; +use App\Filament\Support\CheerfulNotification; use App\Models\Theme; use App\Services\NewsCrawlerService; use Filament\Actions\Action; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; -use Filament\Notifications\Notification; use Filament\Support\Enums\Width; use Filament\Support\Icons\Heroicon; @@ -48,17 +48,15 @@ protected function setUp(): void $count = $service->crawlFromGoogleNews($data['keyword'], $data['limit'], (array) ($data['theme_id'] ?? [])); if ($count > 0) { - Notification::make() - ->title('Crawl Selesai') - ->body("Berhasil mengambil {$count} berita baru tentang '{$data['keyword']}' di Purwakarta.") - ->success() - ->send(); + CheerfulNotification::success( + 'Crawl Berhasil! ๐Ÿ•ธ๏ธ๐Ÿš€', + "Mantap! Ada {$count} berita baru nih tentang '{$data['keyword']}' di Purwakarta. Databasenya makin kaya! ๐Ÿ˜Ž" + )->send(); } else { - Notification::make() - ->title('Tidak Ada Berita Baru') - ->body("Tidak ditemukan berita baru untuk '{$data['keyword']}' yang belum ada di database.") - ->info() - ->send(); + CheerfulNotification::info( + 'Belum Ada Berita Baru ๐Ÿ”', + "Hmm, sepertinya belum ada update berita baru untuk '{$data['keyword']}'. Coba lagi nanti ya! ๐Ÿ˜‰" + )->send(); } }) ->modalWidth(Width::Large); diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php index db2bd03..55c6d40 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/CreateMediaMonitoring.php @@ -3,8 +3,10 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Pages; use App\Filament\Resources\Monitoring\MediaMonitorings\MediaMonitoringResource; +use App\Filament\Support\CheerfulNotification; use App\Models\MediaMonitoring; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; class CreateMediaMonitoring extends CreateRecord @@ -24,6 +26,11 @@ protected function getHeaderActions(): array ]; } + protected function getCreatedNotification(): ?Notification + { + return CheerfulNotification::create(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php index 7e52181..3fe0057 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Pages/EditMediaMonitoring.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Pages; use App\Filament\Resources\Monitoring\MediaMonitorings\MediaMonitoringResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; class EditMediaMonitoring extends EditRecord @@ -21,6 +23,11 @@ protected function getHeaderActions(): array ]; } + protected function getSavedNotification(): ?Notification + { + return CheerfulNotification::update(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php index bfce6ff..ae75eda 100644 --- a/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php +++ b/app/Filament/Resources/Monitoring/MediaMonitorings/Tables/MediaMonitoringsTable.php @@ -2,14 +2,14 @@ namespace App\Filament\Resources\Monitoring\MediaMonitorings\Tables; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Monitoring\MediaMonitorings\Actions\CrawlNewsAction; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Support\Icons\Heroicon; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\TrashedFilter; diff --git a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php index fe58e60..cbd8ac9 100644 --- a/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php +++ b/app/Filament/Resources/Publication/Announcements/AnnouncementResource.php @@ -3,6 +3,10 @@ namespace App\Filament\Resources\Publication\Announcements; use App\Enums\AnnouncementType; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use App\Filament\Resources\Publication\Announcements\Pages\ManageAnnouncements; @@ -10,10 +14,6 @@ use BackedEnum; use Filament\Actions\Action; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\Radio; use Filament\Forms\Components\RichEditor; diff --git a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php index 3be17a0..f844ef8 100644 --- a/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php +++ b/app/Filament/Resources/Publication/Announcements/Pages/ManageAnnouncements.php @@ -3,12 +3,12 @@ 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\Actions\CreateAction; use Filament\Resources\Pages\ManageRecords; use Filament\Support\Enums\Width; diff --git a/app/Filament/Resources/Publication/News/Pages/CreateNews.php b/app/Filament/Resources/Publication/News/Pages/CreateNews.php index 38a325b..d548fac 100644 --- a/app/Filament/Resources/Publication/News/Pages/CreateNews.php +++ b/app/Filament/Resources/Publication/News/Pages/CreateNews.php @@ -3,9 +3,12 @@ namespace App\Filament\Resources\Publication\News\Pages; use App\Filament\Resources\Publication\News\NewsResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Auth; class CreateNews extends CreateRecord { @@ -24,6 +27,11 @@ protected function getHeaderActions(): array ]; } + protected function getCreatedNotification(): ?Notification + { + return CheerfulNotification::create(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); @@ -31,7 +39,7 @@ protected function getRedirectUrl(): string protected function handleRecordCreation(array $data): Model { - $data['author_id'] = auth()->id(); + $data['author_id'] = Auth::id(); return static::getModel()::create($data); } diff --git a/app/Filament/Resources/Publication/News/Pages/EditNews.php b/app/Filament/Resources/Publication/News/Pages/EditNews.php index 4c6d039..67f3d32 100644 --- a/app/Filament/Resources/Publication/News/Pages/EditNews.php +++ b/app/Filament/Resources/Publication/News/Pages/EditNews.php @@ -3,7 +3,9 @@ namespace App\Filament\Resources\Publication\News\Pages; use App\Filament\Resources\Publication\News\NewsResource; +use App\Filament\Support\CheerfulNotification; use Filament\Actions\Action; +use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; class EditNews extends EditRecord @@ -21,6 +23,11 @@ protected function getHeaderActions(): array ]; } + protected function getSavedNotification(): ?Notification + { + return CheerfulNotification::update(); + } + protected function getRedirectUrl(): string { return $this->getResource()::getUrl('index'); diff --git a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php index e2d6c1c..2fca9bc 100644 --- a/app/Filament/Resources/Publication/News/Schemas/NewsForm.php +++ b/app/Filament/Resources/Publication/News/Schemas/NewsForm.php @@ -72,8 +72,7 @@ public static function configure(Schema $schema): Schema $component->state( $record->tags->pluck('name')->toArray() ); - }) - ->autocomplete(false), + }), Radio::make('status') ->label('Status') diff --git a/app/Filament/Resources/Publication/News/Tables/NewsTable.php b/app/Filament/Resources/Publication/News/Tables/NewsTable.php index 740787b..b162507 100644 --- a/app/Filament/Resources/Publication/News/Tables/NewsTable.php +++ b/app/Filament/Resources/Publication/News/Tables/NewsTable.php @@ -2,13 +2,13 @@ namespace App\Filament\Resources\Publication\News\Tables; +use App\Filament\Actions\Cheerful\DeleteAction; +use App\Filament\Actions\Cheerful\EditAction; +use App\Filament\Actions\Cheerful\ForceDeleteAction; +use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\DefaultBulkActions; use App\Filament\Columns\TimestampColumns; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteAction; -use Filament\Actions\EditAction; -use Filament\Actions\ForceDeleteAction; -use Filament\Actions\RestoreAction; use Filament\Support\Icons\Heroicon; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\TrashedFilter; diff --git a/app/Filament/Support/CheerfulNotification.php b/app/Filament/Support/CheerfulNotification.php new file mode 100644 index 0000000..c20943c --- /dev/null +++ b/app/Filament/Support/CheerfulNotification.php @@ -0,0 +1,159 @@ +title('Hore! Data Tersimpan ๐ŸŽ‰โœจ') + ->body('Data baru berhasil ditambahkan! Sistem sudah menyimpannya dengan aman. ๐Ÿš€๐Ÿ’ช') + ->success(); + } + + /** + * Notification for successful record update. + */ + public static function update(): Notification + { + return self::make() + ->title('Mantap! Data Diperbarui โœ…๐Ÿ”ฅ') + ->body('Perubahan berhasil disimpan! Data sekarang sudah up-to-date dan segar lagi. โœจ๐Ÿ‘Œ') + ->success(); + } + + /** + * Notification for successful record deletion (soft delete). + */ + public static function delete(): Notification + { + return self::make() + ->title('Oke, Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹') + ->body('Data tersebut sudah berhasil dihapus dari sistem. Semuanya bersih dan rapi sekarang! ๐Ÿ˜Š๐Ÿšฎ') + ->success(); + } + + /** + * Notification for successful permanent deletion. + */ + public static function forceDelete(): Notification + { + return self::make() + ->title('Selamat Tinggal Selamanya ๐Ÿ‘‹๐Ÿ˜ข') + ->body('Data telah dihapus permanen dan tidak bisa kembali. Semoga ini keputusan yang tepat! ๐Ÿšฎ๐Ÿ’จ') + ->success(); + } + + /** + * Notification for successful record restoration. + */ + public static function restore(): Notification + { + return self::make() + ->title('Welcome Back! Data Pulih โ™ป๏ธโœจ') + ->body('Data berhasil dikembalikan! Hati-hati ya, jangan sampai terhapus lagi. ๐Ÿ˜‰๐Ÿ‘') + ->success(); + } + + /** + * Notification for successful status change/toggle. + */ + public static function statusUpdated(?string $title = null, ?string $body = null): Notification + { + return self::make() + ->title($title ?? 'Status Berubah! ๐Ÿ”„โœจ') + ->body($body ?? 'Status data berhasil diperbarui. Perubahan langsung aktif ya! ๐Ÿ‘') + ->success(); + } + + /** + * Notification for successful bulk deletion. + */ + public static function bulkDelete(): Notification + { + return self::make() + ->title('Oke, Banyak Data Dihapus ๐Ÿ—‘๏ธ๐Ÿ‘‹') + ->body('Semua data yang dipilih berhasil dihapus. Sistem makin lega deh! ๐Ÿ˜Š') + ->success(); + } + + /** + * Notification for successful bulk permanent deletion. + */ + public static function bulkForceDelete(): Notification + { + return self::make() + ->title('Bye Bye Semua! ๐Ÿ‘‹๐Ÿ”ฅ') + ->body('Data yang dipilih sudah dihapus permanen. Bersih total! ๐Ÿงน๐Ÿ’จ') + ->success(); + } + + /** + * Notification for successful bulk restoration. + */ + public static function bulkRestore(): Notification + { + return self::make() + ->title('Hore! Banyak Data Pulih โ™ป๏ธ๐ŸŽ‰') + ->body('Data-data tersebut sudah kembali aktif. Selamat bekerja kembali! ๐Ÿ’ชโœจ') + ->success(); + } + + /** + * Custom cheerful success notification. + */ + public static function success(string $title, string $body): Notification + { + return self::make() + ->title($title) + ->body($body) + ->success(); + } + + /** + * Custom cheerful info notification. + */ + public static function info(string $title, string $body): Notification + { + return self::make() + ->title($title) + ->body($body) + ->info(); + } + + /** + * Custom cheerful warning notification. + */ + public static function warning(string $title, string $body): Notification + { + return self::make() + ->title($title) + ->body($body) + ->warning(); + } + + /** + * Custom cheerful danger notification. + */ + public static function danger(string $title, string $body): Notification + { + return self::make() + ->title($title) + ->body($body) + ->danger(); + } +}