Skip to content

Commit ae7cff7

Browse files
author
Chri$
committed
refactor:[LAR-32] Remove action class(Approved and Declined) , Add filament builk acion and Feature test for approved and declined builk action
1 parent 63e70df commit ae7cff7

File tree

6 files changed

+73
-119
lines changed

6 files changed

+73
-119
lines changed

app/Filament/Actions/ApprovedAction.php

Lines changed: 0 additions & 51 deletions
This file was deleted.

app/Filament/Actions/DeclinedAction.php

Lines changed: 0 additions & 51 deletions
This file was deleted.

app/Filament/Clusters/Articles.php

Lines changed: 0 additions & 12 deletions
This file was deleted.

app/Filament/Resources/ArticleResource.php

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44

55
namespace App\Filament\Resources;
66

7-
use App\Filament\Actions\ApprovedAction;
8-
use App\Filament\Actions\DeclinedAction;
97
use App\Filament\Resources\ArticleResource\Pages;
108
use App\Models\Article;
119
use Filament\Resources\Resource;
1210
use Filament\Tables;
11+
use Filament\Tables\Actions\Action;
1312
use Filament\Tables\Actions\ActionGroup;
13+
use Filament\Tables\Actions\BulkAction;
1414
use Filament\Tables\Columns\TextColumn;
1515
use Filament\Tables\Filters\Filter;
1616
use Filament\Tables\Table;
1717
use Illuminate\Database\Eloquent\Builder;
18+
use Illuminate\Database\Eloquent\Collection;
1819

1920
final class ArticleResource extends Resource
2021
{
@@ -63,14 +64,62 @@ public static function table(Table $table): Table
6364

6465
->actions([
6566
ActionGroup::make([
66-
ApprovedAction::make('approved'),
67-
DeclinedAction::make('declined'),
67+
Action::make('approved')
68+
->label('Approuver')
69+
->icon('heroicon-s-check')
70+
->color('success')
71+
->modalHeading(__('Voulez vous approuver cet article'))
72+
->successNotificationTitle(__('Opération effectuée avec succès'))
73+
->requiresConfirmation()
74+
->modalIcon('heroicon-s-check')
75+
->action(function ($record): void {
76+
$record->approved_at = now();
77+
$record->declined_at = null;
78+
$record->save();
79+
}),
80+
Action::make('declined')
81+
->label('Décliner')
82+
->icon('heroicon-s-x-mark')
83+
->color('warning')
84+
->modalHeading(__('Voulez vous décliner cet article'))
85+
->successNotificationTitle(__('Opération effectuée avec succès'))
86+
->requiresConfirmation()
87+
->modalIcon('heroicon-s-x-mark')
88+
->action(function ($record): void {
89+
$record->declined_at = now();
90+
$record->approved_at = null;
91+
$record->save();
92+
}),
93+
// DeclinedAction::make('declined'),
6894
Tables\Actions\DeleteAction::make('delete'),
6995
]),
7096

7197
])
7298
->bulkActions([
7399
Tables\Actions\BulkActionGroup::make([
100+
BulkAction::make('approved')
101+
->label('Approuver la sélection')
102+
->icon('heroicon-s-check')
103+
->color('success')
104+
->action(fn (Collection $records) => $records->each->update(['approved_at' => now(), 'declined_at' => null]))
105+
->deselectRecordsAfterCompletion()
106+
->requiresConfirmation()
107+
->modalIcon('heroicon-s-check')
108+
->modalHeading('Approuver')
109+
->modalSubheading('Voulez-vous vraiment approuver ces articles ?')
110+
->modalButton('Confirmer'),
111+
BulkAction::make('declined')
112+
->label('Décliner la sélection')
113+
->icon('heroicon-s-x-mark')
114+
->color('warning')
115+
->action(fn (Collection $records) => $records->each->update(['declined_at' => now(), 'approved_at' => null]))
116+
->deselectRecordsAfterCompletion()
117+
->requiresConfirmation()
118+
->modalIcon('heroicon-s-x-mark')
119+
->modalHeading('Décliner')
120+
->modalSubheading('Voulez-vous vraiment décliner ces articles ?')
121+
->modalButton('Confirmer'),
122+
74123
Tables\Actions\DeleteBulkAction::make(),
75124
]),
76125
]);

app/Providers/Filament/AdminPanelProvider.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public function panel(Panel $panel): Panel
3939
->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
4040
->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
4141
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
42-
->discoverClusters(in: app_path('Filament/Clusters'), for: 'App\\Filament\\Clusters')
4342
->pages([
4443
Pages\Dashboard::class,
4544
])

tests/Feature/Filament/ArticleTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,24 @@
5858
->toBe(null);
5959
});
6060

61+
it('admin user can bulk approved articles', function (): void {
62+
$articles = Article::factory()->count(5)->create(['submitted_at' => now()]);
63+
64+
Livewire::test(ArticleResource\Pages\ListArticles::class)
65+
->callTableBulkAction('approved', $articles);
66+
67+
expect(Article::whereNotNull('approved_at')->count())
68+
->toBe(5);
69+
});
70+
71+
it('admin user can bulk declined articles', function (): void {
72+
$articles = Article::factory()->count(5)->create(['submitted_at' => now()]);
73+
74+
Livewire::test(ArticleResource\Pages\ListArticles::class)
75+
->callTableBulkAction('declined', $articles);
76+
77+
expect(Article::whereNotNull('declined_at')->count())
78+
->toBe(5);
79+
});
80+
6181
})->group('articles');

0 commit comments

Comments
 (0)