basic comparatore completed

This commit is contained in:
salam committed 2025-12-26 10:42:51 +01:00
1 parent cbdc6aff47
commit 16cc214db6
80 files changed
+2413 -2794

No files matched your search

@@ -7,10 +7,12 @@ use App\Filament\Tables\Columns\ColumnDc;
use App\Filament\Tables\Columns\ColumnDnb;
use App\Filament\Tables\Columns\ColumnGgng;
use App\Filament\Tables\Columns\ColumnTotal;
use App\Filament\Tables\Columns\ColumnTq;
use App\Filament\Tables\Columns\MatchIds;
use App\Models\BettypeUser;
use App\Models\Country;
use App\Models\Event;
use App\Models\MultilineClient;
use Carbon\Carbon;
use Filament\Actions\Action;
use Filament\Actions\ActionGroup;
@@ -19,8 +21,8 @@ use Filament\Actions\EditAction;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Support\Enums\FontWeight;
use Filament\Support\Enums\VerticalAlignment;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Columns\Layout\View;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\Filter;
@@ -31,6 +33,81 @@ class EventsTable
{
public static $bettype_settings = [];
public static $multiline_bookmaker = [];
public static $odds_3ways = [];
public static $odds_totals = [];
public static $odds_totals_q1 = [];
public static $odds_dc = [];
public static $odds_dnb = [];
public static $odds_ggng = [];
public static $odds_handicaps = [];
public static $odds_handicaps_q1 = [];
public static $odds_2ways = [];
public static $odds_2ways_s1 = [];
public static $odds_tq = [];
public static function load_multiline_bookmaker()
{
$res = MultilineClient::where('client_id', auth()->user()->client_id)->where('sport_id', auth()->user()->sport_id)->select('bookmaker_id', 'multiline_setting_id')->orderBy('multiline_setting_id')->orderBy('sort')->get();
foreach ($res as $value) {
switch ($value->multiline_setting_id) {
case 1:
case 13:
self::$odds_3ways[] = $value->bookmaker_id;
break;
case 2:
self::$odds_dc[] = $value->bookmaker_id;
break;
case 3:
self::$odds_dnb[] = $value->bookmaker_id;
break;
case 4:
self::$odds_ggng[] = $value->bookmaker_id;
break;
case 5:
self::$odds_tq[] = $value->bookmaker_id;
break;
case 8:
case 14:
self::$odds_handicaps[] = $value->bookmaker_id;
break;
case 9:
self::$odds_handicaps_q1[] = $value->bookmaker_id;
break;
case 7:
case 12:
case 16:
self::$odds_2ways[] = $value->bookmaker_id;
break;
case 17:
self::$odds_2ways_s1[] = $value->bookmaker_id;
break;
case 6:
case 10:
case 15:
case 18:
self::$odds_totals[] = $value->bookmaker_id;
break;
case 11:
self::$odds_totals_q1[] = $value->bookmaker_id;
break;
}
}
}
public static function load_bettype_settings()
{
self::$bettype_settings = BettypeUser::where('user_id', auth()->user()->id)->where('sport_id', auth()->user()->sport_id)->where('is_active', 1)->pluck('multiline_setting_id')->toArray();
@@ -40,6 +117,8 @@ class EventsTable
{
self::load_bettype_settings();
self::load_multiline_bookmaker();
return $table
->striped()
->columns([
@@ -49,55 +128,86 @@ class EventsTable
->color('primary')
->width(30)
->icon(fn ($record) => $record->sport->icon)
->tooltip(fn ($record) => $record->id),
// MatchIds::make('match_ids')
// ->grow(false),
TextColumn::make('id')->hidden()->searchable(),
TextColumn::make('betsapi_id')->hidden()->searchable(),
TextColumn::make('betradar_id')->hidden()->searchable(),
TextColumn::make('bet365_id')->hidden()->searchable(),
TextColumn::make('bwin_id')->hidden()->searchable(),
->tooltip(fn ($record) => $record->id)
->visibleFrom('lg'),
// MatchIds::make('match_ids')->grow(false)->visibleFrom('xl'),
TextColumn::make('starttime')
->label('Start')
->alignCenter()
->dateTime('H:i')
->weight(FontWeight::Bold)
->description(fn ($state): string => Carbon::createFromDate($state)->format('d. M')),
TextColumn::make('country.name')
->width('20rem')
->searchable()
->wrap()
->color('gray')
->label('Event')
->icon(fn ($record) => $record->country->icon)
->description(fn ($record) => $record->competition_group->name),
TextColumn::make('home.name')
->wrap()
->searchable()
->alignRight(),
TextColumn::make('away.name')
->wrap()
->searchable(),
Column3way::make('odds3way')->visible(fn () => in_array(1, self::$bettype_settings))->width(225)->label('1 X 2'),
ColumnDc::make('oddsdc')->visible(fn () => in_array(2, self::$bettype_settings))->width(225)->label('Double Chance'),
ColumnDnb::make('oddsdnb')->visible(fn () => in_array(3, self::$bettype_settings))->width(190)->label('Draw No Bet'),
ColumnGgng::make('oddsggng')->visible(fn () => in_array(4, self::$bettype_settings))->width(190)->label('Goal No Goal'),
ColumnGgng::make('oddstq')->visible(fn () => in_array(5, self::$bettype_settings))->width(190)->label('To Qualify'),
ColumnTotal::make('oddstotal')->visible(fn () => in_array(6, self::$bettype_settings))->width(225)->label('Totals'),
// Column3way::make('odds3way')->visible(fn () => in_array(1, self::$bettype_settings))->width(225)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => '1x2'])),
// ColumnDc::make('oddsdc')->visible(fn () => in_array(2, self::$bettype_settings))->width(225)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'dc'])),
// ColumnDnb::make('oddsdnb')->visible(fn () => in_array(3, self::$bettype_settings))->width(190)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'dnb'])),
// ColumnGgng::make('oddsggng')->visible(fn () => in_array(4, self::$bettype_settings))->width(190)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'gg'])),
// ColumnGgng::make('oddstq')->visible(fn () => in_array(5, self::$bettype_settings))->width(190)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'tq'])),
// ColumnTotal::make('oddstotal')->visible(fn () => in_array(6, self::$bettype_settings))->width(225)->label(fn () => view('filament.tables.columns.multiline.labels', ['menu' => 'ou'])),
])
Column3way::make('odds3way')->bookmakers(self::$odds_3ways)
->visible(fn () => in_array(1, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(225)
->label('1 X 2')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
ColumnDc::make('oddsdc')->bookmakers(self::$odds_dc)
->visible(fn () => in_array(2, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(225)
->label('Double Chance')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
ColumnDnb::make('oddsdnb')->bookmakers(self::$odds_dnb)
->visible(fn () => in_array(3, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(190)
->label('Draw No Bet')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
ColumnGgng::make('oddsggng')->bookmakers(self::$odds_ggng)
->visible(fn () => in_array(4, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(190)
->label('Goal No Goal')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
ColumnTq::make('oddstq')->bookmakers(self::$odds_tq)
->visible(fn () => in_array(5, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(190)
->label('To Qualify')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
ColumnTotal::make('oddstotal')->bookmakers(self::$odds_totals)
->visible(fn () => in_array(6, self::$bettype_settings))
->verticalAlignment(VerticalAlignment::Start)
->width(225)
->label('Totals')
->extraCellAttributes(['class' => 'border-l border-gray-200 dark:border-gray-800']),
])->searchable(['id', 'betsapi_id', 'betradar_id', 'bet365_id', 'bwin_id'])
->poll('10s')
->defaultSort('starttime', 'ASC')
->filters([
Filter::make('events')
->schema([
Select::make('country_id')
->label('Country')
->placeholder('Country')
->hiddenLabel()
->label('')
->searchable()
->preload()
->options(function () {
@@ -111,7 +221,9 @@ class EventsTable
$set('competition_group_id', null);
}),
Select::make('competition_group_id')
->label('League')
->placeholder('League')
->hiddenLabel()
->label('')
->multiple()
->columnSpan(2)
->searchable()
@@ -149,10 +261,10 @@ class EventsTable
->recordActions([
ActionGroup::make([
// EditAction::make(),
// DeleteAction::make(),
DeleteAction::make()->visible(fn () => auth()->user()->hasRole('super_admin')),
Action::make('txodds_odds')
->label('TxOdds')
->disabled(fn () => ! auth()->user()->super_admin)
->disabled(fn () => ! auth()->user()->hasRole('super_admin'))
->icon('heroicon-o-arrow-top-right-on-square')
->url(fn ($record): string => route('txodds_odds', ['sportid' => $record->sport_id, 'txoddsid' => $record->id]))
->openUrlInNewTab(),