feat(Member & Membership): table and form functionnalities

This commit is contained in:
2025-10-22 18:04:34 +02:00
parent 0924da3cda
commit 757f6cf20c
7 changed files with 62 additions and 13 deletions

View File

@@ -3,7 +3,10 @@
namespace App\Filament\Resources\MemberGroups\Schemas; namespace App\Filament\Resources\MemberGroups\Schemas;
use App\Models\MemberGroup; use App\Models\MemberGroup;
use Filament\Actions\Action;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
class MemberGroupForm class MemberGroupForm
@@ -12,12 +15,30 @@ class MemberGroupForm
{ {
return $schema return $schema
->components([ ->components([
Section::make(fn (?MemberGroup $record) => $record?->name ?? MemberGroup::getAttributeLabel('name'))
->headerActions([
Action::make('view-members')
->icon('heroicon-o-users')
->label(MemberGroup::getAttributeLabel('view_members'))
->action(function (MemberGroup $record) {
return redirect()->route('filament.admin.resources.members.index', [ 'filters[group][name][values][0]' => $record->id]);
})
->visible(fn(?MemberGroup $record) => $record !== null)
])
->schema([
TextInput::make('name') TextInput::make('name')
->label(MemberGroup::getAttributeLabel('name')) ->label(MemberGroup::getAttributeLabel('name'))
->required(), ->required(),
TextInput::make('description') TextInput::make('identifier')
->label(MemberGroup::getAttributeLabel('identifier'))
->disabledOn('edit')
->required(),
Textarea::make('description')
->label(MemberGroup::getAttributeLabel('description')) ->label(MemberGroup::getAttributeLabel('description'))
->default(null), ->default(null),
]),
]); ]);
} }
} }

View File

@@ -73,9 +73,9 @@ class MembersTable
'cancelled' => Member::getAttributeLabel('cancelled'), 'cancelled' => Member::getAttributeLabel('cancelled'),
'excluded' => Member::getAttributeLabel('excluded'), 'excluded' => Member::getAttributeLabel('excluded'),
]), ]),
Filter::make('group.name') SelectFilter::make('group.name')
->label(Member::getAttributeLabel('group_id')) ->label(Member::getAttributeLabel('group_id'))->multiple()
->relationship('group', 'name'),
]) ])
->recordActions([ ->recordActions([
EditAction::make(), EditAction::make(),

View File

@@ -31,7 +31,7 @@ class MembershipForm
->headerActions([ ->headerActions([
Action::make('view-profile') Action::make('view-profile')
->icon('heroicon-o-user') ->icon('heroicon-o-user')
->label('Voir le profil') ->label('Voir le profil du membre')
->action(function (Membership $record) { ->action(function (Membership $record) {
return redirect()->route('filament.admin.resources.members.edit', ['record' => $record->member_id]); return redirect()->route('filament.admin.resources.members.edit', ['record' => $record->member_id]);
}), }),

View File

@@ -9,7 +9,8 @@ class MemberGroup extends Model
{ {
protected $fillable = [ protected $fillable = [
'name', 'name',
'description' 'description',
'identifier'
]; ];
public static function getAttributeLabel(string $attribute): string public static function getAttributeLabel(string $attribute): string

View File

@@ -5,8 +5,10 @@ return [
'group' => 'Group', 'group' => 'Group',
'groups' => 'Groups', 'groups' => 'Groups',
'name' => 'Name', 'name' => 'Name',
'identifier' => 'Identifier',
'description' => 'Description', 'description' => 'Description',
'created_at' => 'Created at', 'created_at' => 'Created at',
'Updated at' => 'Updated at' 'Updated at' => 'Updated at',
'view_members' => 'View members of this group'
], ],
]; ];

View File

@@ -5,8 +5,10 @@ return [
'group' => 'Groupe', 'group' => 'Groupe',
'groups' => 'Groupes', 'groups' => 'Groupes',
'name' => 'Nom', 'name' => 'Nom',
'identifier' => 'Identifiant',
'description' => 'Description', 'description' => 'Description',
'created_at' => 'Créé le', 'created_at' => 'Créé le',
'updated_at' => 'Mis à jour le' 'updated_at' => 'Mis à jour le',
'view_members' => 'Voir les membres de ce groupe'
], ],
]; ];

23
lang/fr/modal.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
return [
'confirmation' => 'Êtes-vous sûr de vouloir supprimer ?',
'actions' => [
'cancel' => [
'label' => 'Annuler',
],
'confirm' => [
'label' => 'Confirmer',
],
'submit' => [
'label' => 'Soumettre',
],
],
];