Skip to content

Commit 801e31d

Browse files
authored
Merge pull request #57 from lara-zeus/deletes
improve delete department
2 parents 585b80d + 01c5a22 commit 801e31d

File tree

4 files changed

+101
-5
lines changed

4 files changed

+101
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
return new class extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('letters', function (Blueprint $table) {
17+
Schema::table('letters', function (Blueprint $table) {
18+
Schema::disableForeignKeyConstraints();
19+
$table->dropForeign(['department_id']);
20+
Schema::enableForeignKeyConstraints();
21+
22+
$table->foreign('department_id')
23+
->onUpdate('cascade')
24+
->onDelete('cascade')
25+
->references('id')
26+
->on('departments');
27+
});
28+
}
29+
30+
/**
31+
* Reverse the migrations.
32+
*
33+
* @return void
34+
*/
35+
public function down()
36+
{
37+
38+
}
39+
};

src/Filament/Resources/DepartmentResource.php

+28-2
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@
1313
use Filament\Tables\Actions\Action;
1414
use Filament\Tables\Actions\ActionGroup;
1515
use Filament\Tables\Actions\DeleteAction;
16+
use Filament\Tables\Actions\DeleteBulkAction;
1617
use Filament\Tables\Actions\EditAction;
18+
use Filament\Tables\Actions\ForceDeleteAction;
19+
use Filament\Tables\Actions\ForceDeleteBulkAction;
20+
use Filament\Tables\Actions\RestoreAction;
21+
use Filament\Tables\Actions\RestoreBulkAction;
1722
use Filament\Tables\Actions\ViewAction;
1823
use Filament\Tables\Columns\IconColumn;
1924
use Filament\Tables\Columns\ImageColumn;
2025
use Filament\Tables\Columns\TextColumn;
2126
use Filament\Tables\Filters\Filter;
27+
use Filament\Tables\Filters\TrashedFilter;
2228
use Illuminate\Database\Eloquent\Builder;
2329
use Illuminate\Database\Eloquent\Model;
30+
use Illuminate\Database\Eloquent\SoftDeletingScope;
2431
use LaraZeus\Wind\Filament\Resources\DepartmentResource\Pages;
32+
use LaraZeus\Wind\Models\Department;
2533

2634
class DepartmentResource extends Resource
2735
{
@@ -74,6 +82,17 @@ public static function form(Form $form): Form
7482
]);
7583
}
7684

85+
/**
86+
* @return Builder<Department>
87+
*/
88+
public static function getEloquentQuery(): Builder
89+
{
90+
return parent::getEloquentQuery()
91+
->withoutGlobalScopes([
92+
SoftDeletingScope::class,
93+
]);
94+
}
95+
7796
public static function table(Table $table): Table
7897
{
7998
return $table
@@ -105,6 +124,7 @@ public static function table(Table $table): Table
105124
])
106125
->defaultSort('id', 'desc')
107126
->filters([
127+
TrashedFilter::make(),
108128
Filter::make('is_active')
109129
->label(__('is active'))
110130
->toggle()
@@ -114,6 +134,11 @@ public static function table(Table $table): Table
114134
->toggle()
115135
->query(fn (Builder $query): Builder => $query->where('is_active', false)),
116136
])
137+
->bulkActions([
138+
DeleteBulkAction::make(),
139+
ForceDeleteBulkAction::make(),
140+
RestoreBulkAction::make(),
141+
])
117142
->actions([
118143
ActionGroup::make([
119144
EditAction::make('edit')->label(__('Edit')),
@@ -126,8 +151,9 @@ public static function table(Table $table): Table
126151
->label(__('Open'))
127152
->url(fn (Model $record): string => route('contact', ['departmentSlug' => $record]))
128153
->openUrlInNewTab(),
129-
DeleteAction::make('delete')
130-
->label(__('Delete')),
154+
DeleteAction::make('delete'),
155+
ForceDeleteAction::make(),
156+
RestoreAction::make(),
131157
]),
132158
]);
133159
}

src/Filament/Resources/LetterResource.php

+29-2
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,22 @@
1111
use Filament\Tables\Actions\Action;
1212
use Filament\Tables\Actions\ActionGroup;
1313
use Filament\Tables\Actions\DeleteAction;
14+
use Filament\Tables\Actions\DeleteBulkAction;
1415
use Filament\Tables\Actions\EditAction;
16+
use Filament\Tables\Actions\ForceDeleteAction;
17+
use Filament\Tables\Actions\ForceDeleteBulkAction;
18+
use Filament\Tables\Actions\RestoreAction;
19+
use Filament\Tables\Actions\RestoreBulkAction;
1520
use Filament\Tables\Actions\ViewAction;
1621
use Filament\Tables\Columns\TextColumn;
1722
use Filament\Tables\Columns\ViewColumn;
1823
use Filament\Tables\Filters\SelectFilter;
24+
use Filament\Tables\Filters\TrashedFilter;
25+
use Illuminate\Database\Eloquent\Builder;
1926
use Illuminate\Database\Eloquent\Model;
27+
use Illuminate\Database\Eloquent\SoftDeletingScope;
2028
use LaraZeus\Wind\Filament\Resources\LetterResource\Pages;
29+
use LaraZeus\Wind\Models\Letter;
2130

2231
class LetterResource extends Resource
2332
{
@@ -35,6 +44,17 @@ protected static function getNavigationBadge(): ?string
3544
return static::getModel()::where('status', config('zeus-wind.default_status'))->count();
3645
}
3746

47+
/**
48+
* @return Builder<Letter>
49+
*/
50+
public static function getEloquentQuery(): Builder
51+
{
52+
return parent::getEloquentQuery()
53+
->withoutGlobalScopes([
54+
SoftDeletingScope::class,
55+
]);
56+
}
57+
3858
public static function form(Form $form): Form
3959
{
4060
return $form
@@ -112,7 +132,13 @@ public static function table(Table $table): Table
112132
->formatStateUsing(fn (string $state): string => __("status_{$state}")),
113133
])
114134
->defaultSort('id', 'desc')
135+
->bulkActions([
136+
DeleteBulkAction::make(),
137+
ForceDeleteBulkAction::make(),
138+
RestoreBulkAction::make(),
139+
])
115140
->filters([
141+
TrashedFilter::make(),
116142
SelectFilter::make('status')
117143
->options([
118144
'NEW' => __('NEW'),
@@ -137,8 +163,9 @@ public static function table(Table $table): Table
137163
->label(__('Open'))
138164
->url(fn (Model $record): string => route('contact', ['departmentSlug' => $record]))
139165
->openUrlInNewTab(),
140-
DeleteAction::make('delete')
141-
->label(__('Delete')),
166+
DeleteAction::make('delete'),
167+
ForceDeleteAction::make(),
168+
RestoreAction::make(),
142169
]),
143170
]);
144171
}

src/WindServiceProvider.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,11 @@ protected function getCommands(): array
5454
public function packageConfiguring(Package $package): void
5555
{
5656
$package
57-
->hasMigrations(['create_department_table', 'create_letters_table'])
57+
->hasMigrations([
58+
'create_department_table',
59+
'create_letters_table',
60+
'alter_letters_constraints',
61+
])
5862
->hasRoute('web');
5963
}
6064
}

0 commit comments

Comments
 (0)