55namespace App \Filament \Resources ;
66
77use App \Actions \Article \ApprovedArticleAction ;
8+ use App \Actions \Article \DeclineArticleAction ;
89use App \Filament \Resources \ArticleResource \Pages ;
910use App \Models \Article ;
1011use Awcodes \FilamentBadgeableColumn \Components \Badge ;
1112use Awcodes \FilamentBadgeableColumn \Components \BadgeableColumn ;
13+ use Filament \Forms \Components \Textarea ;
14+ use Filament \Notifications \Notification ;
1215use Filament \Resources \Resource ;
1316use Filament \Support \Enums \MaxWidth ;
1417use Filament \Tables ;
@@ -99,7 +102,6 @@ public static function table(Table $table): Table
99102
100103 return '' ;
101104 })
102- ->searchable ()
103105 ->sortable (),
104106 ])
105107 ->actions ([
@@ -123,15 +125,27 @@ public static function table(Table $table): Table
123125 ->label ('Décliner ' )
124126 ->icon ('heroicon-s-x-mark ' )
125127 ->color ('warning ' )
126- ->modalHeading (__ ('Voulez vous décliner cet article ' ))
127- ->successNotificationTitle (__ ('Opération effectuée avec succès ' ))
128+ ->form ([
129+ Textarea::make ('reason ' )
130+ ->label (__ ('Raison du refus ' ))
131+ ->maxLength (255 )
132+ ->required (),
133+ ])
134+ ->modalHeading ('Décliner l \'article ' )
135+ ->modalDescription ('Veuillez fournir une raison détaillée pour le refus de cet article. L \'auteur recevra cette explication. ' )
136+ ->successNotificationTitle ('Article décliné avec succès ' )
128137 ->requiresConfirmation ()
129138 ->modalIcon ('heroicon-s-x-mark ' )
130- ->action (function ($ record ): void {
139+ ->action (function (array $ data , Article $ record ): void {
131140 Gate::authorize ('decline ' , $ record );
132141
133- $ record ->declined_at = now ();
134- $ record ->save ();
142+ app (DeclineArticleAction::class)->execute ($ data ['reason ' ], $ record );
143+
144+ Notification::make ()
145+ ->title ('Article décliné ' )
146+ ->body ('L \'auteur a été notifié de la raison du refus. ' )
147+ ->success ()
148+ ->send ();
135149 }),
136150 Tables \Actions \Action::make ('show ' )
137151 ->icon ('untitledui-eye ' )
0 commit comments