feat(Service & Membership): checkbox and sync

This commit is contained in:
2025-10-23 12:35:26 +02:00
parent 07160656f5
commit 052e38730c
4 changed files with 33 additions and 5 deletions

View File

@@ -7,6 +7,7 @@ use App\Filament\Resources\Members\Pages\EditMember;
use App\Filament\Resources\Members\Pages\ListMembers;
use App\Filament\Resources\Members\Schemas\MemberForm;
use App\Filament\Resources\Members\Tables\MembersTable;
use App\Filament\Resources\Members\Widgets\MemberCount;
use App\Models\Member;
use BackedEnum;
use Filament\Resources\Resource;
@@ -58,4 +59,11 @@ class MemberResource extends Resource
return Member::getAttributeLabel('members');
}
public static function getWidgets(): array
{
return [
MemberCount::class,
];
}
}

View File

@@ -7,6 +7,7 @@ use App\Filament\Resources\Memberships\Pages\EditMembership;
use App\Filament\Resources\Memberships\Pages\ListMemberships;
use App\Filament\Resources\Memberships\Schemas\MembershipForm;
use App\Filament\Resources\Memberships\Tables\MembershipsTable;
use App\Filament\Resources\Memberships\Widgets\MembershipsChart;
use App\Models\Membership;
use BackedEnum;
use Filament\Resources\Resource;
@@ -57,4 +58,11 @@ class MembershipResource extends Resource
{
return Membership::getAttributeLabel('memberships');
}
public static function getWidgets(): array
{
return [
MembershipsChart::class,
];
}
}

View File

@@ -4,11 +4,9 @@ namespace App\Filament\Resources\Memberships\Schemas;
use App\Models\Membership;
use App\Models\Service;
use App\Models\User;
use Filament\Actions\Action;
use Filament\Support\Facades\FilamentView;
use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Placeholder;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
@@ -67,14 +65,22 @@ class MembershipForm
->columns(2),
Section::make('Services')
->schema(function () {
->schema([
CheckboxList::make('services')
->label('Services activés')
->helperText('Sélectionne les services que ce membre peut utiliser.')
->options(Service::all()->pluck('name', 'id'))
->relationship('services', 'name')
->columns(2)
])
/*->schema(function () {
return Service::all()->map(function ($service) {
return Toggle::make("services_sync.{$service->id}")
->label($service->name)
->default(false)
->helperText("Active ou désactive le service {$service->name}");
})->toArray();
})
})*/
])
->columnSpan(3),

View File

@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Service extends Model
{
@@ -18,4 +19,9 @@ class Service extends Model
{
return __('services.fields.' . $attribute);
}
public function memberships() : BelongsToMany
{
return $this->belongsToMany(Membership::class, 'services_memberships', 'service_id', 'membership_id');
}
}