|
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