From 739222718ad7155e1ed998ce147efbb709590419 Mon Sep 17 00:00:00 2001 From: salam Date: Wed, 24 Dec 2025 09:30:18 +0100 Subject: [PATCH] toggle bettypes --- .../Resources/Events/Pages/ListEvents.php | 2 + .../Resources/Events/Tables/EventsTable.php | 6 ++- .../{Columns3way.php => Column3way.php} | 4 +- app/Filament/Tables/Columns/ColumnDc.php | 54 +++++++++++++++++++ app/Livewire/BettypeToggle.php | 39 ++++++-------- app/Models/BettypeUser.php | 5 ++ composer.lock | 20 +++---- package-lock.json | 2 - resources/css/filament/admin/theme.css | 1 + .../tables/columns/column-dc.blade.php | 24 +++++++++ ...s_3way.blade.php => column_3way.blade.php} | 5 +- .../columns/multiline/fumetto.blade.php | 2 +- .../tables/columns/multiline/labels.blade.php | 31 +++-------- .../tables/columns/multiline/odds.blade.php | 2 +- .../views/livewire/bettype-toggle.blade.php | 13 +---- 15 files changed, 132 insertions(+), 78 deletions(-) rename app/Filament/Tables/Columns/{Columns3way.php => Column3way.php} (91%) create mode 100644 app/Filament/Tables/Columns/ColumnDc.php create mode 100644 resources/views/filament/tables/columns/column-dc.blade.php rename resources/views/filament/tables/columns/{columns_3way.blade.php => column_3way.blade.php} (79%) diff --git a/app/Filament/Resources/Events/Pages/ListEvents.php b/app/Filament/Resources/Events/Pages/ListEvents.php index f105e7b4..8713c958 100644 --- a/app/Filament/Resources/Events/Pages/ListEvents.php +++ b/app/Filament/Resources/Events/Pages/ListEvents.php @@ -10,6 +10,8 @@ class ListEvents extends ListRecords { protected static string $resource = EventResource::class; + protected $listeners = ['refreshBettypeMenu' => '$refresh']; + protected function getHeaderActions(): array { return [ diff --git a/app/Filament/Resources/Events/Tables/EventsTable.php b/app/Filament/Resources/Events/Tables/EventsTable.php index 79ee8b3f..6c6204f6 100644 --- a/app/Filament/Resources/Events/Tables/EventsTable.php +++ b/app/Filament/Resources/Events/Tables/EventsTable.php @@ -2,7 +2,8 @@ namespace App\Filament\Resources\Events\Tables; -use App\Filament\Tables\Columns\Columns3way; +use App\Filament\Tables\Columns\Column3way; +use App\Filament\Tables\Columns\ColumnDc; use App\Filament\Tables\Columns\MatchIds; use App\Models\BettypeUser; use App\Models\Country; @@ -68,7 +69,8 @@ class EventsTable ->alignRight(), TextColumn::make('away.name') ->searchable(), - Columns3way::make('odds3way')->label(fn () => view('filament.tables.columns.multiline.labels')), + Column3way::make('odds3way')->visible(fn () => in_array(1, self::$bettype_settings))->width(280)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => '1x2'])), + ColumnDc::make('oddsdc')->visible(fn () => in_array(2, self::$bettype_settings))->width(280)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'dc'])), ]) ->poll('10s') ->defaultSort('starttime', 'ASC') diff --git a/app/Filament/Tables/Columns/Columns3way.php b/app/Filament/Tables/Columns/Column3way.php similarity index 91% rename from app/Filament/Tables/Columns/Columns3way.php rename to app/Filament/Tables/Columns/Column3way.php index 016c170d..86224a81 100644 --- a/app/Filament/Tables/Columns/Columns3way.php +++ b/app/Filament/Tables/Columns/Column3way.php @@ -5,9 +5,9 @@ namespace App\Filament\Tables\Columns; use App\Models\Odds3way; use Filament\Tables\Columns\Column; -class Columns3way extends Column +class Column3way extends Column { - protected string $view = 'filament.tables.columns.columns_3way'; + protected string $view = 'filament.tables.columns.column_3way'; protected ?array $multiline; diff --git a/app/Filament/Tables/Columns/ColumnDc.php b/app/Filament/Tables/Columns/ColumnDc.php new file mode 100644 index 00000000..b898d5d2 --- /dev/null +++ b/app/Filament/Tables/Columns/ColumnDc.php @@ -0,0 +1,54 @@ +where('event_id', $record->id)->get(); + + $this->fumetto = []; + + $this->multiline = []; + + foreach ($res as $item) { + + $this->fumetto[] = $item; + foreach ($multiline_client as $slot => $bookmaker) { + if ($item->bookmaker_id == $bookmaker->bookmaker_id) { + $this->multiline[$slot] = $item; + } + } + } + + $this->has_odds = count($this->multiline) ? true : false; + } + + public function getMultilines(): ?array + { + return $this->multiline; + } + + public function getFumetto() + { + return $this->fumetto; + } + + public function hasodds() + { + return $this->has_odds; + } +} diff --git a/app/Livewire/BettypeToggle.php b/app/Livewire/BettypeToggle.php index 5194bc70..1dae556d 100644 --- a/app/Livewire/BettypeToggle.php +++ b/app/Livewire/BettypeToggle.php @@ -2,30 +2,30 @@ namespace App\Livewire; -use App\Models\MultilineSetting; -use App\Models\User; +use App\Models\BettypeUser; +use Illuminate\Support\Facades\DB; use Livewire\Component; class BettypeToggle extends Component { public $multilines = []; - public function mount() - { + protected $listeners = [ + 'refreshBettypeMenu' => '$refresh', + ]; + public function boot() + { $this->multilines = []; - $settings = MultilineSetting::where('sport_id', auth()->user()->sport_id)->get(); - - foreach ($settings as $setting) { + $res = BettypeUser::with('multiline')->where('user_id', auth()->user()->id)->where('sport_id', auth()->user()->sport_id)->get(); + foreach ($res as $set) { $this->multilines[] = [ - 'id' => $setting->id, - 'sport_id' => $setting->sport_id, - 'name' => $setting->name, - 'short' => $setting->short, - 'table' => $setting->table, - 'is_active' => $setting->id == auth()->user()->multiline_setting_id ? 1 : 0, + 'id' => $set->multiline_setting_id, + 'name' => $set->multiline->name, + 'short' => $set->multiline->short, + 'is_active' => $set->is_active, ]; } } @@ -35,17 +35,10 @@ class BettypeToggle extends Component return view('livewire.bettype-toggle'); } - public function swopBettype($multiline_setting_id) + public function toggleBettype($multiline_setting_id) { - User::where('id', auth()->user()->id)->update(['multiline_setting_id' => $multiline_setting_id]); + BettypeUser::where('user_id', auth()->user()->id)->where('multiline_setting_id', $multiline_setting_id)->update(['is_active' => DB::raw('!is_active')]); - $this->js('window.location.reload()'); - } - - public function toggleBettype($sport, $bettype, $status) - { - User::where('id', auth()->user()->id)->update(["bettype_status->$sport->$bettype" => $status]); - - $this->js('window.location.reload()'); + $this->dispatch('refreshBettypeMenu'); } } diff --git a/app/Models/BettypeUser.php b/app/Models/BettypeUser.php index a2cd7dd7..0d9e6371 100644 --- a/app/Models/BettypeUser.php +++ b/app/Models/BettypeUser.php @@ -12,4 +12,9 @@ class BettypeUser extends Model 'multiline_setting_id', 'is_active', ]; + + public function multiline() + { + return $this->hasOne(MultilineSetting::class, 'id', 'multiline_setting_id'); + } } diff --git a/composer.lock b/composer.lock index dc8fabd2..788f13df 100644 --- a/composer.lock +++ b/composer.lock @@ -10854,35 +10854,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.11", + "version": "11.0.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.4.0", + "nikic/php-parser": "^5.7.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", "sebastian/code-unit-reverse-lookup": "^4.0.1", "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", + "sebastian/environment": "^7.2.1", "sebastian/lines-of-code": "^3.0.1", "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^1.3.1" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^11.5.46" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -10920,7 +10920,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" }, "funding": [ { @@ -10940,7 +10940,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T14:37:49+00:00" + "time": "2025-12-24T07:01:01+00:00" }, { "name": "phpunit/php-file-iterator", diff --git a/package-lock.json b/package-lock.json index f37f407c..d8e299a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1990,7 +1990,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -2224,7 +2223,6 @@ "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", diff --git a/resources/css/filament/admin/theme.css b/resources/css/filament/admin/theme.css index c6593a3a..1fae0056 100644 --- a/resources/css/filament/admin/theme.css +++ b/resources/css/filament/admin/theme.css @@ -20,6 +20,7 @@ button[wire\:click="resetTableFiltersForm"] { } .fi-ta-header-cell-odds3way, +.fi-ta-header-cell-oddsdc, .fi-ta-header-cell-id { padding: 0 !important; } \ No newline at end of file diff --git a/resources/views/filament/tables/columns/column-dc.blade.php b/resources/views/filament/tables/columns/column-dc.blade.php new file mode 100644 index 00000000..db77c200 --- /dev/null +++ b/resources/views/filament/tables/columns/column-dc.blade.php @@ -0,0 +1,24 @@ +@php + $loadData($record, $record->multiline_client); +@endphp + +@include('filament.tables.columns.multiline.fumetto') + +
+ + @foreach ($getMultilines() as $item) + @include('filament.tables.columns.multiline.bkm', [ + 'bookmaker_id' => $item->bookmaker_id, + 'icon' => $item->bookmaker->icon ?? '', + ]) + + @include('filament.tables.columns.multiline.odds', ['odd' => $item->dc1x, 'decimal' => 2]) + + @include('filament.tables.columns.multiline.odds', ['odd' => $item->dc12, 'decimal' => 2]) + + @include('filament.tables.columns.multiline.odds', ['odd' => $item->dc2x, 'decimal' => 2]) + + @include('filament.tables.columns.multiline.odds', ['odd' => $item->margin, 'decimal' => 1]) + @endforeach +
diff --git a/resources/views/filament/tables/columns/columns_3way.blade.php b/resources/views/filament/tables/columns/column_3way.blade.php similarity index 79% rename from resources/views/filament/tables/columns/columns_3way.blade.php rename to resources/views/filament/tables/columns/column_3way.blade.php index 3fa1fcfc..1df0ec9e 100644 --- a/resources/views/filament/tables/columns/columns_3way.blade.php +++ b/resources/views/filament/tables/columns/column_3way.blade.php @@ -4,12 +4,13 @@ @include('filament.tables.columns.multiline.fumetto') -
+
@foreach ($getMultilines() as $item) @include('filament.tables.columns.multiline.bkm', [ 'bookmaker_id' => $item->bookmaker_id, - 'icon' => $item->bookmaker->icon, + 'icon' => $item->bookmaker->icon ?? '', ]) @include('filament.tables.columns.multiline.odds', ['odd' => $item->h3w, 'decimal' => 2]) diff --git a/resources/views/filament/tables/columns/multiline/fumetto.blade.php b/resources/views/filament/tables/columns/multiline/fumetto.blade.php index 4c28d00f..3703a7a5 100644 --- a/resources/views/filament/tables/columns/multiline/fumetto.blade.php +++ b/resources/views/filament/tables/columns/multiline/fumetto.blade.php @@ -6,7 +6,7 @@ @foreach ($getFumetto() as $item) @include('filament.tables.columns.multiline.bkm', [ 'bookmaker_id' => $item->bookmaker_id, - 'icon' => $item->bookmaker->icon, + 'icon' => $item->bookmaker->icon ?? '', ]) @include('filament.tables.columns.multiline.odds', [ diff --git a/resources/views/filament/tables/columns/multiline/labels.blade.php b/resources/views/filament/tables/columns/multiline/labels.blade.php index 74910b41..d4c71ab0 100644 --- a/resources/views/filament/tables/columns/multiline/labels.blade.php +++ b/resources/views/filament/tables/columns/multiline/labels.blade.php @@ -1,6 +1,5 @@ -@switch(auth()->user()->multiline_setting_id) - @case(1) - @case(13) +@switch($menu) + @case('1x2')
@@ -11,17 +10,7 @@
@break - @case(7) - @case(12) - - @case(16) - @case(17) - - @case(8) - @case(14) - - @case(9) - @case(5) + @case('hc')
@@ -31,7 +20,7 @@
@break - @case(2) + @case('dc')
@@ -42,7 +31,7 @@
@break - @case(3) + @case('dnb')
@@ -52,7 +41,7 @@
@break - @case(4) + @case('gg')
@@ -62,13 +51,7 @@
@break - @case(6) - @case(10) - - @case(15) - @case(18) - - @case(11) + @case('ou')
diff --git a/resources/views/filament/tables/columns/multiline/odds.blade.php b/resources/views/filament/tables/columns/multiline/odds.blade.php index e0903452..ef82f41e 100644 --- a/resources/views/filament/tables/columns/multiline/odds.blade.php +++ b/resources/views/filament/tables/columns/multiline/odds.blade.php @@ -2,7 +2,7 @@ use App\Utilities\OddsFormatting; @endphp -
+
  @if (isset($odd)) {{ OddsFormatting::get($odd, $decimal) }} diff --git a/resources/views/livewire/bettype-toggle.blade.php b/resources/views/livewire/bettype-toggle.blade.php index a425f8ea..a2cdf99d 100644 --- a/resources/views/livewire/bettype-toggle.blade.php +++ b/resources/views/livewire/bettype-toggle.blade.php @@ -1,15 +1,6 @@
- @foreach ($multilines as $multiline) - @if ($multiline['is_active'] == 1) - - {{ $multiline['short'] }} - - @else - - {{ $multiline['short'] }} - - @endif + {{ $multiline['short'] }} @endforeach