feat(MemberGroup/Member relation manager)
This commit is contained in:
@@ -5,6 +5,8 @@ namespace App\Filament\Resources\MemberGroups;
|
|||||||
use App\Filament\Resources\MemberGroups\Pages\CreateMemberGroup;
|
use App\Filament\Resources\MemberGroups\Pages\CreateMemberGroup;
|
||||||
use App\Filament\Resources\MemberGroups\Pages\EditMemberGroup;
|
use App\Filament\Resources\MemberGroups\Pages\EditMemberGroup;
|
||||||
use App\Filament\Resources\MemberGroups\Pages\ListMemberGroups;
|
use App\Filament\Resources\MemberGroups\Pages\ListMemberGroups;
|
||||||
|
use App\Filament\Resources\MemberGroups\RelationManagers\MemberRelationManager;
|
||||||
|
use App\Filament\Resources\MemberGroups\RelationManagers\MembersRelationManager;
|
||||||
use App\Filament\Resources\MemberGroups\Schemas\MemberGroupForm;
|
use App\Filament\Resources\MemberGroups\Schemas\MemberGroupForm;
|
||||||
use App\Filament\Resources\MemberGroups\Tables\MemberGroupsTable;
|
use App\Filament\Resources\MemberGroups\Tables\MemberGroupsTable;
|
||||||
use App\Models\MemberGroup;
|
use App\Models\MemberGroup;
|
||||||
@@ -35,7 +37,7 @@ class MemberGroupResource extends Resource
|
|||||||
public static function getRelations(): array
|
public static function getRelations(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
//
|
MembersRelationManager::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\MemberGroups\RelationManagers;
|
||||||
|
|
||||||
|
use App\Models\Member;
|
||||||
|
use Filament\Actions\AssociateAction;
|
||||||
|
use Filament\Actions\BulkActionGroup;
|
||||||
|
use Filament\Actions\CreateAction;
|
||||||
|
use Filament\Actions\DeleteAction;
|
||||||
|
use Filament\Actions\DeleteBulkAction;
|
||||||
|
use Filament\Actions\DissociateAction;
|
||||||
|
use Filament\Actions\DissociateBulkAction;
|
||||||
|
use Filament\Actions\EditAction;
|
||||||
|
use Filament\Resources\RelationManagers\RelationManager;
|
||||||
|
use Filament\Schemas\Schema;
|
||||||
|
use Filament\Tables\Columns\TextColumn;
|
||||||
|
use Filament\Tables\Table;
|
||||||
|
|
||||||
|
class MembersRelationManager extends RelationManager
|
||||||
|
{
|
||||||
|
protected static string $relationship = 'members';
|
||||||
|
|
||||||
|
protected static ?string $title = 'Adhérents du groupe';
|
||||||
|
|
||||||
|
public function form(Schema $schema): Schema
|
||||||
|
{
|
||||||
|
return $schema
|
||||||
|
->components([
|
||||||
|
//
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function table(Table $table): Table
|
||||||
|
{
|
||||||
|
return $table
|
||||||
|
->recordTitleAttribute('name')
|
||||||
|
->columns([
|
||||||
|
TextColumn::make('lastname')
|
||||||
|
->label(Member::getAttributeLabel('lastname'))
|
||||||
|
->searchable(),
|
||||||
|
TextColumn::make('firstname')
|
||||||
|
->label(Member::getAttributeLabel('firstname'))
|
||||||
|
->searchable(),
|
||||||
|
TextColumn::make('status')
|
||||||
|
->label(Member::getAttributeLabel('status'))
|
||||||
|
->formatStateUsing(fn (string $state) => Member::getAttributeLabel($state))
|
||||||
|
->badge()
|
||||||
|
->color(fn (string $state): string => match ($state) {
|
||||||
|
'draft' => 'gray',
|
||||||
|
'pending' => 'warning',
|
||||||
|
'valid' => 'success',
|
||||||
|
'cancelled' => 'danger',
|
||||||
|
'excluded' => 'black',
|
||||||
|
}),
|
||||||
|
|
||||||
|
])
|
||||||
|
->filters([
|
||||||
|
//
|
||||||
|
])
|
||||||
|
->headerActions([
|
||||||
|
CreateAction::make(),
|
||||||
|
AssociateAction::make(),
|
||||||
|
])
|
||||||
|
->recordActions([
|
||||||
|
EditAction::make(),
|
||||||
|
DissociateAction::make(),
|
||||||
|
DeleteAction::make(),
|
||||||
|
])
|
||||||
|
->toolbarActions([
|
||||||
|
BulkActionGroup::make([
|
||||||
|
DissociateBulkAction::make(),
|
||||||
|
DeleteBulkAction::make(),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,6 +50,7 @@ class MembershipForm
|
|||||||
->label(Membership::getAttributeLabel('package_id'))
|
->label(Membership::getAttributeLabel('package_id'))
|
||||||
->placeholder(Membership::getAttributeLabel('select_package'))
|
->placeholder(Membership::getAttributeLabel('select_package'))
|
||||||
->relationship('package', 'name')
|
->relationship('package', 'name')
|
||||||
|
->required()
|
||||||
->default(null),
|
->default(null),
|
||||||
Select::make('payment_status')
|
Select::make('payment_status')
|
||||||
->label(Membership::getAttributeLabel('payment_status'))
|
->label(Membership::getAttributeLabel('payment_status'))
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ class MemberGroup extends Model
|
|||||||
|
|
||||||
public function members(): HasMany
|
public function members(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Member::class);
|
return $this->hasMany(Member::class, 'group_id');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ class Membership extends Model
|
|||||||
return $this->belongsTo(User::class, 'admin_id');
|
return $this->belongsTo(User::class, 'admin_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function package(): HasOne
|
public function package(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->hasOne(Package::class);
|
return $this->belongsTo(Package::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function services(): BelongsToMany
|
public function services(): BelongsToMany
|
||||||
|
|||||||
@@ -19,8 +19,4 @@ class Package extends Model
|
|||||||
return __('packages.fields.' . $attribute);
|
return __('packages.fields.' . $attribute);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function memberships(): HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(Membership::class);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user