feat(add services on membership page)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Filament\Actions;
|
||||
|
||||
use App\Models\Membership;
|
||||
use Filament\Actions\Action;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
use App\Models\Member;
|
||||
@@ -10,45 +11,56 @@ class ServiceToggleAction extends Action
|
||||
{
|
||||
protected string $serviceIdentifier;
|
||||
|
||||
/*
|
||||
* Create a new action instance.
|
||||
*/
|
||||
public static function forService(string $serviceIdentifier): static
|
||||
{
|
||||
return static::make('toggle_' . $serviceIdentifier)
|
||||
->configureForService($serviceIdentifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the action for a specific service.
|
||||
*/
|
||||
protected function configureForService(string $serviceIdentifier): static
|
||||
{
|
||||
$this->serviceIdentifier = $serviceIdentifier;
|
||||
|
||||
return $this
|
||||
->label('Service actif')
|
||||
->icon(fn (Member $record) =>
|
||||
$record->hasService($serviceIdentifier)
|
||||
->icon(fn (Member|Membership $record) =>
|
||||
$this->getMember($record)?->hasService($serviceIdentifier)
|
||||
? 'heroicon-o-check-circle'
|
||||
: 'heroicon-o-x-circle'
|
||||
)
|
||||
->color(fn (Member $record) =>
|
||||
$record->hasService($serviceIdentifier)
|
||||
->color(fn (Member|Membership $record) =>
|
||||
$this->getMember($record)?->hasService($serviceIdentifier)
|
||||
? 'success'
|
||||
: 'gray'
|
||||
)
|
||||
->requiresConfirmation()
|
||||
->modalHeading(fn (Member $record) =>
|
||||
$record->hasService($serviceIdentifier)
|
||||
->modalHeading(fn (Member|Membership $record) =>
|
||||
$this->getMember($record)?->hasService($serviceIdentifier)
|
||||
? 'Désactiver le service'
|
||||
: 'Activer le service'
|
||||
)
|
||||
->modalDescription(fn (Member $record) =>
|
||||
$record->hasService($serviceIdentifier)
|
||||
->modalDescription(fn (Member|Membership $record) =>
|
||||
$this->getMember($record)?->hasService($serviceIdentifier)
|
||||
? 'Êtes-vous sûr·e de vouloir désactiver ce service pour ce membre ?'
|
||||
: 'Êtes-vous sûr·e de vouloir activer ce service pour ce membre ?'
|
||||
)
|
||||
->modalSubmitActionLabel(fn (Member $record) =>
|
||||
$record->hasService($serviceIdentifier)
|
||||
->modalSubmitActionLabel(fn (Member|Membership $record) =>
|
||||
$this->getMember($record)?->hasService($serviceIdentifier)
|
||||
? 'Désactiver'
|
||||
: 'Activer'
|
||||
)
|
||||
->action(function (Member $record) use ($serviceIdentifier) {
|
||||
->action(function (Member|Membership $record) use ($serviceIdentifier) {
|
||||
$member = $this->getMember($record);
|
||||
|
||||
if (!$member) {
|
||||
return;
|
||||
}
|
||||
|
||||
// @todo à discuter
|
||||
/* if ($record->hasService($serviceIdentifier)) {
|
||||
@@ -62,4 +74,12 @@ class ServiceToggleAction extends Action
|
||||
}*/
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the member associated with the given record.
|
||||
*/
|
||||
protected function getMember(Member|Membership $record): ?Member
|
||||
{
|
||||
return $record instanceof Member ? $record : $record->member;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user