refactor: centralize cheerful notifications and cleanup auth calls
- Introduce `CheerfulNotification` utility class to standardize cheerful and expressive notifications across the application. - Refactor custom "Cheerful" actions (Create, Edit, Delete, etc.) and `DefaultBulkActions` to utilize the new utility class. - Update all `ToggleColumn` status updates in Master Data modules to use `CheerfulNotification::statusUpdated()`. - Replace inline `Notification::make()` calls in custom actions (Reply, Crawl News, Cooperation actions) and Resource Pages with `CheerfulNotification` methods. - Address various lint errors by standardizing the use of the `Auth` facade and improving type hinting for the authenticated `User` model.
This commit is contained in:
parent
ab318a030b
commit
2983cd243f
18
app/Filament/Actions/Cheerful/CreateAction.php
Normal file
18
app/Filament/Actions/Cheerful/CreateAction.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions\Cheerful;
|
||||
|
||||
use App\Filament\Support\CheerfulNotification;
|
||||
use Filament\Actions\CreateAction as ActionsCreateAction;
|
||||
|
||||
class CreateAction extends ActionsCreateAction
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->successNotification(
|
||||
CheerfulNotification::create()
|
||||
);
|
||||
}
|
||||
}
|
||||
18
app/Filament/Actions/Cheerful/DeleteAction.php
Normal file
18
app/Filament/Actions/Cheerful/DeleteAction.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions\Cheerful;
|
||||
|
||||
use App\Filament\Support\CheerfulNotification;
|
||||
use Filament\Actions\DeleteAction as ActionsDeleteAction;
|
||||
|
||||
class DeleteAction extends ActionsDeleteAction
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->successNotification(
|
||||
CheerfulNotification::delete()
|
||||
);
|
||||
}
|
||||
}
|
||||
18
app/Filament/Actions/Cheerful/EditAction.php
Normal file
18
app/Filament/Actions/Cheerful/EditAction.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions\Cheerful;
|
||||
|
||||
use App\Filament\Support\CheerfulNotification;
|
||||
use Filament\Actions\EditAction as ActionsEditAction;
|
||||
|
||||
class EditAction extends ActionsEditAction
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->successNotification(
|
||||
CheerfulNotification::update()
|
||||
);
|
||||
}
|
||||
}
|
||||
18
app/Filament/Actions/Cheerful/ForceDeleteAction.php
Normal file
18
app/Filament/Actions/Cheerful/ForceDeleteAction.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions\Cheerful;
|
||||
|
||||
use App\Filament\Support\CheerfulNotification;
|
||||
use Filament\Actions\ForceDeleteAction as ActionsForceDeleteAction;
|
||||
|
||||
class ForceDeleteAction extends ActionsForceDeleteAction
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->successNotification(
|
||||
CheerfulNotification::forceDelete()
|
||||
);
|
||||
}
|
||||
}
|
||||
18
app/Filament/Actions/Cheerful/RestoreAction.php
Normal file
18
app/Filament/Actions/Cheerful/RestoreAction.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Actions\Cheerful;
|
||||
|
||||
use App\Filament\Support\CheerfulNotification;
|
||||
use Filament\Actions\RestoreAction as ActionsRestoreAction;
|
||||
|
||||
class RestoreAction extends ActionsRestoreAction
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->successNotification(
|
||||
CheerfulNotification::restore()
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -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()
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -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),
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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()
|
||||
),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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()
|
||||
),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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)),
|
||||
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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')
|
||||
|
||||
@ -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;
|
||||
|
||||
159
app/Filament/Support/CheerfulNotification.php
Normal file
159
app/Filament/Support/CheerfulNotification.php
Normal file
@ -0,0 +1,159 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Support;
|
||||
|
||||
use Filament\Notifications\Notification;
|
||||
|
||||
class CheerfulNotification
|
||||
{
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*/
|
||||
public static function make(): Notification
|
||||
{
|
||||
return Notification::make();
|
||||
}
|
||||
|
||||
/**
|
||||
* Notification for successful record creation.
|
||||
*/
|
||||
public static function create(): Notification
|
||||
{
|
||||
return self::make()
|
||||
->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();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user