From 0c35fa0ebc871058645ae0f419c9eacb03e47d16 Mon Sep 17 00:00:00 2001 From: salam Date: Tue, 30 Dec 2025 08:54:40 +0100 Subject: [PATCH] mapping provider menu wip --- .../Resources/Clients/Schemas/ClientForm.php | 6 +++++ .../Resources/Clients/Tables/ClientsTable.php | 18 +++++++------ .../Resources/Users/Tables/UsersTable.php | 5 +++- app/Models/Client.php | 2 ++ .../0001_01_01_000000_create_users_table.php | 1 + ...2025_05_17_074607_create_clients_table.php | 1 + database/seeders/ClientsSeeder.php | 7 ++--- .../seeders/RolesAndPermissionsSeeder.php | 9 ++++--- .../views/livewire/top-menu-items.blade.php | 27 +++++++++++++++---- 9 files changed, 55 insertions(+), 21 deletions(-) diff --git a/app/Filament/Resources/Clients/Schemas/ClientForm.php b/app/Filament/Resources/Clients/Schemas/ClientForm.php index 5af11b0a..6b8790ff 100644 --- a/app/Filament/Resources/Clients/Schemas/ClientForm.php +++ b/app/Filament/Resources/Clients/Schemas/ClientForm.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\Clients\Schemas; use App\Models\Bookmaker; +use App\Models\Provider; use App\Models\Sport; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; @@ -23,6 +24,11 @@ class ClientForm ->multiple() ->preload() ->searchable(), + Select::make('provider') + ->options(Provider::query()->pluck('name', 'id')) + ->multiple() + ->preload() + ->searchable(), Select::make('sport') ->options(Sport::query()->pluck('name', 'id')) ->multiple() diff --git a/app/Filament/Resources/Clients/Tables/ClientsTable.php b/app/Filament/Resources/Clients/Tables/ClientsTable.php index 1d804696..6aa430a3 100644 --- a/app/Filament/Resources/Clients/Tables/ClientsTable.php +++ b/app/Filament/Resources/Clients/Tables/ClientsTable.php @@ -5,6 +5,7 @@ namespace App\Filament\Resources\Clients\Tables; use App\Actions\AlarmGenerator; use App\Actions\MultilineGenerator; use App\Models\Bookmaker; +use App\Models\Provider; use App\Models\Sport; use Filament\Actions\Action; use Filament\Actions\EditAction; @@ -20,20 +21,21 @@ class ClientsTable ->columns([ TextColumn::make('name'), TextColumn::make('bookmaker') + ->wrap() ->badge() ->formatStateUsing(fn (string $state): string => Bookmaker::where('id', $state)->pluck('name')->first()), + TextColumn::make('provider') + ->badge() + ->wrap() + ->color('success') + ->formatStateUsing(fn (string $state): string => Provider::where('id', $state)->pluck('name')->first()), TextColumn::make('sport') ->badge() + ->wrap() ->color('warning') ->formatStateUsing(fn (string $state): string => Sport::where('id', $state)->pluck('name')->first()), - TextColumn::make('created_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), - TextColumn::make('updated_at') - ->dateTime() - ->sortable() - ->toggleable(isToggledHiddenByDefault: true), + TextColumn::make('created_at')->dateTime(), + TextColumn::make('updated_at')->dateTime(), ]) ->recordActions([ Action::make('multiline') diff --git a/app/Filament/Resources/Users/Tables/UsersTable.php b/app/Filament/Resources/Users/Tables/UsersTable.php index 59a1ab23..286638ce 100644 --- a/app/Filament/Resources/Users/Tables/UsersTable.php +++ b/app/Filament/Resources/Users/Tables/UsersTable.php @@ -21,7 +21,10 @@ class UsersTable ->searchable(), TextColumn::make('client.name')->badge(), TextColumn::make('roles.name')->badge()->color('success')->wrap(), - TextColumn::make('bookmaker.name')->badge()->color('warning'), + TextColumn::make('bookmaker.name') + ->label('Active Bookmaker') + ->badge() + ->color('warning'), TextColumn::make('created_at') ->dateTime() ->sortable() diff --git a/app/Models/Client.php b/app/Models/Client.php index fc6da7bb..58a6fe77 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -8,6 +8,7 @@ class Client extends Model { protected $casts = [ 'bookmaker' => 'json', + 'provider' => 'json', 'sport' => 'json', ]; @@ -15,6 +16,7 @@ class Client extends Model 'name', 'homepage', 'bookmaker', + 'provider', 'sport', ]; } diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index c95d0952..13134b4b 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -21,6 +21,7 @@ return new class extends Migration $table->integer('sport_id')->default(1); $table->integer('bookmaker_id')->nullable(); $table->json('bettype_status')->nullable(); + $table->string('mapper_source')->default('bookmaker'); $table->text('app_authentication_secret')->nullable(); $table->text('app_authentication_recovery_codes')->nullable(); diff --git a/database/migrations/2025_05_17_074607_create_clients_table.php b/database/migrations/2025_05_17_074607_create_clients_table.php index 5fa85ebe..f03b48b0 100644 --- a/database/migrations/2025_05_17_074607_create_clients_table.php +++ b/database/migrations/2025_05_17_074607_create_clients_table.php @@ -16,6 +16,7 @@ return new class extends Migration $table->string('name'); $table->string('homepage')->nullable(); $table->string('bookmaker')->nullable(); + $table->string('provider')->nullable(); $table->string('sport')->nullable(); $table->timestamps(); }); diff --git a/database/seeders/ClientsSeeder.php b/database/seeders/ClientsSeeder.php index ff93c766..114312e6 100644 --- a/database/seeders/ClientsSeeder.php +++ b/database/seeders/ClientsSeeder.php @@ -12,10 +12,11 @@ class ClientsSeeder extends Seeder /** * Clients */ - $sql = "INSERT INTO `clients` (`id`, `name`, `homepage`, `bookmaker`, `sport`, `created_at`, `updated_at`) + $sql = "INSERT INTO `clients` (`id`, `name`, `homepage`, `bookmaker`, `provider`, `sport`, `created_at`, `updated_at`) VALUES - ('1', 'Magloo', NULL, '[\"20\",\"24\"]', '[\"1\",\"3\"]', '2025-08-24 05:56:41', '2025-08-24 05:56:41'), - ('2', 'Logifuture', NULL, '[\"26\",\"27\"]', '[\"1\",\"2\",\"3\",\"5\"]', '2025-08-24 05:57:01', '2025-08-24 05:57:01');"; + (1, 'Magloo', NULL, '[20,24]', '[3,4]', '[1,3]', '2025-08-24 05:56:41', '2025-12-30 07:42:58'), + (2, 'Logifuture', NULL, '[26,27]', '[5,6]', '[1,2,3,5]', '2025-08-24 05:57:01', '2025-12-30 07:43:26'); + "; DB::unprepared($sql); } diff --git a/database/seeders/RolesAndPermissionsSeeder.php b/database/seeders/RolesAndPermissionsSeeder.php index c4256d54..27a34fbe 100644 --- a/database/seeders/RolesAndPermissionsSeeder.php +++ b/database/seeders/RolesAndPermissionsSeeder.php @@ -15,8 +15,8 @@ class RolesAndPermissionsSeeder extends Seeder [ ['name' => 'super_admin', 'guard_name' => 'web'], ['name' => 'konto_switch', 'guard_name' => 'web'], - ['name' => 'provider_menu', 'guard_name' => 'web'], ['name' => 'matchid_column', 'guard_name' => 'web'], + ['name' => 'mapper_source_betsapi', 'guard_name' => 'web'], ], ['name'] ); @@ -27,12 +27,13 @@ class RolesAndPermissionsSeeder extends Seeder 'email_verified_at' => now(), 'client_id' => 1, 'sport_id' => 1, - 'bookmaker_id' => 26, + 'bookmaker_id' => 20, ]); $user->assignRole('super_admin'); $user->assignRole('konto_switch'); $user->assignRole('provider_menu'); $user->assignRole('matchid_column'); + $user->assignRole('mapper_source_betsapi'); $user = User::factory()->create([ 'name' => 'Ubaldo Perrucci', @@ -41,10 +42,10 @@ class RolesAndPermissionsSeeder extends Seeder 'email_verified_at' => now(), 'client_id' => 1, 'sport_id' => 1, - 'bookmaker_id' => 26, + 'bookmaker_id' => 20, ]); $user->assignRole('super_admin'); $user->assignRole('konto_switch'); - $user->assignRole('provider_menu'); + $user->assignRole('mapper_source_betsapi'); } } diff --git a/resources/views/livewire/top-menu-items.blade.php b/resources/views/livewire/top-menu-items.blade.php index 5193b406..b0661ba0 100644 --- a/resources/views/livewire/top-menu-items.blade.php +++ b/resources/views/livewire/top-menu-items.blade.php @@ -17,14 +17,31 @@ -
+
Event Mapper
- @if (auth()->user()->hasRole('provider_menu')) + + + + + + + + + + + + + + + + + + @if (auth()->user()->hasRole('mapper_source_betsapi')) - - - + + + @endif