Skip to content

Commit

Permalink
improve delete department
Browse files Browse the repository at this point in the history
add cascade on delete and update department for letters
show soft deleted departments and allow force delete or restor them
  • Loading branch information
atmonshi committed Jul 2, 2023
1 parent 585b80d commit 01c5a22
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 5 deletions.
39 changes: 39 additions & 0 deletions database/migrations/alter_letters_constraints.php.stub
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('letters', function (Blueprint $table) {
Schema::table('letters', function (Blueprint $table) {
Schema::disableForeignKeyConstraints();
$table->dropForeign(['department_id']);
Schema::enableForeignKeyConstraints();

$table->foreign('department_id')
->onUpdate('cascade')
->onDelete('cascade')
->references('id')
->on('departments');
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{

}
};
30 changes: 28 additions & 2 deletions src/Filament/Resources/DepartmentResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,23 @@
use Filament\Tables\Actions\Action;
use Filament\Tables\Actions\ActionGroup;
use Filament\Tables\Actions\DeleteAction;
use Filament\Tables\Actions\DeleteBulkAction;
use Filament\Tables\Actions\EditAction;
use Filament\Tables\Actions\ForceDeleteAction;
use Filament\Tables\Actions\ForceDeleteBulkAction;
use Filament\Tables\Actions\RestoreAction;
use Filament\Tables\Actions\RestoreBulkAction;
use Filament\Tables\Actions\ViewAction;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Filters\TrashedFilter;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use LaraZeus\Wind\Filament\Resources\DepartmentResource\Pages;
use LaraZeus\Wind\Models\Department;

class DepartmentResource extends Resource
{
Expand Down Expand Up @@ -74,6 +82,17 @@ public static function form(Form $form): Form
]);
}

/**
* @return Builder<Department>
*/
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}

public static function table(Table $table): Table
{
return $table
Expand Down Expand Up @@ -105,6 +124,7 @@ public static function table(Table $table): Table
])
->defaultSort('id', 'desc')
->filters([
TrashedFilter::make(),
Filter::make('is_active')
->label(__('is active'))
->toggle()
Expand All @@ -114,6 +134,11 @@ public static function table(Table $table): Table
->toggle()
->query(fn (Builder $query): Builder => $query->where('is_active', false)),
])
->bulkActions([
DeleteBulkAction::make(),
ForceDeleteBulkAction::make(),
RestoreBulkAction::make(),
])
->actions([
ActionGroup::make([
EditAction::make('edit')->label(__('Edit')),
Expand All @@ -126,8 +151,9 @@ public static function table(Table $table): Table
->label(__('Open'))
->url(fn (Model $record): string => route('contact', ['departmentSlug' => $record]))
->openUrlInNewTab(),
DeleteAction::make('delete')
->label(__('Delete')),
DeleteAction::make('delete'),
ForceDeleteAction::make(),
RestoreAction::make(),
]),
]);
}
Expand Down
31 changes: 29 additions & 2 deletions src/Filament/Resources/LetterResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,22 @@
use Filament\Tables\Actions\Action;
use Filament\Tables\Actions\ActionGroup;
use Filament\Tables\Actions\DeleteAction;
use Filament\Tables\Actions\DeleteBulkAction;
use Filament\Tables\Actions\EditAction;
use Filament\Tables\Actions\ForceDeleteAction;
use Filament\Tables\Actions\ForceDeleteBulkAction;
use Filament\Tables\Actions\RestoreAction;
use Filament\Tables\Actions\RestoreBulkAction;
use Filament\Tables\Actions\ViewAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ViewColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Filters\TrashedFilter;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use LaraZeus\Wind\Filament\Resources\LetterResource\Pages;
use LaraZeus\Wind\Models\Letter;

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

/**
* @return Builder<Letter>
*/
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
}

public static function form(Form $form): Form
{
return $form
Expand Down Expand Up @@ -112,7 +132,13 @@ public static function table(Table $table): Table
->formatStateUsing(fn (string $state): string => __("status_{$state}")),
])
->defaultSort('id', 'desc')
->bulkActions([
DeleteBulkAction::make(),
ForceDeleteBulkAction::make(),
RestoreBulkAction::make(),
])
->filters([
TrashedFilter::make(),
SelectFilter::make('status')
->options([
'NEW' => __('NEW'),
Expand All @@ -137,8 +163,9 @@ public static function table(Table $table): Table
->label(__('Open'))
->url(fn (Model $record): string => route('contact', ['departmentSlug' => $record]))
->openUrlInNewTab(),
DeleteAction::make('delete')
->label(__('Delete')),
DeleteAction::make('delete'),
ForceDeleteAction::make(),
RestoreAction::make(),
]),
]);
}
Expand Down
6 changes: 5 additions & 1 deletion src/WindServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,11 @@ protected function getCommands(): array
public function packageConfiguring(Package $package): void
{
$package
->hasMigrations(['create_department_table', 'create_letters_table'])
->hasMigrations([
'create_department_table',
'create_letters_table',
'alter_letters_constraints',
])
->hasRoute('web');
}
}

0 comments on commit 01c5a22

Please sign in to comment.