diff --git a/app/Filament/Resources/Bookmakers/BookmakerResource.php b/app/Filament/Resources/Bookmakers/BookmakerResource.php
new file mode 100644
index 00000000..8001b3fa
--- /dev/null
+++ b/app/Filament/Resources/Bookmakers/BookmakerResource.php
@@ -0,0 +1,47 @@
+ ListBookmakers::route('/'),
+ ];
+ }
+
+ public static function getNavigationBadge(): ?string
+ {
+ return parent::getEloquentQuery()->count();
+ }
+}
diff --git a/app/Filament/Resources/Bookmakers/Pages/CreateBookmaker.php b/app/Filament/Resources/Bookmakers/Pages/CreateBookmaker.php
new file mode 100644
index 00000000..dcc33c62
--- /dev/null
+++ b/app/Filament/Resources/Bookmakers/Pages/CreateBookmaker.php
@@ -0,0 +1,11 @@
+components([
+ TextInput::make('name')
+ ->required(),
+ TextInput::make('icon')
+ ->required(),
+ FileUpload::make('image')
+ ->default(null),
+ TextInput::make('baid')
+ ->numeric()
+ ->default(0),
+ TextInput::make('txid')
+ ->numeric()
+ ->default(0),
+ ]);
+ }
+}
diff --git a/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php b/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php
new file mode 100644
index 00000000..30dfa77e
--- /dev/null
+++ b/app/Filament/Resources/Bookmakers/Tables/BookmakersTable.php
@@ -0,0 +1,57 @@
+columns([
+ TextColumn::make('name')
+ ->searchable(),
+ IconColumn::make('icon')
+ ->size('2xl')
+ ->icon(function ($record): string {
+ return 'bkm-'.$record->icon;
+ }),
+ ImageColumn::make('image'),
+ TextColumn::make('baid')
+ ->numeric()
+ ->sortable(),
+ TextColumn::make('txid')
+ ->numeric()
+ ->sortable(),
+ ToggleColumn::make('txso')->offColor('gray'),
+ ToggleColumn::make('txot')->offColor('gray'),
+ ToggleColumn::make('betsapi')->offColor('gray'),
+ ToggleColumn::make('direct')->offColor('gray'),
+ ToggleColumn::make('is_active')->offColor('gray'),
+ ])
+ ->filters([
+ TernaryFilter::make('txso'),
+ TernaryFilter::make('txot'),
+ TernaryFilter::make('betsapi'),
+ TernaryFilter::make('direct'),
+ TernaryFilter::make('is_active'),
+ ])
+ ->recordActions([
+ EditAction::make(),
+ ])
+ ->toolbarActions([
+ BulkActionGroup::make([
+ DeleteBulkAction::make(),
+ ]),
+ ]);
+ }
+}
diff --git a/app/Filament/Resources/Clients/ClientResource.php b/app/Filament/Resources/Clients/ClientResource.php
index f8b52fc3..24c7293a 100644
--- a/app/Filament/Resources/Clients/ClientResource.php
+++ b/app/Filament/Resources/Clients/ClientResource.php
@@ -3,6 +3,8 @@
namespace App\Filament\Resources\Clients;
use App\Filament\Clusters\Maintenance\MaintenanceCluster;
+use App\Filament\Resources\Clients\Pages\CreateClient;
+use App\Filament\Resources\Clients\Pages\EditClient;
use App\Filament\Resources\Clients\Pages\ListClients;
use App\Filament\Resources\Clients\Schemas\ClientForm;
use App\Filament\Resources\Clients\Tables\ClientsTable;
@@ -17,16 +19,14 @@ class ClientResource extends Resource
{
protected static ?string $model = Client::class;
- protected static ?int $navigationSort = 30;
-
protected static string|BackedEnum|null $navigationIcon = 'lucide-square-user';
- protected static ?string $recordTitleAttribute = 'name';
+ protected static ?string $cluster = MaintenanceCluster::class;
+
+ protected static ?int $navigationSort = 30;
protected static string|UnitEnum|null $navigationGroup = 'User Management';
- protected static ?string $cluster = MaintenanceCluster::class;
-
public static function form(Schema $schema): Schema
{
return ClientForm::configure($schema);
@@ -48,6 +48,8 @@ class ClientResource extends Resource
{
return [
'index' => ListClients::route('/'),
+ 'create' => CreateClient::route('/create'),
+ 'edit' => EditClient::route('/{record}/edit'),
];
}
diff --git a/app/Filament/Resources/Clients/RelationManagers/BookmakerRelationManager.php b/app/Filament/Resources/Clients/RelationManagers/BookmakerRelationManager.php
new file mode 100644
index 00000000..18a3ee3a
--- /dev/null
+++ b/app/Filament/Resources/Clients/RelationManagers/BookmakerRelationManager.php
@@ -0,0 +1,23 @@
+headerActions([
+ CreateAction::make(),
+ ]);
+ }
+}
diff --git a/app/Filament/Resources/Clients/Schemas/ClientForm.php b/app/Filament/Resources/Clients/Schemas/ClientForm.php
index db5e1561..790ab0f2 100644
--- a/app/Filament/Resources/Clients/Schemas/ClientForm.php
+++ b/app/Filament/Resources/Clients/Schemas/ClientForm.php
@@ -2,7 +2,6 @@
namespace App\Filament\Resources\Clients\Schemas;
-use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;
@@ -14,12 +13,10 @@ class ClientForm
->components([
TextInput::make('name')
->required(),
- TextInput::make('icon'),
- Select::make('bookmaker')
- ->relationship('bookmaker', 'name')
- ->multiple()
- ->preload()
- ->searchable(),
+ TextInput::make('icon')
+ ->default(null),
+ TextInput::make('homepage')
+ ->default(null),
]);
}
}
diff --git a/app/Filament/Resources/Clients/Tables/ClientsTable.php b/app/Filament/Resources/Clients/Tables/ClientsTable.php
index 2086c439..487e6ca4 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 Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
+use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
class ClientsTable
@@ -13,7 +14,20 @@ class ClientsTable
{
return $table
->columns([
- //
+ TextColumn::make('name')
+ ->searchable(),
+ TextColumn::make('icon')
+ ->searchable(),
+ TextColumn::make('homepage')
+ ->searchable(),
+ TextColumn::make('created_at')
+ ->dateTime()
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
+ TextColumn::make('updated_at')
+ ->dateTime()
+ ->sortable()
+ ->toggleable(isToggledHiddenByDefault: true),
])
->filters([
//
diff --git a/app/Models/Bookmaker.php b/app/Models/Bookmaker.php
index 7dc363d2..27b815aa 100644
--- a/app/Models/Bookmaker.php
+++ b/app/Models/Bookmaker.php
@@ -6,5 +6,15 @@ use Illuminate\Database\Eloquent\Model;
class Bookmaker extends Model
{
- //
+ protected $fillable = [
+ 'name',
+ 'icon',
+ 'baid',
+ 'txid',
+ 'txso',
+ 'txot',
+ 'betsapi',
+ 'direct',
+ 'is_active',
+ ];
}
diff --git a/app/Models/ClientBookmaker.php b/app/Models/ClientBookmaker.php
index 8ef356e5..3602c17f 100644
--- a/app/Models/ClientBookmaker.php
+++ b/app/Models/ClientBookmaker.php
@@ -12,7 +12,7 @@ class ClientBookmaker extends Model
'is_active',
];
- public function customer()
+ public function client()
{
return $this->belongsTo(Client::class);
}
diff --git a/app/Models/ClientSport.php b/app/Models/ClientSport.php
new file mode 100644
index 00000000..404ff91d
--- /dev/null
+++ b/app/Models/ClientSport.php
@@ -0,0 +1,24 @@
+belongsTo(Client::class);
+ }
+
+ public function sport()
+ {
+ return $this->belongsTo(Sport::class);
+ }
+}
diff --git a/config/blade-icons.php b/config/blade-icons.php
index db036727..2338c902 100644
--- a/config/blade-icons.php
+++ b/config/blade-icons.php
@@ -17,87 +17,23 @@ return [
'default' => [
- /*
- |-----------------------------------------------------------------
- | Icons Path
- |-----------------------------------------------------------------
- |
- | Provide the relative path from your app root to your SVG icons
- | directory. Icons are loaded recursively so there's no need to
- | list every sub-directory.
- |
- | Relative to the disk root when the disk option is set.
- |
- */
-
'path' => 'resources/svg',
-
- /*
- |-----------------------------------------------------------------
- | Filesystem Disk
- |-----------------------------------------------------------------
- |
- | Optionally, provide a specific filesystem disk to read
- | icons from. When defining a disk, the "path" option
- | starts relatively from the disk root.
- |
- */
-
'disk' => '',
-
- /*
- |-----------------------------------------------------------------
- | Default Prefix
- |-----------------------------------------------------------------
- |
- | This config option allows you to define a default prefix for
- | your icons. The dash separator will be applied automatically
- | to every icon name. It's required and needs to be unique.
- |
- */
-
'prefix' => 'icon',
-
- /*
- |-----------------------------------------------------------------
- | Fallback Icon
- |-----------------------------------------------------------------
- |
- | This config option allows you to define a fallback
- | icon when an icon in this set cannot be found.
- |
- */
-
'fallback' => '',
-
- /*
- |-----------------------------------------------------------------
- | Default Set Classes
- |-----------------------------------------------------------------
- |
- | This config option allows you to define some classes which
- | will be applied by default to all icons within this set.
- |
- */
-
'class' => '',
-
- /*
- |-----------------------------------------------------------------
- | Default Set Attributes
- |-----------------------------------------------------------------
- |
- | This config option allows you to define some attributes which
- | will be applied by default to all icons within this set.
- |
- */
-
'attributes' => [
// 'width' => 50,
// 'height' => 50,
],
],
+ 'bookmaker' => [
+ 'path' => 'resources/bkmsvg',
+ 'disk' => '',
+ 'prefix' => 'bkm',
+ 'fallback' => 'missing',
+ ],
],
diff --git a/database/migrations/2025_05_17_074540_create_bookmakers_table.php b/database/migrations/2025_05_17_074540_create_bookmakers_table.php
index d69c79bd..edfab0e5 100644
--- a/database/migrations/2025_05_17_074540_create_bookmakers_table.php
+++ b/database/migrations/2025_05_17_074540_create_bookmakers_table.php
@@ -19,11 +19,8 @@ return new class extends Migration
$table->integer('txid')->default(0);
$table->boolean('txso')->default(0);
$table->boolean('txot')->default(0);
- $table->boolean('provider_id')->default(0);
- $table->boolean('from_tx_soccer')->default(0);
- $table->boolean('from_tx_other')->default(0);
- $table->boolean('from_betsapi')->default(0);
- $table->boolean('from_direct')->default(0);
+ $table->boolean('betsapi')->default(0);
+ $table->boolean('direct')->default(0);
$table->boolean('is_active')->default(0);
$table->timestamps();
});
diff --git a/database/migrations/2025_05_19_121513_create_client_sports_table.php b/database/migrations/2025_05_19_121513_create_client_sports_table.php
new file mode 100644
index 00000000..9b27d8d3
--- /dev/null
+++ b/database/migrations/2025_05_19_121513_create_client_sports_table.php
@@ -0,0 +1,30 @@
+id();
+ $table->integer('client_id');
+ $table->integer('sport_id');
+ $table->boolean('is_active')->default(0);
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('client_sports');
+ }
+};
diff --git a/database/seeders/BookmakerSeeder.php b/database/seeders/BookmakerSeeder.php
index a75ed0ff..2d6ce5c2 100644
--- a/database/seeders/BookmakerSeeder.php
+++ b/database/seeders/BookmakerSeeder.php
@@ -9,59 +9,60 @@ class BookmakerSeeder extends Seeder
{
public function run(): void
{
- $sql = "INSERT INTO `bookmakers` (`name`, `icon`, `baid`, `txid`, `txso`, `txot`, `is_active`, `provider_id`, `created_at`, `updated_at`)
+ $sql = "INSERT INTO `bookmakers` (`id`, `name`, `icon`, `baid`, `txid`, `txso`, `txot`, `betsapi`, `direct`, `is_active`, `created_at`, `updated_at`)
VALUES
- ('MISSING', NULL, '0', '0', '0', '0', '0', '2', NULL, NULL),
- ('Bet365', 'bet365', '2', '126', '0', '1', '1', '2', NULL, '2025-05-19 09:59:41'),
- ('BWin', 'bwin', '3', '30', '1', '1', '1', '2', NULL, NULL),
- ('BetFair', 'betfair', '4', '110', '1', '0', '1', '2', NULL, NULL),
- ('Betway', 'betway', '5', '340', '0', '0', '0', '2', NULL, NULL),
- ('10Bet', '10bet', '6', '274', '0', '1', '0', '2', NULL, NULL),
- ('Ladbrokes', 'ladbrokes', '7', '17', '0', '1', '1', '2', NULL, NULL),
- ('PlanetWin365', NULL, '8', '627', '0', '0', '0', '2', NULL, NULL),
- ('188Bet', '', '9', '365', '0', '0', '0', '2', NULL, NULL),
- ('UniBet', 'unibet', '10', '6', '1', '1', '1', '2', NULL, NULL),
- ('888Sport', '888sport', '11', '0', '0', '0', '0', '2', NULL, NULL),
- ('CloudBet', NULL, '12', '0', '0', '0', '0', '2', NULL, NULL),
- ('Betsson', 'betsson', '13', '0', '0', '0', '0', '2', NULL, NULL),
- ('Sbobet', 'sbobet', '14', '327', '1', '0', '1', '2', NULL, NULL),
- ('TitanBet', NULL, '15', '0', '0', '0', '0', '2', NULL, NULL),
- ('DafaBet', NULL, '16', '0', '0', '0', '0', '2', NULL, NULL),
- ('BetVictor', NULL, '17', '0', '0', '0', '0', '2', NULL, NULL),
- ('1XBet', NULL, '18', '0', '0', '0', '0', '2', NULL, NULL),
- ('Expekt', 'expekt', '0', '5', '1', '1', '1', '1', NULL, NULL),
- ('Magloo Nigeria', 'magloo-nigeria', '0', '10', '0', '0', '1', '1', NULL, NULL),
- ('Sportingbet', 'sportingbet', '0', '13', '1', '1', '1', '1', NULL, NULL),
- ('Betika', 'betika', '0', '14', '0', '0', '1', '1', NULL, NULL),
- ('Intertops', 'intertops', '0', '15', '0', '0', '1', '1', NULL, NULL),
- ('Magloo Kenia', 'magloo-kenia', '0', '16', '0', '0', '1', '1', NULL, NULL),
- ('Interwetten', 'interwetten', '0', '26', '1', '1', '1', '1', NULL, NULL),
- ('Logispin Nigeria', 'logispin-nigeria', '0', '35', '0', '0', '1', '1', NULL, NULL),
- ('Logispin Colombia', 'logispin-colombia', '0', '36', '0', '0', '1', '1', NULL, NULL),
- ('William Hill', 'willhill', '0', '42', '1', '1', '1', '1', NULL, NULL),
- ('Bet At Home', 'betathome', '0', '49', '0', '1', '1', '1', NULL, NULL),
- ('Pinnacle', 'pinnacle', '0', '83', '1', '1', '1', '1', NULL, NULL),
- ('SNAI', 'snai', '0', '117', '1', '1', '1', '1', NULL, NULL),
- ('Nordicbet', 'nordicbet', '0', '118', '0', '1', '1', '1', NULL, NULL),
- ('Goldbet', 'goldbet', '0', '128', '0', '0', '1', '1', NULL, NULL),
- ('5 Dimes', '5dimes', '0', '234', '1', '0', '1', '1', NULL, NULL),
- ('Matchbook', 'matchbook', '0', '314', '1', '0', '1', '1', NULL, NULL),
- ('Tipico', 'tipico', '0', '363', '0', '1', '1', '1', NULL, NULL),
- ('PartyBets', 'partybets', '0', '380', '1', '0', '1', '1', NULL, NULL),
- ('Eurobet', 'eurobet', '0', '388', '1', '1', '1', '1', NULL, NULL),
- ('BetClick', 'betclick', '0', '395', '1', '0', '1', '1', NULL, NULL),
- ('Bet3000', 'bet3000', '0', '399', '1', '1', '1', '1', NULL, NULL),
- ('Better', 'better', '0', '413', '0', '1', '1', '1', NULL, NULL),
- ('Marathonbet', 'marathonbet', '0', '539', '1', '1', '1', '1', NULL, NULL),
- ('Sisal', 'sisal', '0', '577', '0', '1', '1', '1', NULL, NULL),
- ('Betaland', 'betaland', '0', '625', '1', '0', '1', '1', NULL, NULL),
- ('Bet9ja', 'bet9ja', '0', '658', '0', '0', '1', '1', NULL, NULL),
- ('SportPesa', 'sportpesa', '0', '668', '1', '0', '1', '1', NULL, NULL),
- ('BetKing', 'betking', '0', '823', '1', '1', '1', '1', NULL, NULL),
- ('BetPlay', 'betplay', '0', '824', '1', '0', '1', '1', NULL, NULL),
- ('SportyBet', 'sportybet', '0', '825', '1', '1', '1', '1', NULL, NULL),
- ('WPlay', 'wplay', '0', '827', '1', '0', '1', '1', NULL, NULL),
- ('ColBet', 'colbet', '0', '828', '1', '0', '1', '1', NULL, NULL);";
+ ('1', 'MISSING', NULL, '0', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('2', 'Bet365', 'bet365', '2', '126', '0', '1', '2', '0', '1', NULL, NULL),
+ ('3', 'BWin', 'bwin', '3', '30', '1', '1', '2', '0', '1', NULL, NULL),
+ ('4', 'BetFair', 'betfair', '4', '110', '1', '0', '2', '0', '1', NULL, NULL),
+ ('5', 'Betway', 'betway', '5', '340', '0', '0', '2', '0', '0', NULL, NULL),
+ ('6', '10Bet', '10bet', '6', '274', '0', '1', '2', '0', '0', NULL, NULL),
+ ('7', 'Ladbrokes', 'ladbrokes', '7', '17', '0', '1', '2', '0', '1', NULL, NULL),
+ ('8', 'PlanetWin365', NULL, '8', '627', '0', '0', '2', '0', '0', NULL, NULL),
+ ('9', '188Bet', '', '9', '365', '0', '0', '2', '0', '0', NULL, NULL),
+ ('10', 'UniBet', 'unibet', '10', '6', '1', '1', '2', '0', '1', NULL, NULL),
+ ('11', '888Sport', '888sport', '11', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('12', 'CloudBet', NULL, '12', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('13', 'Betsson', 'betsson', '13', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('14', 'Sbobet', 'sbobet', '14', '327', '1', '0', '2', '0', '1', NULL, NULL),
+ ('15', 'TitanBet', NULL, '15', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('16', 'DafaBet', NULL, '16', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('17', 'BetVictor', NULL, '17', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('18', '1XBet', NULL, '18', '0', '0', '0', '2', '0', '0', NULL, NULL),
+ ('19', 'Expekt', 'expekt', '0', '5', '1', '1', '1', '0', '1', NULL, NULL),
+ ('20', 'Magloo Nigeria', 'magloo-nigeria', '0', '10', '0', '0', '1', '0', '1', NULL, NULL),
+ ('21', 'Sportingbet', 'sportingbet', '0', '13', '1', '1', '1', '0', '1', NULL, NULL),
+ ('22', 'Betika', 'betika', '0', '14', '0', '0', '1', '0', '1', NULL, NULL),
+ ('23', 'Intertops', 'intertops', '0', '15', '0', '0', '1', '0', '1', NULL, NULL),
+ ('24', 'Magloo Kenia', 'magloo-kenia', '0', '16', '0', '0', '1', '0', '1', NULL, NULL),
+ ('25', 'Interwetten', 'interwetten', '0', '26', '1', '1', '1', '0', '1', NULL, NULL),
+ ('26', 'Logispin Nigeria', 'logispin-nigeria', '0', '35', '0', '0', '1', '0', '1', NULL, NULL),
+ ('27', 'Logispin Colombia', 'logispin-colombia', '0', '36', '0', '0', '1', '0', '1', NULL, NULL),
+ ('28', 'William Hill', 'willhill', '0', '42', '1', '1', '1', '0', '1', NULL, NULL),
+ ('29', 'Bet At Home', 'betathome', '0', '49', '0', '1', '1', '0', '1', NULL, NULL),
+ ('30', 'Pinnacle', 'pinnacle', '0', '83', '1', '1', '1', '0', '1', NULL, NULL),
+ ('31', 'SNAI', 'snai', '0', '117', '1', '1', '1', '0', '1', NULL, NULL),
+ ('32', 'Nordicbet', 'nordicbet', '0', '118', '0', '1', '1', '0', '1', NULL, NULL),
+ ('33', 'Goldbet', 'goldbet', '0', '128', '0', '0', '1', '0', '1', NULL, NULL),
+ ('34', '5 Dimes', '5dimes', '0', '234', '1', '0', '1', '0', '1', NULL, NULL),
+ ('35', 'Matchbook', 'matchbook', '0', '314', '1', '0', '1', '0', '1', NULL, NULL),
+ ('36', 'Tipico', 'tipico', '0', '363', '0', '1', '1', '0', '1', NULL, NULL),
+ ('37', 'PartyBets', 'partybets', '0', '380', '1', '0', '1', '0', '1', NULL, NULL),
+ ('38', 'Eurobet', 'eurobet', '0', '388', '1', '1', '1', '0', '1', NULL, NULL),
+ ('39', 'BetClick', 'betclick', '0', '395', '1', '0', '1', '0', '1', NULL, NULL),
+ ('40', 'Bet3000', 'bet3000', '0', '399', '1', '1', '1', '0', '1', NULL, NULL),
+ ('41', 'Better', 'better', '0', '413', '0', '1', '1', '0', '1', NULL, NULL),
+ ('42', 'Marathonbet', 'marathonbet', '0', '539', '1', '1', '1', '0', '1', NULL, NULL),
+ ('43', 'Sisal', 'sisal', '0', '577', '0', '1', '1', '0', '1', NULL, NULL),
+ ('44', 'Betaland', 'betaland', '0', '625', '1', '0', '1', '0', '1', NULL, NULL),
+ ('45', 'Bet9ja', 'bet9ja', '0', '658', '0', '0', '1', '0', '1', NULL, NULL),
+ ('46', 'SportPesa', 'sportpesa', '0', '668', '1', '0', '1', '0', '1', NULL, NULL),
+ ('47', 'BetKing', 'betking', '0', '823', '1', '1', '1', '0', '1', NULL, NULL),
+ ('48', 'BetPlay', 'betplay', '0', '824', '1', '0', '1', '0', '1', NULL, NULL),
+ ('49', 'SportyBet', 'sportybet', '0', '825', '1', '1', '1', '0', '1', NULL, NULL),
+ ('50', 'WPlay', 'wplay', '0', '827', '1', '0', '1', '0', '1', NULL, NULL),
+ ('51', 'ColBet', 'colbet', '0', '828', '1', '0', '1', '0', '1', NULL, NULL);
+";
DB::unprepared($sql);
}
diff --git a/resources/bkmsvg/10bet.svg b/resources/bkmsvg/10bet.svg
new file mode 100644
index 00000000..4cb4c351
--- /dev/null
+++ b/resources/bkmsvg/10bet.svg
@@ -0,0 +1,43 @@
+
+
diff --git a/resources/svg/bet365.svg b/resources/bkmsvg/bet365.svg
similarity index 72%
rename from resources/svg/bet365.svg
rename to resources/bkmsvg/bet365.svg
index f218c339..b7e6e484 100644
--- a/resources/svg/bet365.svg
+++ b/resources/bkmsvg/bet365.svg
@@ -1,49 +1,51 @@
-
diff --git a/resources/bkmsvg/betfair.svg b/resources/bkmsvg/betfair.svg
new file mode 100644
index 00000000..8677a81b
--- /dev/null
+++ b/resources/bkmsvg/betfair.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/resources/bkmsvg/betway.svg b/resources/bkmsvg/betway.svg
new file mode 100644
index 00000000..a65ecdf2
--- /dev/null
+++ b/resources/bkmsvg/betway.svg
@@ -0,0 +1,13 @@
+
diff --git a/resources/bkmsvg/bwin.svg b/resources/bkmsvg/bwin.svg
new file mode 100644
index 00000000..32311dcb
--- /dev/null
+++ b/resources/bkmsvg/bwin.svg
@@ -0,0 +1,18 @@
+
\ No newline at end of file
diff --git a/resources/bkmsvg/ladbrokes.svg b/resources/bkmsvg/ladbrokes.svg
new file mode 100644
index 00000000..70d34d9f
--- /dev/null
+++ b/resources/bkmsvg/ladbrokes.svg
@@ -0,0 +1,87 @@
+
+
+
diff --git a/resources/bkmsvg/missing.svg b/resources/bkmsvg/missing.svg
new file mode 100644
index 00000000..317492f1
--- /dev/null
+++ b/resources/bkmsvg/missing.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/resources/bkmsvg/unibet.svg b/resources/bkmsvg/unibet.svg
new file mode 100644
index 00000000..b0a147e1
--- /dev/null
+++ b/resources/bkmsvg/unibet.svg
@@ -0,0 +1,67 @@
+
+
diff --git a/resources/bookmaker/10bet.jpg b/resources/bookmaker/10bet.jpg
new file mode 100644
index 00000000..af2263ff
Binary files /dev/null and b/resources/bookmaker/10bet.jpg differ
diff --git a/resources/bookmaker/188bet.png b/resources/bookmaker/188bet.png
new file mode 100644
index 00000000..99393cbb
Binary files /dev/null and b/resources/bookmaker/188bet.png differ
diff --git a/resources/bookmaker/1xbet.jpg b/resources/bookmaker/1xbet.jpg
new file mode 100644
index 00000000..291f4738
Binary files /dev/null and b/resources/bookmaker/1xbet.jpg differ
diff --git a/resources/bookmaker/5dimes.png b/resources/bookmaker/5dimes.png
new file mode 100644
index 00000000..99185d7b
Binary files /dev/null and b/resources/bookmaker/5dimes.png differ
diff --git a/resources/bookmaker/bet3000.jpg b/resources/bookmaker/bet3000.jpg
new file mode 100644
index 00000000..a9dab7d5
Binary files /dev/null and b/resources/bookmaker/bet3000.jpg differ
diff --git a/resources/bookmaker/bet365.png b/resources/bookmaker/bet365.png
new file mode 100644
index 00000000..69f9e427
Binary files /dev/null and b/resources/bookmaker/bet365.png differ
diff --git a/resources/bookmaker/bet9ja.png b/resources/bookmaker/bet9ja.png
new file mode 100644
index 00000000..68878418
Binary files /dev/null and b/resources/bookmaker/bet9ja.png differ
diff --git a/resources/bookmaker/betaland.png b/resources/bookmaker/betaland.png
new file mode 100644
index 00000000..04ae9156
Binary files /dev/null and b/resources/bookmaker/betaland.png differ
diff --git a/resources/bookmaker/betathome.png b/resources/bookmaker/betathome.png
new file mode 100644
index 00000000..220b9382
Binary files /dev/null and b/resources/bookmaker/betathome.png differ
diff --git a/resources/bookmaker/betclick.png b/resources/bookmaker/betclick.png
new file mode 100644
index 00000000..5820c4c9
Binary files /dev/null and b/resources/bookmaker/betclick.png differ
diff --git a/resources/bookmaker/betfair.png b/resources/bookmaker/betfair.png
new file mode 100644
index 00000000..5ac7fa17
Binary files /dev/null and b/resources/bookmaker/betfair.png differ
diff --git a/resources/bookmaker/betfairy.png b/resources/bookmaker/betfairy.png
new file mode 100644
index 00000000..3703e672
Binary files /dev/null and b/resources/bookmaker/betfairy.png differ
diff --git a/resources/bookmaker/betika.png b/resources/bookmaker/betika.png
new file mode 100644
index 00000000..b4d9bf75
Binary files /dev/null and b/resources/bookmaker/betika.png differ
diff --git a/resources/bookmaker/betking.png b/resources/bookmaker/betking.png
new file mode 100644
index 00000000..87c003cd
Binary files /dev/null and b/resources/bookmaker/betking.png differ
diff --git a/resources/bookmaker/betking2.png b/resources/bookmaker/betking2.png
new file mode 100644
index 00000000..d737defc
Binary files /dev/null and b/resources/bookmaker/betking2.png differ
diff --git a/resources/bookmaker/betplay.jpg b/resources/bookmaker/betplay.jpg
new file mode 100644
index 00000000..fc1b85d8
Binary files /dev/null and b/resources/bookmaker/betplay.jpg differ
diff --git a/resources/bookmaker/betplay.png b/resources/bookmaker/betplay.png
new file mode 100644
index 00000000..e36f34d6
Binary files /dev/null and b/resources/bookmaker/betplay.png differ
diff --git a/resources/bookmaker/betsapi.png b/resources/bookmaker/betsapi.png
new file mode 100644
index 00000000..df352c63
Binary files /dev/null and b/resources/bookmaker/betsapi.png differ
diff --git a/resources/bookmaker/better.jpg b/resources/bookmaker/better.jpg
new file mode 100644
index 00000000..b9d7a0c6
Binary files /dev/null and b/resources/bookmaker/better.jpg differ
diff --git a/resources/bookmaker/bwin.jpg b/resources/bookmaker/bwin.jpg
new file mode 100644
index 00000000..0d4ccfdc
Binary files /dev/null and b/resources/bookmaker/bwin.jpg differ
diff --git a/resources/bookmaker/colbet.png b/resources/bookmaker/colbet.png
new file mode 100644
index 00000000..c51c72e0
Binary files /dev/null and b/resources/bookmaker/colbet.png differ
diff --git a/resources/bookmaker/eurobet.png b/resources/bookmaker/eurobet.png
new file mode 100644
index 00000000..9638deae
Binary files /dev/null and b/resources/bookmaker/eurobet.png differ
diff --git a/resources/bookmaker/expekt.png b/resources/bookmaker/expekt.png
new file mode 100644
index 00000000..8f25c142
Binary files /dev/null and b/resources/bookmaker/expekt.png differ
diff --git a/resources/bookmaker/goldbet.png b/resources/bookmaker/goldbet.png
new file mode 100644
index 00000000..b0104cfd
Binary files /dev/null and b/resources/bookmaker/goldbet.png differ
diff --git a/resources/bookmaker/icon-template.afphoto b/resources/bookmaker/icon-template.afphoto
new file mode 100644
index 00000000..6481cb64
Binary files /dev/null and b/resources/bookmaker/icon-template.afphoto differ
diff --git a/resources/bookmaker/intertops.png b/resources/bookmaker/intertops.png
new file mode 100644
index 00000000..57ea0937
Binary files /dev/null and b/resources/bookmaker/intertops.png differ
diff --git a/resources/bookmaker/interwetten.png b/resources/bookmaker/interwetten.png
new file mode 100644
index 00000000..ce6092e6
Binary files /dev/null and b/resources/bookmaker/interwetten.png differ
diff --git a/resources/bookmaker/ladbrokes.png b/resources/bookmaker/ladbrokes.png
new file mode 100644
index 00000000..6d9e6514
Binary files /dev/null and b/resources/bookmaker/ladbrokes.png differ
diff --git a/resources/bookmaker/logispin-colombia.png b/resources/bookmaker/logispin-colombia.png
new file mode 100644
index 00000000..7b9f74af
Binary files /dev/null and b/resources/bookmaker/logispin-colombia.png differ
diff --git a/resources/bookmaker/logispin-colombia2.png b/resources/bookmaker/logispin-colombia2.png
new file mode 100644
index 00000000..1192c2ef
Binary files /dev/null and b/resources/bookmaker/logispin-colombia2.png differ
diff --git a/resources/bookmaker/logispin-nigeria.png b/resources/bookmaker/logispin-nigeria.png
new file mode 100644
index 00000000..63f91eea
Binary files /dev/null and b/resources/bookmaker/logispin-nigeria.png differ
diff --git a/resources/bookmaker/magloo-kenia.png b/resources/bookmaker/magloo-kenia.png
new file mode 100644
index 00000000..28d8821a
Binary files /dev/null and b/resources/bookmaker/magloo-kenia.png differ
diff --git a/resources/bookmaker/magloo-nigeria.png b/resources/bookmaker/magloo-nigeria.png
new file mode 100644
index 00000000..a734acd0
Binary files /dev/null and b/resources/bookmaker/magloo-nigeria.png differ
diff --git a/resources/bookmaker/magloo.png b/resources/bookmaker/magloo.png
new file mode 100644
index 00000000..b250faec
Binary files /dev/null and b/resources/bookmaker/magloo.png differ
diff --git a/resources/bookmaker/marathonbet.png b/resources/bookmaker/marathonbet.png
new file mode 100644
index 00000000..c836f130
Binary files /dev/null and b/resources/bookmaker/marathonbet.png differ
diff --git a/resources/bookmaker/matchbook.png b/resources/bookmaker/matchbook.png
new file mode 100644
index 00000000..39fafde5
Binary files /dev/null and b/resources/bookmaker/matchbook.png differ
diff --git a/resources/bookmaker/nordicbet.png b/resources/bookmaker/nordicbet.png
new file mode 100644
index 00000000..3d21367a
Binary files /dev/null and b/resources/bookmaker/nordicbet.png differ
diff --git a/resources/bookmaker/nuhodds.png b/resources/bookmaker/nuhodds.png
new file mode 100644
index 00000000..d5878851
Binary files /dev/null and b/resources/bookmaker/nuhodds.png differ
diff --git a/resources/bookmaker/partybets.jpg b/resources/bookmaker/partybets.jpg
new file mode 100644
index 00000000..8d179112
Binary files /dev/null and b/resources/bookmaker/partybets.jpg differ
diff --git a/resources/bookmaker/pinnacle-dark.png b/resources/bookmaker/pinnacle-dark.png
new file mode 100644
index 00000000..49f4de6f
Binary files /dev/null and b/resources/bookmaker/pinnacle-dark.png differ
diff --git a/resources/bookmaker/pinnacle.png b/resources/bookmaker/pinnacle.png
new file mode 100644
index 00000000..d1574aca
Binary files /dev/null and b/resources/bookmaker/pinnacle.png differ
diff --git a/resources/bookmaker/sbobet.jpg b/resources/bookmaker/sbobet.jpg
new file mode 100644
index 00000000..b6bec142
Binary files /dev/null and b/resources/bookmaker/sbobet.jpg differ
diff --git a/resources/bookmaker/sisal.png b/resources/bookmaker/sisal.png
new file mode 100644
index 00000000..f0a608f1
Binary files /dev/null and b/resources/bookmaker/sisal.png differ
diff --git a/resources/bookmaker/sisaldemo.png b/resources/bookmaker/sisaldemo.png
new file mode 100644
index 00000000..44bd6de2
Binary files /dev/null and b/resources/bookmaker/sisaldemo.png differ
diff --git a/resources/bookmaker/snai.png b/resources/bookmaker/snai.png
new file mode 100644
index 00000000..f18bf50a
Binary files /dev/null and b/resources/bookmaker/snai.png differ
diff --git a/resources/bookmaker/sportimages.afphoto b/resources/bookmaker/sportimages.afphoto
new file mode 100644
index 00000000..49072bf3
Binary files /dev/null and b/resources/bookmaker/sportimages.afphoto differ
diff --git a/resources/bookmaker/sportingbet.png b/resources/bookmaker/sportingbet.png
new file mode 100644
index 00000000..3434cdd0
Binary files /dev/null and b/resources/bookmaker/sportingbet.png differ
diff --git a/resources/bookmaker/sportpesa.png b/resources/bookmaker/sportpesa.png
new file mode 100644
index 00000000..6694eee0
Binary files /dev/null and b/resources/bookmaker/sportpesa.png differ
diff --git a/resources/bookmaker/sportybet.png b/resources/bookmaker/sportybet.png
new file mode 100644
index 00000000..26d88582
Binary files /dev/null and b/resources/bookmaker/sportybet.png differ
diff --git a/resources/bookmaker/tipico.png b/resources/bookmaker/tipico.png
new file mode 100644
index 00000000..c0409e3d
Binary files /dev/null and b/resources/bookmaker/tipico.png differ
diff --git a/resources/bookmaker/txodds.png b/resources/bookmaker/txodds.png
new file mode 100644
index 00000000..957b4b4a
Binary files /dev/null and b/resources/bookmaker/txodds.png differ
diff --git a/resources/bookmaker/unibet.jpg b/resources/bookmaker/unibet.jpg
new file mode 100644
index 00000000..0ace8076
Binary files /dev/null and b/resources/bookmaker/unibet.jpg differ
diff --git a/resources/bookmaker/willhill.png b/resources/bookmaker/willhill.png
new file mode 100644
index 00000000..d18372ca
Binary files /dev/null and b/resources/bookmaker/willhill.png differ
diff --git a/resources/bookmaker/wplay.jpg b/resources/bookmaker/wplay.jpg
new file mode 100644
index 00000000..05edb576
Binary files /dev/null and b/resources/bookmaker/wplay.jpg differ