|
5 | 5 | namespace App\Filament\Resources;
|
6 | 6 |
|
7 | 7 | use App\Actions\Article\ApprovedArticleAction;
|
| 8 | +use App\Actions\Article\DeclineArticleAction; |
8 | 9 | use App\Filament\Resources\ArticleResource\Pages;
|
9 | 10 | use App\Models\Article;
|
10 | 11 | use Awcodes\FilamentBadgeableColumn\Components\Badge;
|
11 | 12 | use Awcodes\FilamentBadgeableColumn\Components\BadgeableColumn;
|
| 13 | +use Filament\Forms\Components\Textarea; |
| 14 | +use Filament\Notifications\Notification; |
12 | 15 | use Filament\Resources\Resource;
|
13 | 16 | use Filament\Support\Enums\MaxWidth;
|
14 | 17 | use Filament\Tables;
|
@@ -123,15 +126,27 @@ public static function table(Table $table): Table
|
123 | 126 | ->label('Décliner')
|
124 | 127 | ->icon('heroicon-s-x-mark')
|
125 | 128 | ->color('warning')
|
126 |
| - ->modalHeading(__('Voulez vous décliner cet article')) |
127 |
| - ->successNotificationTitle(__('Opération effectuée avec succès')) |
| 129 | + ->form([ |
| 130 | + Textarea::make('reason') |
| 131 | + ->label(__('Raison du refus')) |
| 132 | + ->maxLength(255) |
| 133 | + ->required(), |
| 134 | + ]) |
| 135 | + ->modalHeading('Décliner l\'article') |
| 136 | + ->modalDescription('Veuillez fournir une raison détaillée pour le refus de cet article. L\'auteur recevra cette explication.') |
| 137 | + ->successNotificationTitle('Article décliné avec succès') |
128 | 138 | ->requiresConfirmation()
|
129 | 139 | ->modalIcon('heroicon-s-x-mark')
|
130 |
| - ->action(function ($record): void { |
| 140 | + ->action(function (array $data, Article $record): void { |
131 | 141 | Gate::authorize('decline', $record);
|
132 | 142 |
|
133 |
| - $record->declined_at = now(); |
134 |
| - $record->save(); |
| 143 | + app(DeclineArticleAction::class)->execute($data['reason'], $record); |
| 144 | + |
| 145 | + Notification::make() |
| 146 | + ->title('Article décliné') |
| 147 | + ->body('L\'auteur a été notifié de la raison du refus.') |
| 148 | + ->success() |
| 149 | + ->send(); |
135 | 150 | }),
|
136 | 151 | Tables\Actions\Action::make('show')
|
137 | 152 | ->icon('untitledui-eye')
|
|
0 commit comments