diff --git a/app/Filament/Resources/Events/EventResource.php b/app/Filament/Resources/Events/EventResource.php
index 356b2649..b6f0a7ed 100644
--- a/app/Filament/Resources/Events/EventResource.php
+++ b/app/Filament/Resources/Events/EventResource.php
@@ -7,7 +7,6 @@ use App\Filament\Resources\Events\Schemas\EventForm;
use App\Filament\Resources\Events\Tables\EventsTable;
use App\Filament\Resources\Events\Tables\Tools\LoadPartnerDifferences;
use App\Models\Event;
-use Carbon\Carbon;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Tables\Table;
@@ -47,7 +46,8 @@ class EventResource extends Resource
public static function getNavigationBadge(): ?string
{
return parent::getEloquentQuery()
- ->where('starttime', '>', Carbon::now())
+ ->where('sport_id', auth()->user()->sport_id)
+ ->where('starttime', '>', now())
->count();
}
@@ -60,6 +60,7 @@ class EventResource extends Resource
->with('away')
->with('event_user_star')
->with('event_bookmaker')
+ ->where('sport_id', auth()->user()->sport_id)
->where('starttime', '>=', now());
if (auth()->user()->stars) {
diff --git a/app/Filament/Resources/Events/Tables/EventsTable.php b/app/Filament/Resources/Events/Tables/EventsTable.php
index 1f3a1d8f..5fa99570 100644
--- a/app/Filament/Resources/Events/Tables/EventsTable.php
+++ b/app/Filament/Resources/Events/Tables/EventsTable.php
@@ -2,7 +2,9 @@
namespace App\Filament\Resources\Events\Tables;
+use App\Filament\Resources\Events\Tables\Tools\CompareOptions;
use App\Filament\Resources\Events\Tables\Tools\LoadBettype;
+use App\Filament\Resources\Events\Tables\Tools\LoadCompareDifferences;
use App\Filament\Resources\Events\Tables\Tools\LoadMultiline;
use App\Filament\Tables\Columns\ColumnOdds;
use App\Filament\Tables\Columns\EventColumn;
@@ -15,8 +17,6 @@ use App\Models\EventBookmaker;
use App\Models\EventUserStar;
use App\Models\Group;
use App\Models\OddsTable;
-use App\Models\Sport;
-use App\Models\User;
use CodeWithKyrian\FilamentDateRange\Forms\Components\DateRangePicker;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
@@ -53,8 +53,6 @@ class EventsTable
public static function configure(Table $table): Table
{
- self::$user = User::getUser();
-
LoadMultiline::load();
LoadBettype::load();
@@ -83,7 +81,7 @@ class EventsTable
TextColumn::make('country.name')
->wrap()
- ->hidden(fn () => self::$user->sport_id == 5)
+ ->hidden(fn () => auth()->user()->sport_id == 5)
->color('gray')
->icon(fn ($record) => $record->country?->icon),
@@ -178,34 +176,13 @@ class EventsTable
->extremePaginationLinks()
->filters([
Filter::make('events')
- ->columns(8)->columnSpan(8)
+ ->columns(6)->columnSpan(6)
->schema([
Hidden::make('filter_alarm_green'),
Hidden::make('filter_alarm_yellow'),
Hidden::make('filter_alarm_red'),
- Select::make(name: 'sport_id')
- ->options(fn () => Sport::getSportForClient())
- ->default(self::$user->sport_id)
- ->prefixIcon(self::$user->sport->icon)
- ->selectablePlaceholder(false)
- ->hiddenLabel()
- ->afterStateUpdated(function (callable $set, $state, $livewire) {
-
- User::where('id', self::$user->id)->update(['sport_id' => (int) $state]);
-
- $livewire->dispatch('refreshBettypeMenu');
- $livewire->dispatch('reload_bookmaker_multiline');
- $livewire->dispatch('reload_alarm_bookmaker');
- $livewire->dispatch('refresh_comparing_bookmaker');
- $livewire->dispatch('refreshAlarmWidget');
-
- $set('country_id', null);
- $set('competition_group_id', null);
- $set('group_id', null);
-
- }),
Select::make(name: 'country_id')
- ->hidden(fn () => self::$user->sport_id == 5)
+ ->hidden(fn () => auth()->user()->sport_id == 5)
->placeholder('Country')
->prefixIcon('phosphor-flag')
->hiddenLabel()
@@ -214,7 +191,7 @@ class EventsTable
->searchable()
->preload()
->options(function () {
- $res = Event::where('sport_id', self::$user->sport_id)->where('starttime', '>', Carbon::now())->groupBy('country_id')->pluck('country_id')->toArray();
+ $res = Event::where('sport_id', auth()->user()->sport_id)->where('starttime', '>', Carbon::now())->groupBy('country_id')->pluck('country_id')->toArray();
return Country::query()->whereIn('id', $res)->orderBy('name')->pluck('name', 'id');
})
@@ -224,7 +201,7 @@ class EventsTable
$set('competition_group_id', null);
}),
Select::make('competition_group_id')
- ->hidden(fn () => self::$user->sport_id == 5)
+ ->hidden(fn () => auth()->user()->sport_id == 5)
->placeholder('League')
->prefixIcon('phosphor-trophy')
->hiddenLabel()
@@ -233,9 +210,9 @@ class EventsTable
->searchable()
->options(function (Get $get) {
if ($get('country_id')) {
- $res = Event::where('sport_id', self::$user->sport_id)->with('country')->with('competition_group')->where('country_id', $get('country_id'))->where('starttime', '>', Carbon::now())->groupBy('competition_group_id')->get();
+ $res = Event::where('sport_id', auth()->user()->sport_id)->with('country')->with('competition_group')->where('country_id', $get('country_id'))->where('starttime', '>', Carbon::now())->groupBy('competition_group_id')->get();
} else {
- $res = Event::where('sport_id', self::$user->sport_id)->with('country')->with('competition_group')->where('starttime', '>', Carbon::now())->groupBy('competition_group_id')->get();
+ $res = Event::where('sport_id', auth()->user()->sport_id)->with('country')->with('competition_group')->where('starttime', '>', Carbon::now())->groupBy('competition_group_id')->get();
}
$arr = [];
foreach ($res as $val) {
@@ -247,7 +224,7 @@ class EventsTable
})
->live(),
Select::make('group_id')
- ->visible(fn () => self::$user->sport_id == 5)
+ ->visible(fn () => auth()->user()->sport_id == 5)
->placeholder('Tournament')
->prefixIcon('phosphor-trophy')
->hiddenLabel()
@@ -256,9 +233,9 @@ class EventsTable
->searchable()
->options(function (Get $get) {
if ($get('country_id')) {
- $res = Event::with('country')->where('sport_id', self::$user->sport_id)->with('group')->where('country_id', $get('country_id'))->where('starttime', '>', Carbon::now())->groupBy('group_id')->get();
+ $res = Event::with('country')->where('sport_id', auth()->user()->sport_id)->with('group')->where('country_id', $get('country_id'))->where('starttime', '>', Carbon::now())->groupBy('group_id')->get();
} else {
- $res = Event::with('country')->where('sport_id', self::$user->sport_id)->with('group')->where('starttime', '>', Carbon::now())->groupBy('group_id')->get();
+ $res = Event::with('country')->where('sport_id', auth()->user()->sport_id)->with('group')->where('starttime', '>', Carbon::now())->groupBy('group_id')->get();
}
$arr = [];
foreach ($res as $val) {
@@ -289,52 +266,15 @@ class EventsTable
->hiddenLabel()
->live(),
- Select::make('special_filter_lteq')
+ Select::make('filter_compare_differences')
->placeholder('Compare')
->prefixIcon('phosphor-funnel')
->hiddenLabel()
->allowHtml()
- ->options([
- 'Compare Favorits' => [
- 'flte1' => 'Favorit ≤ Marathonbet',
- 'flte2' => 'Favorit ≤ Bet365',
- 'flte3' => 'Favorit ≤ 1Bet',
- 'flte4' => 'Favorit ≤ Eurobet',
- 'mlt1' => 'Favorit ≥ Marathonbet',
- 'mlt2' => 'Favorit ≥ Bet365',
- 'mlt3' => 'Favorit ≥ 1Bet',
- 'mlt4' => 'Favorit ≥ Eurobet',
- ],
- 'Compare Margins' => [
- 'mgt1' => 'Margin ≥ Marathonbet',
- 'mgt2' => 'Margin ≥ Bet365',
- 'mgt3' => 'Margin ≥ 1Bet',
- 'mgt4' => 'Margin ≥ Eurobet',
- 'mlt1' => 'Margin < Marathonbet',
- 'mlt2' => 'Margin < Bet365',
- 'mlt3' => 'Margin < 1Bet',
- 'mlt4' => 'Margin < Eurobet',
- ],
- 'Compare X' => [
- 'xlt1' => 'X < Marathonbet',
- 'xlt2' => 'X < Bet365',
- 'xlt3' => 'X < 1Bet',
- 'xlt4' => 'X < Eurobet',
- ],
- ]),
-
- Select::make('filter_missing')
- ->placeholder('Missing')
- ->prefixIcon('phosphor-cow')
- ->hiddenLabel()
- ->allowHtml()
- ->options([1 => '1Bets']),
+ ->options(fn () => CompareOptions::load()),
])
->query(function (Builder $query, array $data): Builder {
return $query->when(
- $data['sport_id'],
- fn (Builder $query, $sport_id) => $query->where('sport_id', $sport_id)
- )->when(
$data['country_id'],
fn (Builder $query, $country_id) => $query->where('country_id', $country_id)
)->when(
@@ -413,6 +353,29 @@ class EventsTable
});
});
}
+ )->when(
+ $data['filter_compare_differences'],
+ function (Builder $query, $filter_compare_differences) {
+
+ $opt = explode('-', $filter_compare_differences);
+
+ $compare_bookmaker_id = (int) $opt[2];
+
+ switch (auth()->user()->sport_id) {
+ case 1:
+ case 2:
+ $event_ids = LoadCompareDifferences::load($opt[0], $opt[1], 'odds_3ways', $compare_bookmaker_id);
+ break;
+ case 3:
+ $event_ids = LoadCompareDifferences::load($opt[0], $opt[1], 'odds_points', $compare_bookmaker_id);
+ break;
+ case 5:
+ $event_ids = LoadCompareDifferences::load($opt[0], $opt[1], 'odds_2ways', $compare_bookmaker_id);
+ break;
+
+ }
+ $query->whereIn('id', $event_ids);
+ }
)->when(
$data['favorit_threshold'],
@@ -523,6 +486,24 @@ class EventsTable
$indicators[] = Indicator::make('Favorits')->removeField('stars_status')->color('info');
}
+ if ($data['filter_compare_differences'] ?? null) {
+ $opt = explode('-', $data['filter_compare_differences']);
+ $title = $opt[0];
+ switch ($opt[1]) {
+ case 'lte':
+ $title .= ' ≤ ';
+ break;
+ case 'gte':
+ $title .= ' ≥ ';
+ break;
+ case 'lt':
+ $title .= ' > ';
+ break;
+ }
+ $title .= $opt[3];
+ $indicators[] = Indicator::make($title)->removeField('filter_compare_differences')->color('warning');
+ }
+
return $indicators;
}),
], layout: FiltersLayout::AboveContent)
@@ -551,20 +532,20 @@ class EventsTable
->tooltip('Add to favorits')
->action(function ($record) {
$res = EventUserStar::where('event_id', $record->id)
- ->where('user_id', self::$user->id)
+ ->where('user_id', auth()->user()->id)
->first();
if ($res) {
EventUserStar::find($res->id)->delete();
} else {
- EventUserStar::insert(['event_id' => $record->id, 'user_id' => self::$user->id]);
+ EventUserStar::insert(['event_id' => $record->id, 'user_id' => auth()->user()->id]);
}
}),
ActionGroup::make([
// EditAction::make(),
- DeleteAction::make()->visible(fn () => self::$user->hasRole('super_admin')),
+ DeleteAction::make()->visible(fn () => auth()->user()->hasRole('super_admin')),
Action::make('txodds_odds')
->label('TxOdds')
- ->disabled(fn () => ! self::$user->hasRole('super_admin'))
+ ->disabled(fn () => ! auth()->user()->hasRole('super_admin'))
->icon('phosphor-arrow-square-out')
->url(fn ($record): string => route('txodds_odds', ['sportid' => $record->sport_id, 'txoddsid' => $record->id]))
->openUrlInNewTab(),
@@ -580,7 +561,7 @@ class EventsTable
->icon('phosphor-dots-three-vertical'),
])->toolbarActions([
BulkActionGroup::make([
- DeleteBulkAction::make()->visible(fn () => self::$user->hasRole('super_admin')),
+ DeleteBulkAction::make()->visible(fn () => auth()->user()->hasRole('super_admin')),
]),
]);
}
diff --git a/app/Filament/Resources/Events/Tables/Tools/CompareOptions.php b/app/Filament/Resources/Events/Tables/Tools/CompareOptions.php
new file mode 100644
index 00000000..8e3127ee
--- /dev/null
+++ b/app/Filament/Resources/Events/Tables/Tools/CompareOptions.php
@@ -0,0 +1,63 @@
+user()->sport_id) {
+ case 1:
+ case 2:
+ $table = 'odds_3ways';
+ break;
+ case 3:
+ $table = 'odds_points';
+ break;
+ case 5:
+ $table = 'odds_2ways';
+ break;
+
+ }
+
+ $options = [];
+ foreach (EventsTable::$slots[$table] as $bookmaker_id) {
+ $option = 'Favorit-lte-'.$bookmaker_id.'-'.$map[$bookmaker_id]['name'];
+ $favorits[$option] = 'Favorit ≤ '.$map[$bookmaker_id]['name'];
+ }
+ foreach (EventsTable::$slots[$table] as $bookmaker_id) {
+ $option = 'Favorit-gte-'.$bookmaker_id.'-'.$map[$bookmaker_id]['name'];
+ $favorits[$option] = 'Favorit ≥ '.$map[$bookmaker_id]['name'];
+ }
+ $options['Favorits'] = $favorits;
+
+ foreach (EventsTable::$slots[$table] as $bookmaker_id) {
+ $option = 'Margin-gte-'.$bookmaker_id.'-'.$map[$bookmaker_id]['name'];
+ $margins[$option] = 'Margin ≥ '.$map[$bookmaker_id]['name'];
+ }
+ foreach (EventsTable::$slots[$table] as $bookmaker_id) {
+ $option = 'Margin-lt-'.$bookmaker_id.'-'.$map[$bookmaker_id]['name'];
+ $margins[$option] = 'Margin < '.$map[$bookmaker_id]['name'];
+ }
+ $options['Margins'] = $margins;
+
+ if (auth()->user()->sport_id == 1) {
+ foreach (EventsTable::$slots[$table] as $bookmaker_id) {
+ $option = 'X-lt-'.$bookmaker_id.'-'.$map[$bookmaker_id]['name'];
+ $x[$option] = 'X < '.$map[$bookmaker_id]['name'];
+ }
+ $options['X'] = $x;
+ }
+
+ return $options;
+
+ }
+}
diff --git a/app/Filament/Resources/Events/Tables/Tools/LoadCompareDifferences.php b/app/Filament/Resources/Events/Tables/Tools/LoadCompareDifferences.php
new file mode 100644
index 00000000..7bf684b4
--- /dev/null
+++ b/app/Filament/Resources/Events/Tables/Tools/LoadCompareDifferences.php
@@ -0,0 +1,107 @@
+user()->sport_id);
+
+ $has_active_spread = OddsTable::where('name', $table)->value('has_active_spread');
+
+ if ($has_active_spread) {
+ $clients = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->bookmaker_id)
+ ->where('active_spread', 1)
+ ->get();
+ $comparing = DB::table($table)
+ ->where('bookmaker_id', $compare_bookmaker_id)
+ ->where('active_spread', 1)
+ ->get();
+ } else {
+ // $clients = DB::table($table)->whereIn('bookmaker_id', [auth()->user()->bookmaker_id, $compare_bookmaker_id])->get();
+ $clients = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->bookmaker_id)
+ ->get();
+ $comparing = DB::table($table)
+ ->where('bookmaker_id', $compare_bookmaker_id)
+ ->get();
+ }
+
+ $event_ids = [];
+ foreach ($clients as $client) {
+
+ $row1 = get_object_vars($client);
+
+ foreach ($comparing as $compare) {
+
+ $row2 = get_object_vars($compare);
+
+ if ($row1['event_id'] == $row2['event_id']) {
+
+ switch ($target) {
+ case 'Favorit':
+ $bk = 100;
+ $co = 100;
+ foreach ($fields[$table] as $field) {
+ if ($row1[$field] < $bk) {
+ $bk = $row1[$field];
+ }
+ if ($row2[$field] < $co) {
+ $co = $row2[$field];
+ }
+ }
+ switch ($mode) {
+ case 'lte':
+
+ if ($bk > 1 && $co > 1 && $bk <= $co) {
+ $event_ids[] = $row1['event_id'];
+ }
+ break;
+ case 'gte':
+ if ($bk > 1 && $co > 1 && $bk >= $co) {
+ $event_ids[] = $row1['event_id'];
+ }
+ break;
+ }
+
+ break;
+ case 'Margin':
+ switch ($mode) {
+ case 'gte':
+ if ($row1['margin'] >= $row2['margin']) {
+ $event_ids[] = $row1['event_id'];
+ }
+ break;
+ case 'lt':
+ if ($row1['margin'] < $row2['margin']) {
+ $event_ids[] = $row1['event_id'];
+ }
+ break;
+ }
+
+ break;
+ case 'X':
+ if ($row1['d3w'] < $row2['d3w']) {
+ $event_ids[] = $row1['event_id'];
+ }
+ break;
+
+ }
+
+ }
+ }
+ }
+
+ return array_unique($event_ids);
+ }
+}
diff --git a/app/Filament/Resources/Events/Tables/Tools/LoadMultiline.php b/app/Filament/Resources/Events/Tables/Tools/LoadMultiline.php
index 56141d1c..baf83ba1 100644
--- a/app/Filament/Resources/Events/Tables/Tools/LoadMultiline.php
+++ b/app/Filament/Resources/Events/Tables/Tools/LoadMultiline.php
@@ -13,8 +13,8 @@ class LoadMultiline
public static function load()
{
- $cb = ComparingBookmaker::where('sport_id', EventsTable::$user->sport_id)
- ->where('client_bookmaker_id', EventsTable::$user->bookmaker_id)
+ $cb = ComparingBookmaker::where('sport_id', auth()->user()->sport_id)
+ ->where('client_bookmaker_id', auth()->user()->bookmaker_id)
->orderBy('sorting', 'desc')
->select('bookmaker_id', 'time_lastcheck', 'margin_threshold', 'is_active')
->get();
@@ -22,7 +22,7 @@ class LoadMultiline
$bookmakers = [];
$filter = [];
foreach ($cb as $value) {
- if (EventsTable::$user->bookmaker_id != $value->bookmaker_id) {
+ if (auth()->user()->bookmaker_id != $value->bookmaker_id) {
$bookmakers[] = $value->bookmaker_id;
$filter[$value->bookmaker_id] = [
'time_lastcheck' => $value->time_lastcheck,
@@ -31,7 +31,7 @@ class LoadMultiline
}
}
- $res = MultilineSetting::where('sport_id', EventsTable::$user->sport_id)->get();
+ $res = MultilineSetting::where('sport_id', auth()->user()->sport_id)->get();
foreach ($res as $value) {
EventsTable::$filter[$value->table] = $filter;
diff --git a/app/Filament/Resources/Events/Tables/Tools/LoadPartnerDifferences.php b/app/Filament/Resources/Events/Tables/Tools/LoadPartnerDifferences.php
index 3dea6cd1..02f39a1a 100644
--- a/app/Filament/Resources/Events/Tables/Tools/LoadPartnerDifferences.php
+++ b/app/Filament/Resources/Events/Tables/Tools/LoadPartnerDifferences.php
@@ -11,14 +11,29 @@ class LoadPartnerDifferences
public static function load()
{
$fields = OddsTable::fields();
+
$event_ids = [];
foreach (EventsTable::$bettype_settings as $table) {
- $books = DB::table($table)
- ->where('bookmaker_id', auth()->user()->bookmaker_id)
- ->get();
- $partners = DB::table($table)
- ->where('bookmaker_id', auth()->user()->partner_bookmaker_id)
- ->get();
+
+ $has_active_spread = OddsTable::where('name', $table)->value('has_active_spread');
+
+ if ($has_active_spread) {
+ $books = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->bookmaker_id)
+ ->where('active_spread', 1)
+ ->get();
+ $partners = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->partner_bookmaker_id)
+ ->where('active_spread', 1)
+ ->get();
+ } else {
+ $books = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->bookmaker_id)
+ ->get();
+ $partners = DB::table($table)
+ ->where('bookmaker_id', auth()->user()->partner_bookmaker_id)
+ ->get();
+ }
foreach ($books as $book) {
$row1 = get_object_vars($book);
diff --git a/app/Filament/Resources/Events/Widgets/AlarmWidget.php b/app/Filament/Resources/Events/Widgets/AlarmWidget.php
index 83830688..2aae6bd4 100644
--- a/app/Filament/Resources/Events/Widgets/AlarmWidget.php
+++ b/app/Filament/Resources/Events/Widgets/AlarmWidget.php
@@ -92,6 +92,8 @@ class AlarmWidget extends StatsOverviewWidget
];
}
+ return [];
+
}
public function filterAlarm($table, $alarm)
diff --git a/app/Models/Bookmaker.php b/app/Models/Bookmaker.php
index 6874fff1..1d6f1744 100644
--- a/app/Models/Bookmaker.php
+++ b/app/Models/Bookmaker.php
@@ -22,4 +22,18 @@ class Bookmaker extends Model
{
return $this->belongsTo(Sport::class)->where('is_active', 1);
}
+
+ public static function map()
+ {
+ $arr = [];
+ $res = Bookmaker::query()->where('is_active', 1)->get();
+ foreach ($res as $value) {
+ $arr[$value->id] = [
+ 'name' => $value->name,
+ 'icon' => $value->icon,
+ ];
+ }
+
+ return $arr;
+ }
}
diff --git a/app/Models/Sport.php b/app/Models/Sport.php
index 2ae0aac7..e5569f60 100644
--- a/app/Models/Sport.php
+++ b/app/Models/Sport.php
@@ -28,16 +28,9 @@ class Sport extends Model
}
}
- public static function getActiveSports()
- {
- return Sport::query()->where('is_active', 1)->pluck('id')->toArray();
- }
-
public static function getSportForClient()
{
- $user = User::find(auth()->user()->id);
-
- $sports = Client::where('id', $user->client_id)->value('sport');
+ $sports = Client::where('id', auth()->user()->client_id)->value('sport');
return Sport::query()->whereIn('id', $sports)->pluck('name', 'id');
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index fff3946a..2b94ad4f 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -32,13 +32,13 @@ class AppServiceProvider extends ServiceProvider
PanelsRenderHook::USER_MENU_PROFILE_AFTER,
fn (): string => Blade::render('@livewire(\'konto-switcher\')'),
);
- // FilamentView::registerRenderHook(
- // TablesRenderHook::TOOLBAR_SEARCH_BEFORE,
- // fn (): string => Blade::render('@livewire(\'sport-switcher\')'),
- // scopes: [
- // ListEvents::class,
- // ]
- // );
+ FilamentView::registerRenderHook(
+ TablesRenderHook::TOOLBAR_SEARCH_BEFORE,
+ fn (): string => Blade::render('@livewire(\'sport-switcher\')'),
+ scopes: [
+ ListEvents::class,
+ ]
+ );
FilamentView::registerRenderHook(
TablesRenderHook::TOOLBAR_SEARCH_AFTER,
fn (): string => Blade::render('@livewire(\'bettype-toggle\')'),
diff --git a/composer.lock b/composer.lock
index a62549aa..0527b31c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1429,16 +1429,16 @@
},
{
"name": "filament/actions",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
- "reference": "e9936617c3f74b18bf24a0645a6314a719c74a33"
+ "reference": "bb2306e893797b51f2b5debe6cf1aea03050bde0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/actions/zipball/e9936617c3f74b18bf24a0645a6314a719c74a33",
- "reference": "e9936617c3f74b18bf24a0645a6314a719c74a33",
+ "url": "https://api.github.com/repos/filamentphp/actions/zipball/bb2306e893797b51f2b5debe6cf1aea03050bde0",
+ "reference": "bb2306e893797b51f2b5debe6cf1aea03050bde0",
"shasum": ""
},
"require": {
@@ -1474,20 +1474,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:10:55+00:00"
+ "time": "2026-01-29T21:01:00+00:00"
},
{
"name": "filament/filament",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
- "reference": "2fe37fa96447cc61a70354b43f854b3632e388cc"
+ "reference": "11f5ae7226073100c6f135ebe95474d0f3af757c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/panels/zipball/2fe37fa96447cc61a70354b43f854b3632e388cc",
- "reference": "2fe37fa96447cc61a70354b43f854b3632e388cc",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/11f5ae7226073100c6f135ebe95474d0f3af757c",
+ "reference": "11f5ae7226073100c6f135ebe95474d0f3af757c",
"shasum": ""
},
"require": {
@@ -1531,20 +1531,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:10:56+00:00"
+ "time": "2026-01-29T20:54:01+00:00"
},
{
"name": "filament/forms",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
- "reference": "63dfeb69b3823e0effde1cefcdaae21c1ddf0814"
+ "reference": "3e8a07534adda42e902f9e71aaf1c86600f21473"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/forms/zipball/63dfeb69b3823e0effde1cefcdaae21c1ddf0814",
- "reference": "63dfeb69b3823e0effde1cefcdaae21c1ddf0814",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/3e8a07534adda42e902f9e71aaf1c86600f21473",
+ "reference": "3e8a07534adda42e902f9e71aaf1c86600f21473",
"shasum": ""
},
"require": {
@@ -1581,20 +1581,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:10:56+00:00"
+ "time": "2026-01-29T21:01:38+00:00"
},
{
"name": "filament/infolists",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
- "reference": "841a0520637b98822f09d008509e040ba9ef3faa"
+ "reference": "03228d5cf9310598712299d49ac38b75d61d7c1c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/infolists/zipball/841a0520637b98822f09d008509e040ba9ef3faa",
- "reference": "841a0520637b98822f09d008509e040ba9ef3faa",
+ "url": "https://api.github.com/repos/filamentphp/infolists/zipball/03228d5cf9310598712299d49ac38b75d61d7c1c",
+ "reference": "03228d5cf9310598712299d49ac38b75d61d7c1c",
"shasum": ""
},
"require": {
@@ -1626,11 +1626,11 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-23T10:58:05+00:00"
+ "time": "2026-01-29T21:00:53+00:00"
},
{
"name": "filament/notifications",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
@@ -1677,16 +1677,16 @@
},
{
"name": "filament/query-builder",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/query-builder.git",
- "reference": "bcafe9bb71ec34292440c4bded5ee395f037b2a5"
+ "reference": "b5e0c22ac1d10c9c56ae344577d2a437d876f6ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/bcafe9bb71ec34292440c4bded5ee395f037b2a5",
- "reference": "bcafe9bb71ec34292440c4bded5ee395f037b2a5",
+ "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/b5e0c22ac1d10c9c56ae344577d2a437d876f6ba",
+ "reference": "b5e0c22ac1d10c9c56ae344577d2a437d876f6ba",
"shasum": ""
},
"require": {
@@ -1719,20 +1719,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-23T10:52:35+00:00"
+ "time": "2026-01-29T21:01:39+00:00"
},
{
"name": "filament/schemas",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/schemas.git",
- "reference": "1638d2b16f7684b7925d9c6253592ecd308d7f12"
+ "reference": "e1bdda85e9fb5d65774df153e0357eb41c7c7a3d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/schemas/zipball/1638d2b16f7684b7925d9c6253592ecd308d7f12",
- "reference": "1638d2b16f7684b7925d9c6253592ecd308d7f12",
+ "url": "https://api.github.com/repos/filamentphp/schemas/zipball/e1bdda85e9fb5d65774df153e0357eb41c7c7a3d",
+ "reference": "e1bdda85e9fb5d65774df153e0357eb41c7c7a3d",
"shasum": ""
},
"require": {
@@ -1764,20 +1764,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:11:14+00:00"
+ "time": "2026-01-29T21:01:33+00:00"
},
{
"name": "filament/support",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
- "reference": "26894b15b989f89c83b004b38e513b9b2843a0c4"
+ "reference": "67a017956b2fe3d37425a2df0d1f8e18c30b42e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/support/zipball/26894b15b989f89c83b004b38e513b9b2843a0c4",
- "reference": "26894b15b989f89c83b004b38e513b9b2843a0c4",
+ "url": "https://api.github.com/repos/filamentphp/support/zipball/67a017956b2fe3d37425a2df0d1f8e18c30b42e2",
+ "reference": "67a017956b2fe3d37425a2df0d1f8e18c30b42e2",
"shasum": ""
},
"require": {
@@ -1822,20 +1822,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:11:14+00:00"
+ "time": "2026-01-29T21:00:17+00:00"
},
{
"name": "filament/tables",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
- "reference": "ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c"
+ "reference": "6dd74c575e68c26553d373dcf2e5202fa4e7d713"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/tables/zipball/ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c",
- "reference": "ae5a17dfc442b9ac9ff6d3f91a96538c3771ee3c",
+ "url": "https://api.github.com/repos/filamentphp/tables/zipball/6dd74c575e68c26553d373dcf2e5202fa4e7d713",
+ "reference": "6dd74c575e68c26553d373dcf2e5202fa4e7d713",
"shasum": ""
},
"require": {
@@ -1868,20 +1868,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-27T12:10:54+00:00"
+ "time": "2026-01-29T21:01:20+00:00"
},
{
"name": "filament/widgets",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
- "reference": "2dfe6ea8d6a491cdf1eb7056561ec9db4b8cfeb2"
+ "reference": "d9b5a35a04048bea86563223d2505d11aea5a7e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/widgets/zipball/2dfe6ea8d6a491cdf1eb7056561ec9db4b8cfeb2",
- "reference": "2dfe6ea8d6a491cdf1eb7056561ec9db4b8cfeb2",
+ "url": "https://api.github.com/repos/filamentphp/widgets/zipball/d9b5a35a04048bea86563223d2505d11aea5a7e0",
+ "reference": "d9b5a35a04048bea86563223d2505d11aea5a7e0",
"shasum": ""
},
"require": {
@@ -1912,7 +1912,7 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-01-23T10:56:26+00:00"
+ "time": "2026-01-29T20:48:44+00:00"
},
{
"name": "fruitcake/php-cors",
@@ -4181,16 +4181,16 @@
},
{
"name": "nesbot/carbon",
- "version": "3.11.0",
+ "version": "3.11.1",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
- "reference": "bdb375400dcd162624531666db4799b36b64e4a1"
+ "reference": "f438fcc98f92babee98381d399c65336f3a3827f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1",
- "reference": "bdb375400dcd162624531666db4799b36b64e4a1",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f",
+ "reference": "f438fcc98f92babee98381d399c65336f3a3827f",
"shasum": ""
},
"require": {
@@ -4214,7 +4214,7 @@
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.22",
"phpunit/phpunit": "^10.5.53",
- "squizlabs/php_codesniffer": "^3.13.4"
+ "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0"
},
"bin": [
"bin/carbon"
@@ -4257,14 +4257,14 @@
}
],
"description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "https://carbon.nesbot.com",
+ "homepage": "https://carbonphp.github.io/carbon/",
"keywords": [
"date",
"datetime",
"time"
],
"support": {
- "docs": "https://carbon.nesbot.com/docs",
+ "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html",
"issues": "https://github.com/CarbonPHP/carbon/issues",
"source": "https://github.com/CarbonPHP/carbon"
},
@@ -4282,7 +4282,7 @@
"type": "tidelift"
}
],
- "time": "2025-12-02T21:04:28+00:00"
+ "time": "2026-01-29T09:26:29+00:00"
},
{
"name": "nette/php-generator",
@@ -9479,7 +9479,7 @@
},
{
"name": "filament/upgrade",
- "version": "v4.6.1",
+ "version": "v4.6.2",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/upgrade.git",
diff --git a/database/migrations/2026_01_27_132542_create_odds_tables_table.php b/database/migrations/2026_01_27_132542_create_odds_tables_table.php
index 61e032d4..d5280a4b 100644
--- a/database/migrations/2026_01_27_132542_create_odds_tables_table.php
+++ b/database/migrations/2026_01_27_132542_create_odds_tables_table.php
@@ -15,6 +15,7 @@ return new class extends Migration
$table->id();
$table->string('name');
$table->string('title');
+ $table->boolean(column: 'has_active_spread')->default(0);
$table->string('oddnames');
$table->string('fieldnames');
$table->timestamps();
diff --git a/database/seeders/OddsTableSeeder.php b/database/seeders/OddsTableSeeder.php
index 0b4da4f2..0b58446a 100644
--- a/database/seeders/OddsTableSeeder.php
+++ b/database/seeders/OddsTableSeeder.php
@@ -12,22 +12,22 @@ class OddsTableSeeder extends Seeder
/**
* Provoider
*/
- $sql = "INSERT INTO `odds_tables` (`id`, `name`, `title`, `oddnames`, `fieldnames`, `created_at`, `updated_at`)
+ $sql = "INSERT INTO `odds_tables` (`id`, `name`, `title`, `oddnames`, `fieldnames`, `has_active_spread`, `created_at`, `updated_at`)
VALUES
- (1, 'odds_2ways', 'ML', 'h2w,a2w', 'alarm_2w_h2w,alarm_2w_a2w', NULL, NULL),
- (2, 'odds_2ways_s1', 'ML S1', 'h2w,a2w', 'alarm_2ws1_h2w,alarm_2ws1_a2w', NULL, NULL),
- (3, 'odds_3ways', '1X2', 'h3w,d3w,a3w', 'alarm_3w_h3w,alarm_3w_d3w,alarm_3w_a3w', NULL, NULL),
- (4, 'odds_3ways_ht', '1X2 HT', 'h3w,d3w,a3w', 'alarm_3wht_h3w,alarm_3wht_d3w,alarm_3wht_a3w', NULL, NULL),
- (5, 'odds_dc', 'DC', 'dc1x,dc12,dcx2', 'alarm_dc_dc1x,alarm_dc_dc12,alarm_dc_dcx2', NULL, NULL),
- (6, 'odds_dnb', 'DNB', 'dnb1,dnb2', 'alarm_dbn_dnb1,alarm_dbn_dnb2', NULL, NULL),
- (7, 'odds_ggng', 'GGNG', 'gg,ng', 'alarm_ggng_gg,alarm_ggng_ng', NULL, NULL),
- (8, 'odds_points', 'PO', 'home,away', 'alarm_po_home,alarm_po_away', NULL, NULL),
- (9, 'odds_points_ht', 'PO HT', 'home,away', 'alarm_poht_home,alarm_poht_away', NULL, NULL),
- (10, 'odds_points_q1', 'PO Q1', 'home,away', 'alarm_poq1_home,alarm_poq1_away', NULL, NULL),
- (11, 'odds_totals', 'TO', 'over,under', 'alarm_to_over,alarm_to_under', NULL, NULL),
- (12, 'odds_totals_ht', 'TO HT', 'over,under', 'alarm_toht_over,alarm_toht_under', NULL, NULL),
- (13, 'odds_totals_q1', 'TO Q1', 'over,under', 'alarm_toq1_over,alarm_toq1_under', NULL, NULL),
- (14, 'odds_tq', 'TQ', 'htq,atq', 'alarm_tq_htq,alarm_tq_atq', NULL, NULL);
+ (1, 'odds_2ways', 'ML', 'h2w,a2w', 'alarm_2w_h2w,alarm_2w_a2w', 0, NULL, NULL),
+ (2, 'odds_2ways_s1', 'ML S1', 'h2w,a2w', 'alarm_2ws1_h2w,alarm_2ws1_a2w', 0, NULL, NULL),
+ (3, 'odds_3ways', '1X2', 'h3w,d3w,a3w', 'alarm_3w_h3w,alarm_3w_d3w,alarm_3w_a3w', 0, NULL, NULL),
+ (4, 'odds_3ways_ht', '1X2 HT', 'h3w,d3w,a3w', 'alarm_3wht_h3w,alarm_3wht_d3w,alarm_3wht_a3w', 0, NULL, NULL),
+ (5, 'odds_dc', 'DC', 'dc1x,dc12,dcx2', 'alarm_dc_dc1x,alarm_dc_dc12,alarm_dc_dcx2', 0, NULL, NULL),
+ (6, 'odds_dnb', 'DNB', 'dnb1,dnb2', 'alarm_dbn_dnb1,alarm_dbn_dnb2', 0, NULL, NULL),
+ (7, 'odds_ggng', 'GGNG', 'gg,ng', 'alarm_ggng_gg,alarm_ggng_ng', 0, NULL, NULL),
+ (8, 'odds_points', 'PO', 'home,away', 'alarm_po_home,alarm_po_away', 1, NULL, NULL),
+ (9, 'odds_points_ht', 'PO HT', 'home,away', 'alarm_poht_home,alarm_poht_away', 1, NULL, NULL),
+ (10, 'odds_points_q1', 'PO Q1', 'home,away', 'alarm_poq1_home,alarm_poq1_away', 1, NULL, NULL),
+ (11, 'odds_totals', 'TO', 'over,under', 'alarm_to_over,alarm_to_under', 1, NULL, NULL),
+ (12, 'odds_totals_ht', 'TO HT', 'over,under', 'alarm_toht_over,alarm_toht_under', 1, NULL, NULL),
+ (13, 'odds_totals_q1', 'TO Q1', 'over,under', 'alarm_toq1_over,alarm_toq1_under', 1, NULL, NULL),
+ (14, 'odds_tq', 'TQ', 'htq,atq', 'alarm_tq_htq,alarm_tq_atq', 1, NULL, NULL);
";
DB::unprepared($sql);
diff --git a/resources/views/livewire/bettype-toggle.blade.php b/resources/views/livewire/bettype-toggle.blade.php
index 27d3072a..d4240426 100644
--- a/resources/views/livewire/bettype-toggle.blade.php
+++ b/resources/views/livewire/bettype-toggle.blade.php
@@ -2,7 +2,8 @@