diff --git a/app/Filament/Clusters/Settings/SettingsCluster.php b/app/Filament/Clusters/Settings/SettingsCluster.php index 1bd06f8c..d3630503 100644 --- a/app/Filament/Clusters/Settings/SettingsCluster.php +++ b/app/Filament/Clusters/Settings/SettingsCluster.php @@ -8,5 +8,5 @@ use Filament\Support\Icons\Heroicon; class SettingsCluster extends Cluster { - protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedSquares2x2; + protected static string|BackedEnum|null $navigationIcon = Heroicon::AdjustmentsHorizontal; } diff --git a/app/Filament/Resources/Bettypes/BettypeResource.php b/app/Filament/Resources/Bettypes/BettypeResource.php index 8cc69a26..84480060 100644 --- a/app/Filament/Resources/Bettypes/BettypeResource.php +++ b/app/Filament/Resources/Bettypes/BettypeResource.php @@ -23,13 +23,10 @@ class BettypeResource extends Resource protected static string|\UnitEnum|null $navigationGroup = 'Static Data'; - protected static ?string $navigationLabel = 'Bettype'; - - protected static ?string $modelLabel = 'Bettype'; - - protected static ?string $title = 'Bettype'; - - protected static ?string $pluralModelLabel = 'Bettypes'; + public static function canViewAny(): bool + { + return auth()->user()->super_admin == 1; + } public static function form(Schema $schema): Schema { diff --git a/app/Filament/Resources/Events/EventResource.php b/app/Filament/Resources/Events/EventResource.php index eeedf2b8..3b41dea5 100644 --- a/app/Filament/Resources/Events/EventResource.php +++ b/app/Filament/Resources/Events/EventResource.php @@ -6,6 +6,7 @@ use App\Filament\Resources\Events\Pages\ListEvents; use App\Filament\Resources\Events\Schemas\EventForm; use App\Filament\Resources\Events\Tables\EventsTable; use App\Models\Event; +use App\Models\Multiline; use Carbon\Carbon; use Filament\Resources\Resource; use Filament\Schemas\Schema; @@ -57,14 +58,24 @@ class EventResource extends Resource public static function getNavigationBadge(): ?string { - return parent::getEloquentQuery()->withoutGlobalScopes()->where('starttime', '>', Carbon::now())->count(); + return parent::getEloquentQuery() + ->where('sport_id', auth()->user()->sport_id) + ->where('starttime', '>', Carbon::now()) + ->count(); } public static function getEloquentQuery(): Builder { + // $_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id) + // ->where('client_id', auth()->user()->client_id) + // ->where('bettype_id', 1) + // ->where('matchpart_id', 1) + // ->pluck('bookmaker_id') + // ->toArray(); + return parent::getEloquentQuery() + // ->join('odds_3ways', 'odds_3ways.event_id', '=', 'events.id') ->where('starttime', '>', Carbon::now()) - ->where('sport_id', auth()->user()->sport_id) - ->withoutGlobalScopes()->with('odds_3way'); + ->where('sport_id', auth()->user()->sport_id); } } diff --git a/app/Filament/Resources/Events/Tables/EventsTable.php b/app/Filament/Resources/Events/Tables/EventsTable.php index de48ca71..ddb06ff8 100644 --- a/app/Filament/Resources/Events/Tables/EventsTable.php +++ b/app/Filament/Resources/Events/Tables/EventsTable.php @@ -26,7 +26,7 @@ class EventsTable ->width('1rem') ->size(IconSize::ExtraLarge) ->icon(fn ($record) => $record->sport->icon) - ->tooltip(fn ($record) => $record->txodds_id), + ->tooltip(fn ($record) => $record->id), TextColumn::make('txodds_id')->searchable()->label('Match Id')->badge()->copyable(), TextColumn::make('starttime') ->label('Start') @@ -41,7 +41,8 @@ class EventsTable ->description(fn ($record) => $record->competition_group->name), TextColumn::make('home.name')->alignRight()->searchable(), TextColumn::make('away.name')->searchable(), - Odds3Way::make('3way')->label('1 X 2')->alignCenter(), + + Odds3Way::make('odds_3way')->label('Market 1X2'), ]) ->filters([ // diff --git a/app/Filament/Resources/Multilines/MultilineResource.php b/app/Filament/Resources/Multilines/MultilineResource.php new file mode 100644 index 00000000..62ce25bb --- /dev/null +++ b/app/Filament/Resources/Multilines/MultilineResource.php @@ -0,0 +1,42 @@ + ListMultilines::route('/'), + ]; + } +} diff --git a/app/Filament/Resources/Multilines/Pages/CreateMultiline.php b/app/Filament/Resources/Multilines/Pages/CreateMultiline.php new file mode 100644 index 00000000..8c017b17 --- /dev/null +++ b/app/Filament/Resources/Multilines/Pages/CreateMultiline.php @@ -0,0 +1,11 @@ +createAnother(false) + ->hidden(! auth()->user()->super_admin), + ]; + } +} diff --git a/app/Filament/Resources/Multilines/Schemas/MultilineForm.php b/app/Filament/Resources/Multilines/Schemas/MultilineForm.php new file mode 100644 index 00000000..d4ab078d --- /dev/null +++ b/app/Filament/Resources/Multilines/Schemas/MultilineForm.php @@ -0,0 +1,36 @@ +components([ + Select::make('sport_id') + ->live() + ->options(Sport::where('is_active', 1)->pluck('name', 'id')) + ->preload(), + Select::make('matchpart_id') + ->options(Matchpart::where('is_active', 1)->pluck('name', 'id')) + ->preload(), + Select::make('bettype_id') + ->options(fn (Get $get) => Bettype::where('sport_id', $get('sport_id'))->whereIn('bettype_id', self::$bettypes)->pluck('name', 'bettype_id')), + Select::make('bookmaker_id') + ->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid')) + ->preload() + ->searchable(), + ]); + } +} diff --git a/app/Filament/Resources/Multilines/Tables/MultilinesTable.php b/app/Filament/Resources/Multilines/Tables/MultilinesTable.php new file mode 100644 index 00000000..d3c48660 --- /dev/null +++ b/app/Filament/Resources/Multilines/Tables/MultilinesTable.php @@ -0,0 +1,48 @@ +reorderRecordsTriggerAction( + fn (Action $action, bool $isReordering) => $action + ->button() + ->label($isReordering ? 'Disable reordering' : 'Enable reordering'), + ) + ->reorderable('sort') + ->columns([ + IconColumn::make('sport.icon') + ->label('') + ->width('1rem') + ->icon(function ($record): string { + return $record->sport->icon; + }), + TextColumn::make('sport.name'), + TextColumn::make('matchpart.name'), + TextColumn::make('bettype.name'), + TextColumn::make('bookmaker.name'), + BookmakerIcon::make('bookmaker.icon')->label('Icon'), + ]) + ->filters([ + // + ]) + ->recordActions([ + EditAction::make() + ->mutateDataUsing(function (array $data): array { + $data['client_id'] = auth()->user()->client_id; + + return $data; + }), + ]); + } +} diff --git a/app/Filament/Tables/Columns/BookmakerIcon.php b/app/Filament/Tables/Columns/BookmakerIcon.php new file mode 100644 index 00000000..7772a91f --- /dev/null +++ b/app/Filament/Tables/Columns/BookmakerIcon.php @@ -0,0 +1,10 @@ +belongsTo(Sport::class); } + + public function matchpart() + { + return $this->belongsTo(Matchpart::class); + } } diff --git a/app/Models/Event.php b/app/Models/Event.php index b564fe06..94abc53d 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -52,6 +52,15 @@ class Event extends Model public function odds_3way() { - return $this->hasMany(Odds3way::class); + $_bookmaker = Multiline::where('sport_id', auth()->user()->sport_id) + ->where('client_id', auth()->user()->client_id) + ->where('bettype_id', 1) + ->where('matchpart_id', 1) + ->pluck('bookmaker_id'); + + return $this->hasMany(Odds3way::class, 'event_id', 'id') + ->join('multilines', 'multilines.bookmaker_id', 'odds_3ways.bookmaker_id') + ->orderBy('multilines.sort'); + // return $this->hasMany(Odds3way::class, 'event_id', 'id')->whereIn('bookmaker_id', $_bookmaker); } } diff --git a/app/Models/Matchpart.php b/app/Models/Matchpart.php new file mode 100644 index 00000000..32758a46 --- /dev/null +++ b/app/Models/Matchpart.php @@ -0,0 +1,7 @@ +belongsTo(Sport::class); + } + + public function matchpart() + { + return $this->belongsTo(Matchpart::class); + } + + public function bettype() + { + return $this->belongsTo(Bettype::class); + } + + public function bookmaker() + { + return $this->belongsTo(Bookmaker::class, 'bookmaker_id', 'txid'); + } +} diff --git a/app/Models/Odds3way.php b/app/Models/Odds3way.php index af72b46c..eef7e74f 100644 --- a/app/Models/Odds3way.php +++ b/app/Models/Odds3way.php @@ -35,7 +35,7 @@ class Odds3way extends Model public function bookmaker() { - return $this->belongsTo(Bookmaker::class); + return $this->belongsTo(Bookmaker::class, 'bookmaker_id', 'txid'); } public function event() diff --git a/app/Utilities/BkmIconMap.php b/app/Utilities/BkmIconMap.php new file mode 100644 index 00000000..dfe9624d --- /dev/null +++ b/app/Utilities/BkmIconMap.php @@ -0,0 +1,15 @@ +icon.png"); + } else { + return asset('storage/bookmaker-icons/missing.png'); + } + } +} diff --git a/app/Utilities/BookmakerIcon.php b/app/Utilities/BookmakerIcon.php deleted file mode 100644 index dc87bf76..00000000 --- a/app/Utilities/BookmakerIcon.php +++ /dev/null @@ -1,82 +0,0 @@ - 'App\\Filament\\Resources\\GroupFilters\\Pages\\CreateGroupFilter', 'app.filament.resources.group-filters.pages.edit-group-filter' => 'App\\Filament\\Resources\\GroupFilters\\Pages\\EditGroupFilter', 'app.filament.resources.group-filters.pages.list-group-filters' => 'App\\Filament\\Resources\\GroupFilters\\Pages\\ListGroupFilters', + 'app.filament.resources.multilines.pages.create-multiline' => 'App\\Filament\\Resources\\Multilines\\Pages\\CreateMultiline', + 'app.filament.resources.multilines.pages.edit-multiline' => 'App\\Filament\\Resources\\Multilines\\Pages\\EditMultiline', + 'app.filament.resources.multilines.pages.list-multilines' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines', 'app.filament.resources.providers.pages.create-provider' => 'App\\Filament\\Resources\\Providers\\Pages\\CreateProvider', 'app.filament.resources.providers.pages.edit-provider' => 'App\\Filament\\Resources\\Providers\\Pages\\EditProvider', 'app.filament.resources.providers.pages.list-providers' => 'App\\Filament\\Resources\\Providers\\Pages\\ListProviders', @@ -77,6 +80,10 @@ 1 => 'App\\Filament\\Resources\\ElementFilters\\ElementFilterResource', 2 => 'App\\Filament\\Resources\\GroupFilters\\GroupFilterResource', ), + 'App\\Filament\\Clusters\\Settings\\SettingsCluster' => + array ( + 0 => 'App\\Filament\\Resources\\Multilines\\MultilineResource', + ), ), 'clusterDirectories' => array ( @@ -112,6 +119,7 @@ '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/ElementFilters/ElementFilterResource.php' => 'App\\Filament\\Resources\\ElementFilters\\ElementFilterResource', '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Events/EventResource.php' => 'App\\Filament\\Resources\\Events\\EventResource', '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/GroupFilters/GroupFilterResource.php' => 'App\\Filament\\Resources\\GroupFilters\\GroupFilterResource', + '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Multilines/MultilineResource.php' => 'App\\Filament\\Resources\\Multilines\\MultilineResource', '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Providers/ProviderResource.php' => 'App\\Filament\\Resources\\Providers\\ProviderResource', '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Sports/SportResource.php' => 'App\\Filament\\Resources\\Sports\\SportResource', '/Users/salam/Sites/nuhodds_fi4/app/Filament/Resources/Supervisors/SupervisorResource.php' => 'App\\Filament\\Resources\\Supervisors\\SupervisorResource', diff --git a/bootstrap/cache/routes-v7.php b/bootstrap/cache/routes-v7.php index 108f7cbf..52265ab8 100644 --- a/bootstrap/cache/routes-v7.php +++ b/bootstrap/cache/routes-v7.php @@ -426,6 +426,26 @@ app('router')->setCompiledRoutes( 6 => NULL, ), ), + '/settings/multilines' => + array ( + 0 => + array ( + 0 => + array ( + '_route' => 'filament.admin.settings.resources.multilines.index', + ), + 1 => NULL, + 2 => + array ( + 'GET' => 0, + 'HEAD' => 1, + ), + 3 => NULL, + 4 => false, + 5 => false, + 6 => NULL, + ), + ), '/administrator/providers' => array ( 0 => @@ -531,7 +551,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::28iQGrHtfygW5Ygm', + '_route' => 'generated::utvoDsmittGErgFU', ), 1 => NULL, 2 => @@ -551,7 +571,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::9rHVcl6FtqTFiiV5', + '_route' => 'generated::UKTOkgCt6yIOAG79', ), 1 => NULL, 2 => @@ -590,7 +610,7 @@ app('router')->setCompiledRoutes( array ( 0 => array ( - '_route' => 'generated::Pg2kZhzUQX5UOGsb', + '_route' => 'generated::qXNgDXoLuA95HjrL', ), 1 => NULL, 2 => @@ -2279,6 +2299,60 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), + 'filament.admin.settings.resources.multilines.index' => + array ( + 'methods' => + array ( + 0 => 'GET', + 1 => 'HEAD', + ), + 'uri' => 'settings/multilines', + 'action' => + array ( + 'domain' => NULL, + 'middleware' => + array ( + 0 => 'panel:admin', + 1 => 'Illuminate\\Cookie\\Middleware\\EncryptCookies', + 2 => 'Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse', + 3 => 'Illuminate\\Session\\Middleware\\StartSession', + 4 => 'Filament\\Http\\Middleware\\AuthenticateSession', + 5 => 'Illuminate\\View\\Middleware\\ShareErrorsFromSession', + 6 => 'Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken', + 7 => 'Illuminate\\Routing\\Middleware\\SubstituteBindings', + 8 => 'Filament\\Http\\Middleware\\DisableBladeIconComponents', + 9 => 'Filament\\Http\\Middleware\\DispatchServingFilamentEvent', + 10 => 'Filament\\Http\\Middleware\\Authenticate', + 11 => 'Joaopaulolndev\\FilamentEditProfile\\Http\\Middleware\\SetUserThemeColor:web', + 12 => 'Joaopaulolndev\\FilamentEditProfile\\Http\\Middleware\\SetUserLocale:web', + 13 => 'verified:filament.admin.auth.email-verification.prompt', + ), + 'excluded_middleware' => + array ( + ), + 'uses' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines@__invoke', + 'controller' => 'App\\Filament\\Resources\\Multilines\\Pages\\ListMultilines', + 'as' => 'filament.admin.settings.resources.multilines.index', + 'namespace' => NULL, + 'prefix' => 'settings/multilines', + 'where' => + array ( + ), + ), + 'fallback' => false, + 'defaults' => + array ( + ), + 'wheres' => + array ( + ), + 'bindingFields' => + array ( + ), + 'lockSeconds' => NULL, + 'waitSeconds' => NULL, + 'withTrashed' => false, + ), 'filament.admin.administrator.resources.providers.index' => array ( 'methods' => @@ -2526,7 +2600,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::28iQGrHtfygW5Ygm' => + 'generated::utvoDsmittGErgFU' => array ( 'methods' => array ( @@ -2538,7 +2612,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@returnJavaScriptAsFile', - 'as' => 'generated::28iQGrHtfygW5Ygm', + 'as' => 'generated::utvoDsmittGErgFU', ), 'fallback' => false, 'defaults' => @@ -2554,7 +2628,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::9rHVcl6FtqTFiiV5' => + 'generated::UKTOkgCt6yIOAG79' => array ( 'methods' => array ( @@ -2566,7 +2640,7 @@ app('router')->setCompiledRoutes( array ( 'uses' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', 'controller' => 'Livewire\\Mechanisms\\FrontendAssets\\FrontendAssets@maps', - 'as' => 'generated::9rHVcl6FtqTFiiV5', + 'as' => 'generated::UKTOkgCt6yIOAG79', ), 'fallback' => false, 'defaults' => @@ -2637,7 +2711,7 @@ app('router')->setCompiledRoutes( 'waitSeconds' => NULL, 'withTrashed' => false, ), - 'generated::Pg2kZhzUQX5UOGsb' => + 'generated::qXNgDXoLuA95HjrL' => array ( 'methods' => array ( @@ -2665,8 +2739,8 @@ app('router')->setCompiledRoutes( return response(\\Illuminate\\Support\\Facades\\View::file(\'/Users/salam/Sites/nuhodds_fi4/vendor/laravel/framework/src/Illuminate/Foundation/Configuration\'.\'/../resources/health-up.blade.php\', [ \'exception\' => $exception, ]), status: $exception ? 500 : 200); - }";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000000dfc0000000000000000";}}', - 'as' => 'generated::Pg2kZhzUQX5UOGsb', + }";s:5:"scope";s:54:"Illuminate\\Foundation\\Configuration\\ApplicationBuilder";s:4:"this";N;s:4:"self";s:32:"0000000000000e030000000000000000";}}', + 'as' => 'generated::qXNgDXoLuA95HjrL', ), 'fallback' => false, 'defaults' => @@ -2698,7 +2772,7 @@ app('router')->setCompiledRoutes( $config, $isProduction ))($request, $path); - }";s:5:"scope";s:47:"Illuminate\\Filesystem\\FilesystemServiceProvider";s:4:"this";N;s:4:"self";s:32:"0000000000000df20000000000000000";}}', + }";s:5:"scope";s:47:"Illuminate\\Filesystem\\FilesystemServiceProvider";s:4:"this";N;s:4:"self";s:32:"0000000000000df90000000000000000";}}', 'as' => 'storage.local', ), 'fallback' => false, diff --git a/database/migrations/2025_05_26_124609_create_multilines_table.php b/database/migrations/2025_05_26_124609_create_multilines_table.php index 3c58fa74..9b7bc0a1 100644 --- a/database/migrations/2025_05_26_124609_create_multilines_table.php +++ b/database/migrations/2025_05_26_124609_create_multilines_table.php @@ -13,10 +13,12 @@ return new class extends Migration { Schema::create('multilines', function (Blueprint $table) { $table->id(); + $table->integer('sport_id'); $table->integer('client_id')->default(0); $table->integer('bettype_id')->default(0); $table->integer('bookmaker_id')->default(0); - $table->integer('sort-order')->default(0); + $table->integer('matchpart_id')->default(0); + $table->integer('sort')->default(0); $table->timestamps(); }); } diff --git a/database/migrations/2025_12_12_085525_create_matchparts_table.php b/database/migrations/2025_12_12_085525_create_matchparts_table.php new file mode 100644 index 00000000..3005f10e --- /dev/null +++ b/database/migrations/2025_12_12_085525_create_matchparts_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('short'); + $table->string('name'); + $table->string('color'); + $table->boolean('is_active')->default(0); + $table->integer('soccer')->default(0); + $table->integer('icehockey')->default(0); + $table->integer('basketball')->default(0); + $table->integer('tennis')->default(0); + $table->integer('handball')->default(0); + $table->integer('rugby')->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('matchparts'); + } +}; diff --git a/database/seeders/MatchpartSeeder.php b/database/seeders/MatchpartSeeder.php new file mode 100644 index 00000000..f7b988a2 --- /dev/null +++ b/database/seeders/MatchpartSeeder.php @@ -0,0 +1,37 @@ + { var re = Object.create, x = Object.defineProperty, ne = Object.getPrototypeOf, ie = Object.prototype.hasOwnProperty, ae = Object.getOwnPropertyNames, se = Object.getOwnPropertyDescriptor, oe = t => x(t, "__esModule", { value: !0 }), le = (t, n) => () => (n || (n = { exports: {} }, t(n.exports, n)), n.exports), fe = (t, n, i) => { if (n && typeof n == "object" || typeof n == "function") for (let l of ae(n)) !ie.call(t, l) && l !== "default" && x(t, l, { get: () => n[l], enumerable: !(i = se(n, l)) || i.enumerable }); return t }, ue = t => fe(oe(x(t != null ? re(ne(t)) : {}, "default", t && t.__esModule && "default" in t ? { get: () => t.default, enumerable: !0 } : { value: t, enumerable: !0 })), t), pe = le((t, n) => { (function (i, l, y) { if (!i) return; for (var c = { 8: "backspace", 9: "tab", 13: "enter", 16: "shift", 17: "ctrl", 18: "alt", 20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down", 45: "ins", 46: "del", 91: "meta", 93: "meta", 224: "meta" }, _ = { 106: "*", 107: "+", 109: "-", 110: ".", 111: "/", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'" }, g = { "~": "`", "!": "1", "@": "2", "#": "3", $: "4", "%": "5", "^": "6", "&": "7", "*": "8", "(": "9", ")": "0", _: "-", "+": "=", ":": ";", '"': "'", "<": ",", ">": ".", "?": "/", "|": "\\" }, G = { option: "alt", command: "meta", return: "enter", escape: "esc", plus: "+", mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "meta" : "ctrl" }, A, b = 1; b < 20; ++b)c[111 + b] = "f" + b; for (b = 0; b <= 9; ++b)c[b + 96] = b.toString(); function P(e, r, s) { if (e.addEventListener) { e.addEventListener(r, s, !1); return } e.attachEvent("on" + r, s) } function T(e) { if (e.type == "keypress") { var r = String.fromCharCode(e.which); return e.shiftKey || (r = r.toLowerCase()), r } return c[e.which] ? c[e.which] : _[e.which] ? _[e.which] : String.fromCharCode(e.which).toLowerCase() } function J(e, r) { return e.sort().join(",") === r.sort().join(",") } function H(e) { var r = []; return e.shiftKey && r.push("shift"), e.altKey && r.push("alt"), e.ctrlKey && r.push("ctrl"), e.metaKey && r.push("meta"), r } function F(e) { if (e.preventDefault) { e.preventDefault(); return } e.returnValue = !1 } function B(e) { if (e.stopPropagation) { e.stopPropagation(); return } e.cancelBubble = !0 } function C(e) { return e == "shift" || e == "ctrl" || e == "alt" || e == "meta" } function X() { if (!A) { A = {}; for (var e in c) e > 95 && e < 112 || c.hasOwnProperty(e) && (A[c[e]] = e) } return A } function Y(e, r, s) { return s || (s = X()[e] ? "keydown" : "keypress"), s == "keypress" && r.length && (s = "keydown"), s } function Q(e) { return e === "+" ? ["+"] : (e = e.replace(/\+{2}/g, "+plus"), e.split("+")) } function R(e, r) { var s, h, k, S = []; for (s = Q(e), k = 0; k < s.length; ++k)h = s[k], G[h] && (h = G[h]), r && r != "keypress" && g[h] && (h = g[h], S.push("shift")), C(h) && S.push(h); return r = Y(h, S, r), { key: h, modifiers: S, action: r } } function I(e, r) { return e === null || e === l ? !1 : e === r ? !0 : I(e.parentNode, r) } function v(e) { var r = this; if (e = e || l, !(r instanceof v)) return new v(e); r.target = e, r._callbacks = {}, r._directMap = {}; var s = {}, h, k = !1, S = !1, D = !1; function E(a) { a = a || {}; var f = !1, p; for (p in s) { if (a[p]) { f = !0; continue } s[p] = 0 } f || (D = !1) } function z(a, f, p, o, d, m) { var u, w, M = [], O = p.type; if (!r._callbacks[a]) return []; for (O == "keyup" && C(a) && (f = [a]), u = 0; u < r._callbacks[a].length; ++u)if (w = r._callbacks[a][u], !(!o && w.seq && s[w.seq] != w.level) && O == w.action && (O == "keypress" && !p.metaKey && !p.ctrlKey || J(f, w.modifiers))) { var ee = !o && w.combo == d, te = o && w.seq == o && w.level == m; (ee || te) && r._callbacks[a].splice(u, 1), M.push(w) } return M } function L(a, f, p, o) { r.stopCallback(f, f.target || f.srcElement, p, o) || a(f, p) === !1 && (F(f), B(f)) } r._handleKey = function (a, f, p) { var o = z(a, f, p), d, m = {}, u = 0, w = !1; for (d = 0; d < o.length; ++d)o[d].seq && (u = Math.max(u, o[d].level)); for (d = 0; d < o.length; ++d) { if (o[d].seq) { if (o[d].level != u) continue; w = !0, m[o[d].seq] = 1, L(o[d].callback, p, o[d].combo, o[d].seq); continue } w || L(o[d].callback, p, o[d].combo) } var M = p.type == "keypress" && S; p.type == D && !C(a) && !M && E(m), S = w && p.type == "keydown" }; function K(a) { typeof a.which != "number" && (a.which = a.keyCode); var f = T(a); if (f) { if (a.type == "keyup" && k === f) { k = !1; return } r.handleKey(f, H(a), a) } } function Z() { clearTimeout(h), h = setTimeout(E, 1e3) } function $(a, f, p, o) { s[a] = 0; function d(O) { return function () { D = O, ++s[a], Z() } } function m(O) { L(p, O, a), o !== "keyup" && (k = T(O)), setTimeout(E, 10) } for (var u = 0; u < f.length; ++u) { var w = u + 1 === f.length, M = w ? m : d(o || R(f[u + 1]).action); N(f[u], M, o, a, u) } } function N(a, f, p, o, d) { r._directMap[a + ":" + p] = f, a = a.replace(/\s+/g, " "); var m = a.split(" "), u; if (m.length > 1) { $(a, m, f, p); return } u = R(a, p), r._callbacks[u.key] = r._callbacks[u.key] || [], z(u.key, u.modifiers, { type: u.action }, o, a, d), r._callbacks[u.key][o ? "unshift" : "push"]({ callback: f, modifiers: u.modifiers, action: u.action, seq: o, level: d, combo: a }) } r._bindMultiple = function (a, f, p) { for (var o = 0; o < a.length; ++o)N(a[o], f, p) }, P(e, "keypress", K), P(e, "keydown", K), P(e, "keyup", K) } v.prototype.bind = function (e, r, s) { var h = this; return e = e instanceof Array ? e : [e], h._bindMultiple.call(h, e, r, s), h }, v.prototype.unbind = function (e, r) { var s = this; return s.bind.call(s, e, function () { }, r) }, v.prototype.trigger = function (e, r) { var s = this; return s._directMap[e + ":" + r] && s._directMap[e + ":" + r]({}, e), s }, v.prototype.reset = function () { var e = this; return e._callbacks = {}, e._directMap = {}, e }, v.prototype.stopCallback = function (e, r) { var s = this; if ((" " + r.className + " ").indexOf(" mousetrap ") > -1 || I(r, s.target)) return !1; if ("composedPath" in e && typeof e.composedPath == "function") { var h = e.composedPath()[0]; h !== e.target && (r = h) } return r.tagName == "INPUT" || r.tagName == "SELECT" || r.tagName == "TEXTAREA" || r.isContentEditable }, v.prototype.handleKey = function () { var e = this; return e._handleKey.apply(e, arguments) }, v.addKeycodes = function (e) { for (var r in e) e.hasOwnProperty(r) && (c[r] = e[r]); A = null }, v.init = function () { var e = v(l); for (var r in e) r.charAt(0) !== "_" && (v[r] = (function (s) { return function () { return e[s].apply(e, arguments) } })(r)) }, v.init(), i.Mousetrap = v, typeof n < "u" && n.exports && (n.exports = v), typeof define == "function" && define.amd && define(function () { return v }) })(typeof window < "u" ? window : null, typeof window < "u" ? document : null) }), q = ue(pe()); (function (t) { if (t) { var n = {}, i = t.prototype.stopCallback; t.prototype.stopCallback = function (l, y, c, _) { var g = this; return g.paused ? !0 : n[c] || n[_] ? !1 : i.call(g, l, y, c) }, t.prototype.bindGlobal = function (l, y, c) { var _ = this; if (_.bind(l, y, c), l instanceof Array) { for (var g = 0; g < l.length; g++)n[l[g]] = !0; return } n[l] = !0 }, t.init() } })(typeof Mousetrap < "u" ? Mousetrap : void 0); var W = () => Array.from(document.querySelectorAll('[aria-modal="true"]')).find(t => window.getComputedStyle(t).display !== "none"), ce = t => { t.directive("mousetrap", (n, { modifiers: i, expression: l }, { evaluate: y }) => { let c = () => l ? y(l) : n.click(); i = i.map(_ => _.replace(/--/g, " ").replace(/-/g, "+").replace(/\bslash\b/g, "/")), i.includes("global") && (i = i.filter(_ => _ !== "global"), q.default.bindGlobal(i, _ => { let g = W(); g && !g.contains(n) || (_.preventDefault(), c()) })), q.default.bind(i, _ => { let g = W(); g && !g.contains(n) || (_.preventDefault(), c()) }), document.addEventListener("livewire:navigating", () => { q.default.unbind(i) }, { once: !0 }) }) }, j = ce; var V = () => ({ isOpen: window.Alpine.$persist(!0).as("isOpen"), isOpenDesktop: window.Alpine.$persist(!0).as("isOpenDesktop"), collapsedGroups: window.Alpine.$persist(null).as("collapsedGroups"), init() { this.resizeObserver = null, this.setUpResizeObserver(), document.addEventListener("livewire:navigated", () => { this.setUpResizeObserver() }) }, setUpResizeObserver() { this.resizeObserver && this.resizeObserver.disconnect(); let t = window.innerWidth; this.resizeObserver = new ResizeObserver(() => { let n = window.innerWidth, i = t >= 1024, l = n < 1024, y = n >= 1024; i && l ? (this.isOpenDesktop = this.isOpen, this.isOpen && this.close()) : !i && y && (this.isOpen = this.isOpenDesktop), t = n }), this.resizeObserver.observe(document.body), window.innerWidth < 1024 ? this.isOpen && (this.isOpenDesktop = !0, this.close()) : this.isOpenDesktop = this.isOpen }, groupIsCollapsed(t) { return this.collapsedGroups.includes(t) }, collapseGroup(t) { this.collapsedGroups.includes(t) || (this.collapsedGroups = this.collapsedGroups.concat(t)) }, toggleCollapsedGroup(t) { this.collapsedGroups = this.collapsedGroups.includes(t) ? this.collapsedGroups.filter(n => n !== t) : this.collapsedGroups.concat(t) }, close() { this.isOpen = !1, window.innerWidth >= 1024 && (this.isOpenDesktop = !1) }, open() { this.isOpen = !0, window.innerWidth >= 1024 && (this.isOpenDesktop = !0) } }); document.addEventListener("alpine:init", () => { let t = localStorage.getItem("theme") ?? getComputedStyle(document.documentElement).getPropertyValue("--default-theme-mode"); window.Alpine.store("theme", t === "dark" || t === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"), window.addEventListener("theme-changed", n => { let i = n.detail; localStorage.setItem("theme", i), i === "system" && (i = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"), window.Alpine.store("theme", i) }), window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", n => { localStorage.getItem("theme") === "system" && window.Alpine.store("theme", n.matches ? "dark" : "light") }), window.Alpine.effect(() => { window.Alpine.store("theme") === "dark" ? document.documentElement.classList.add("dark") : document.documentElement.classList.remove("dark") }) }); var U = window.history.replaceState, de = window.history.pushState; window.history.replaceState = function (t, n, i) { t?.url instanceof URL && (t.url = t.url.toString()); let l = i || t?.url || window.location.href, y = window.location.href; if (l !== y) { U.call(window.history, t, n, i); return } try { let c = window.history.state; JSON.stringify(t) !== JSON.stringify(c) && U.call(window.history, t, n, i) } catch { U.call(window.history, t, n, i) } }; window.history.pushState = function (t, n, i) { t?.url instanceof URL && (t.url = t.url.toString()), de.call(window.history, t, n, i) }; document.addEventListener("DOMContentLoaded", () => { setTimeout(() => { let t = document.querySelector(".fi-main-sidebar .fi-sidebar-item.fi-active"); if ((!t || t.offsetParent === null) && (t = document.querySelector(".fi-main-sidebar .fi-sidebar-group.fi-active")), !t || t.offsetParent === null) return; let n = document.querySelector(".fi-main-sidebar .fi-sidebar-nav"); n && n.scrollTo(0, t.offsetTop - window.innerHeight / 2) }, 10) }); window.setUpUnsavedDataChangesAlert = ({ body: t, livewireComponent: n, $wire: i }) => { window.addEventListener("beforeunload", l => { window.jsMd5(JSON.stringify(i.data).replace(/\\/g, "")) === i.savedDataHash || i?.__instance?.effects?.redirect || (l.preventDefault(), l.returnValue = !0) }) }; window.setUpSpaModeUnsavedDataChangesAlert = ({ body: t, resolveLivewireComponentUsing: n, $wire: i }) => { let l = () => i?.__instance?.effects?.redirect ? !1 : window.jsMd5(JSON.stringify(i.data).replace(/\\/g, "")) !== i.savedDataHash, y = () => confirm(t); document.addEventListener("livewire:navigate", c => { if (typeof n() < "u") { if (!l() || y()) return; c.preventDefault() } }), window.addEventListener("beforeunload", c => { l() && (c.preventDefault(), c.returnValue = !0) }) }; window.setUpUnsavedActionChangesAlert = ({ resolveLivewireComponentUsing: t, $wire: n }) => { window.addEventListener("beforeunload", i => { if (!(typeof t() > "u") && (n.mountedActions?.length ?? 0) && !n?.__instance?.effects?.redirect) { i.preventDefault(), i.returnValue = !0; return } }) }; document.addEventListener("alpine:init", () => { window.Alpine.plugin(j), window.Alpine.store("sidebar", V()) }); })(); +(()=>{var re=Object.create,x=Object.defineProperty,ne=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty,ae=Object.getOwnPropertyNames,se=Object.getOwnPropertyDescriptor,oe=t=>x(t,"__esModule",{value:!0}),le=(t,n)=>()=>(n||(n={exports:{}},t(n.exports,n)),n.exports),fe=(t,n,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of ae(n))!ie.call(t,l)&&l!=="default"&&x(t,l,{get:()=>n[l],enumerable:!(i=se(n,l))||i.enumerable});return t},ue=t=>fe(oe(x(t!=null?re(ne(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t),pe=le((t,n)=>{(function(i,l,y){if(!i)return;for(var c={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},_={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},g={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},G={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},A,b=1;b<20;++b)c[111+b]="f"+b;for(b=0;b<=9;++b)c[b+96]=b.toString();function P(e,r,s){if(e.addEventListener){e.addEventListener(r,s,!1);return}e.attachEvent("on"+r,s)}function T(e){if(e.type=="keypress"){var r=String.fromCharCode(e.which);return e.shiftKey||(r=r.toLowerCase()),r}return c[e.which]?c[e.which]:_[e.which]?_[e.which]:String.fromCharCode(e.which).toLowerCase()}function J(e,r){return e.sort().join(",")===r.sort().join(",")}function H(e){var r=[];return e.shiftKey&&r.push("shift"),e.altKey&&r.push("alt"),e.ctrlKey&&r.push("ctrl"),e.metaKey&&r.push("meta"),r}function F(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function B(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function C(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}function X(){if(!A){A={};for(var e in c)e>95&&e<112||c.hasOwnProperty(e)&&(A[c[e]]=e)}return A}function Y(e,r,s){return s||(s=X()[e]?"keydown":"keypress"),s=="keypress"&&r.length&&(s="keydown"),s}function Q(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function R(e,r){var s,h,k,S=[];for(s=Q(e),k=0;k1){$(a,m,f,p);return}u=R(a,p),r._callbacks[u.key]=r._callbacks[u.key]||[],z(u.key,u.modifiers,{type:u.action},o,a,d),r._callbacks[u.key][o?"unshift":"push"]({callback:f,modifiers:u.modifiers,action:u.action,seq:o,level:d,combo:a})}r._bindMultiple=function(a,f,p){for(var o=0;o-1||I(r,s.target))return!1;if("composedPath"in e&&typeof e.composedPath=="function"){var h=e.composedPath()[0];h!==e.target&&(r=h)}return r.tagName=="INPUT"||r.tagName=="SELECT"||r.tagName=="TEXTAREA"||r.isContentEditable},v.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},v.addKeycodes=function(e){for(var r in e)e.hasOwnProperty(r)&&(c[r]=e[r]);A=null},v.init=function(){var e=v(l);for(var r in e)r.charAt(0)!=="_"&&(v[r]=(function(s){return function(){return e[s].apply(e,arguments)}})(r))},v.init(),i.Mousetrap=v,typeof n<"u"&&n.exports&&(n.exports=v),typeof define=="function"&&define.amd&&define(function(){return v})})(typeof window<"u"?window:null,typeof window<"u"?document:null)}),q=ue(pe());(function(t){if(t){var n={},i=t.prototype.stopCallback;t.prototype.stopCallback=function(l,y,c,_){var g=this;return g.paused?!0:n[c]||n[_]?!1:i.call(g,l,y,c)},t.prototype.bindGlobal=function(l,y,c){var _=this;if(_.bind(l,y,c),l instanceof Array){for(var g=0;gArray.from(document.querySelectorAll('[aria-modal="true"]')).find(t=>window.getComputedStyle(t).display!=="none"),ce=t=>{t.directive("mousetrap",(n,{modifiers:i,expression:l},{evaluate:y})=>{let c=()=>l?y(l):n.click();i=i.map(_=>_.replace(/--/g," ").replace(/-/g,"+").replace(/\bslash\b/g,"/")),i.includes("global")&&(i=i.filter(_=>_!=="global"),q.default.bindGlobal(i,_=>{let g=W();g&&!g.contains(n)||(_.preventDefault(),c())})),q.default.bind(i,_=>{let g=W();g&&!g.contains(n)||(_.preventDefault(),c())}),document.addEventListener("livewire:navigating",()=>{q.default.unbind(i)},{once:!0})})},j=ce;var V=()=>({isOpen:window.Alpine.$persist(!0).as("isOpen"),isOpenDesktop:window.Alpine.$persist(!0).as("isOpenDesktop"),collapsedGroups:window.Alpine.$persist(null).as("collapsedGroups"),init(){this.resizeObserver=null,this.setUpResizeObserver(),document.addEventListener("livewire:navigated",()=>{this.setUpResizeObserver()})},setUpResizeObserver(){this.resizeObserver&&this.resizeObserver.disconnect();let t=window.innerWidth;this.resizeObserver=new ResizeObserver(()=>{let n=window.innerWidth,i=t>=1024,l=n<1024,y=n>=1024;i&&l?(this.isOpenDesktop=this.isOpen,this.isOpen&&this.close()):!i&&y&&(this.isOpen=this.isOpenDesktop),t=n}),this.resizeObserver.observe(document.body),window.innerWidth<1024?this.isOpen&&(this.isOpenDesktop=!0,this.close()):this.isOpenDesktop=this.isOpen},groupIsCollapsed(t){return this.collapsedGroups.includes(t)},collapseGroup(t){this.collapsedGroups.includes(t)||(this.collapsedGroups=this.collapsedGroups.concat(t))},toggleCollapsedGroup(t){this.collapsedGroups=this.collapsedGroups.includes(t)?this.collapsedGroups.filter(n=>n!==t):this.collapsedGroups.concat(t)},close(){this.isOpen=!1,window.innerWidth>=1024&&(this.isOpenDesktop=!1)},open(){this.isOpen=!0,window.innerWidth>=1024&&(this.isOpenDesktop=!0)}});document.addEventListener("alpine:init",()=>{let t=localStorage.getItem("theme")??getComputedStyle(document.documentElement).getPropertyValue("--default-theme-mode");window.Alpine.store("theme",t==="dark"||t==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.addEventListener("theme-changed",n=>{let i=n.detail;localStorage.setItem("theme",i),i==="system"&&(i=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.Alpine.store("theme",i)}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",n=>{localStorage.getItem("theme")==="system"&&window.Alpine.store("theme",n.matches?"dark":"light")}),window.Alpine.effect(()=>{window.Alpine.store("theme")==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})});var U=window.history.replaceState,de=window.history.pushState;window.history.replaceState=function(t,n,i){t?.url instanceof URL&&(t.url=t.url.toString());let l=i||t?.url||window.location.href,y=window.location.href;if(l!==y){U.call(window.history,t,n,i);return}try{let c=window.history.state;JSON.stringify(t)!==JSON.stringify(c)&&U.call(window.history,t,n,i)}catch{U.call(window.history,t,n,i)}};window.history.pushState=function(t,n,i){t?.url instanceof URL&&(t.url=t.url.toString()),de.call(window.history,t,n,i)};document.addEventListener("DOMContentLoaded",()=>{setTimeout(()=>{let t=document.querySelector(".fi-main-sidebar .fi-sidebar-item.fi-active");if((!t||t.offsetParent===null)&&(t=document.querySelector(".fi-main-sidebar .fi-sidebar-group.fi-active")),!t||t.offsetParent===null)return;let n=document.querySelector(".fi-main-sidebar .fi-sidebar-nav");n&&n.scrollTo(0,t.offsetTop-window.innerHeight/2)},10)});window.setUpUnsavedDataChangesAlert=({body:t,livewireComponent:n,$wire:i})=>{window.addEventListener("beforeunload",l=>{window.jsMd5(JSON.stringify(i.data).replace(/\\/g,""))===i.savedDataHash||i?.__instance?.effects?.redirect||(l.preventDefault(),l.returnValue=!0)})};window.setUpSpaModeUnsavedDataChangesAlert=({body:t,resolveLivewireComponentUsing:n,$wire:i})=>{let l=()=>i?.__instance?.effects?.redirect?!1:window.jsMd5(JSON.stringify(i.data).replace(/\\/g,""))!==i.savedDataHash,y=()=>confirm(t);document.addEventListener("livewire:navigate",c=>{if(typeof n()<"u"){if(!l()||y())return;c.preventDefault()}}),window.addEventListener("beforeunload",c=>{l()&&(c.preventDefault(),c.returnValue=!0)})};window.setUpUnsavedActionChangesAlert=({resolveLivewireComponentUsing:t,$wire:n})=>{window.addEventListener("beforeunload",i=>{if(!(typeof t()>"u")&&(n.mountedActions?.length??0)&&!n?.__instance?.effects?.redirect){i.preventDefault(),i.returnValue=!0;return}})};document.addEventListener("alpine:init",()=>{window.Alpine.plugin(j),window.Alpine.store("sidebar",V())});})(); diff --git a/resources/views/filament/tables/columns/bookmaker-icon.blade.php b/resources/views/filament/tables/columns/bookmaker-icon.blade.php new file mode 100644 index 00000000..df534156 --- /dev/null +++ b/resources/views/filament/tables/columns/bookmaker-icon.blade.php @@ -0,0 +1,4 @@ +
+
diff --git a/resources/views/filament/tables/columns/odds3-way.blade.php b/resources/views/filament/tables/columns/odds3-way.blade.php index 871af459..2d420bb1 100644 --- a/resources/views/filament/tables/columns/odds3-way.blade.php +++ b/resources/views/filament/tables/columns/odds3-way.blade.php @@ -1,25 +1,17 @@ -
+
- {{-- {{ $record->odds_3way }} --}} + @foreach ($record->odds_3way as $row) +
+
+
{{ number_format($row->h3w, 2) }}
+
{{ number_format($row->d3w, 2) }}
+
{{ number_format($row->a3w, 2) }}
+
{{ $row->margin }}
+ @endforeach -
- - @foreach ($record->odds_3way as $key => $row) -
-
{{ number_format($row->h3w, 2) }}
-
{{ number_format($row->d3w, 2) }}
-
{{ number_format($row->a3w, 2) }}
-
{{ $row->margin }}
- - @if ($key == 3) - @break; - @endif - @endforeach - -
diff --git a/storage/app/public/bookmaker-icons/10bet.jpg b/storage/app/public/bookmaker-icons/10bet.png similarity index 100% rename from storage/app/public/bookmaker-icons/10bet.jpg rename to storage/app/public/bookmaker-icons/10bet.png diff --git a/storage/app/public/bookmaker-icons/1xbet.jpg b/storage/app/public/bookmaker-icons/1xbet.png similarity index 100% rename from storage/app/public/bookmaker-icons/1xbet.jpg rename to storage/app/public/bookmaker-icons/1xbet.png diff --git a/storage/app/public/bookmaker-icons/bet3000.jpg b/storage/app/public/bookmaker-icons/bet3000.jpg deleted file mode 100644 index a9dab7d5..00000000 Binary files a/storage/app/public/bookmaker-icons/bet3000.jpg and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/betfair-bookiesapi.png b/storage/app/public/bookmaker-icons/betfair-bookiesapi.png deleted file mode 100644 index 81bfe05c..00000000 Binary files a/storage/app/public/bookmaker-icons/betfair-bookiesapi.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/betfair.png b/storage/app/public/bookmaker-icons/betfair.png index 610ac6c3..fbdafbcf 100644 Binary files a/storage/app/public/bookmaker-icons/betfair.png and b/storage/app/public/bookmaker-icons/betfair.png differ diff --git a/storage/app/public/bookmaker-icons/betfairy.png b/storage/app/public/bookmaker-icons/betfairy.png deleted file mode 100644 index db85cd02..00000000 Binary files a/storage/app/public/bookmaker-icons/betfairy.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/betking2.png b/storage/app/public/bookmaker-icons/betking2.png deleted file mode 100644 index d737defc..00000000 Binary files a/storage/app/public/bookmaker-icons/betking2.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/better.jpg b/storage/app/public/bookmaker-icons/better.jpg deleted file mode 100644 index b9d7a0c6..00000000 Binary files a/storage/app/public/bookmaker-icons/better.jpg and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/better.png b/storage/app/public/bookmaker-icons/better.png new file mode 100644 index 00000000..eb773c88 Binary files /dev/null and b/storage/app/public/bookmaker-icons/better.png differ diff --git a/storage/app/public/bookmaker-icons/betway.png b/storage/app/public/bookmaker-icons/betway.png new file mode 100644 index 00000000..79905434 Binary files /dev/null and b/storage/app/public/bookmaker-icons/betway.png differ diff --git a/storage/app/public/bookmaker-icons/bwin.jpg b/storage/app/public/bookmaker-icons/bwin.png similarity index 100% rename from storage/app/public/bookmaker-icons/bwin.jpg rename to storage/app/public/bookmaker-icons/bwin.png diff --git a/storage/app/public/bookmaker-icons/icon-template.afphoto b/storage/app/public/bookmaker-icons/icon-template.afphoto deleted file mode 100644 index 6481cb64..00000000 Binary files a/storage/app/public/bookmaker-icons/icon-template.afphoto and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/interwetten.png b/storage/app/public/bookmaker-icons/interwetten.png index ce6092e6..d407f0d9 100644 Binary files a/storage/app/public/bookmaker-icons/interwetten.png and b/storage/app/public/bookmaker-icons/interwetten.png differ diff --git a/storage/app/public/bookmaker-icons/logifutur-col.png b/storage/app/public/bookmaker-icons/logifutur-col.png new file mode 100644 index 00000000..198de3b6 Binary files /dev/null and b/storage/app/public/bookmaker-icons/logifutur-col.png differ diff --git a/storage/app/public/bookmaker-icons/logifutur-nig.png b/storage/app/public/bookmaker-icons/logifutur-nig.png new file mode 100644 index 00000000..e939c884 Binary files /dev/null and b/storage/app/public/bookmaker-icons/logifutur-nig.png differ diff --git a/storage/app/public/bookmaker-icons/logispin-colombia.png b/storage/app/public/bookmaker-icons/logispin-colombia.png deleted file mode 100644 index 7b9f74af..00000000 Binary files a/storage/app/public/bookmaker-icons/logispin-colombia.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/logispin-colombia2.png b/storage/app/public/bookmaker-icons/logispin-colombia2.png deleted file mode 100644 index 1192c2ef..00000000 Binary files a/storage/app/public/bookmaker-icons/logispin-colombia2.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/logispin-nigeria.png b/storage/app/public/bookmaker-icons/logispin-nigeria.png deleted file mode 100644 index 63f91eea..00000000 Binary files a/storage/app/public/bookmaker-icons/logispin-nigeria.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/magloo-kenia.png b/storage/app/public/bookmaker-icons/magloo-kenia.png index 28d8821a..93918dff 100644 Binary files a/storage/app/public/bookmaker-icons/magloo-kenia.png and b/storage/app/public/bookmaker-icons/magloo-kenia.png differ diff --git a/storage/app/public/bookmaker-icons/magloo-nig.png b/storage/app/public/bookmaker-icons/magloo-nig.png new file mode 100644 index 00000000..555480a1 Binary files /dev/null and b/storage/app/public/bookmaker-icons/magloo-nig.png differ diff --git a/storage/app/public/bookmaker-icons/magloo-nigeria.png b/storage/app/public/bookmaker-icons/magloo-nigeria.png deleted file mode 100644 index a734acd0..00000000 Binary files a/storage/app/public/bookmaker-icons/magloo-nigeria.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/magloo.png b/storage/app/public/bookmaker-icons/magloo.png deleted file mode 100644 index b250faec..00000000 Binary files a/storage/app/public/bookmaker-icons/magloo.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/missing.png b/storage/app/public/bookmaker-icons/missing.png new file mode 100644 index 00000000..3999f49c Binary files /dev/null and b/storage/app/public/bookmaker-icons/missing.png differ diff --git a/storage/app/public/bookmaker-icons/pinnacle-dark.png b/storage/app/public/bookmaker-icons/pinnacle-dark.png deleted file mode 100644 index 49f4de6f..00000000 Binary files a/storage/app/public/bookmaker-icons/pinnacle-dark.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/pinnacle.png b/storage/app/public/bookmaker-icons/pinnacle.png index d1574aca..49f4de6f 100644 Binary files a/storage/app/public/bookmaker-icons/pinnacle.png and b/storage/app/public/bookmaker-icons/pinnacle.png differ diff --git a/storage/app/public/bookmaker-icons/planetwin365.png b/storage/app/public/bookmaker-icons/planetwin365.png new file mode 100644 index 00000000..65c8224c Binary files /dev/null and b/storage/app/public/bookmaker-icons/planetwin365.png differ diff --git a/storage/app/public/bookmaker-icons/sbobet.jpg b/storage/app/public/bookmaker-icons/sbobet.jpg deleted file mode 100644 index b6bec142..00000000 Binary files a/storage/app/public/bookmaker-icons/sbobet.jpg and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/sbobet.png b/storage/app/public/bookmaker-icons/sbobet.png new file mode 100644 index 00000000..adfe7aeb Binary files /dev/null and b/storage/app/public/bookmaker-icons/sbobet.png differ diff --git a/storage/app/public/bookmaker-icons/sisaldemo.png b/storage/app/public/bookmaker-icons/sisaldemo.png deleted file mode 100644 index 44bd6de2..00000000 Binary files a/storage/app/public/bookmaker-icons/sisaldemo.png and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/sportimages.afphoto b/storage/app/public/bookmaker-icons/sportimages.afphoto deleted file mode 100644 index 49072bf3..00000000 Binary files a/storage/app/public/bookmaker-icons/sportimages.afphoto and /dev/null differ diff --git a/storage/app/public/bookmaker-icons/sportingbet.png b/storage/app/public/bookmaker-icons/sportingbet.png index 3434cdd0..48464bbd 100644 Binary files a/storage/app/public/bookmaker-icons/sportingbet.png and b/storage/app/public/bookmaker-icons/sportingbet.png differ diff --git a/storage/app/public/bookmaker-icons/unibet.jpg b/storage/app/public/bookmaker-icons/unibet.png similarity index 100% rename from storage/app/public/bookmaker-icons/unibet.jpg rename to storage/app/public/bookmaker-icons/unibet.png diff --git a/storage/app/public/bookmaker-icons/wplay.jpg b/storage/app/public/bookmaker-icons/wplay.png similarity index 100% rename from storage/app/public/bookmaker-icons/wplay.jpg rename to storage/app/public/bookmaker-icons/wplay.png