diff --git a/app/Console/Commands/Grapper/TxOdds/Odds.php b/app/Console/Commands/Grapper/TxOdds/Odds.php index 8f9b045a..dbebf235 100644 --- a/app/Console/Commands/Grapper/TxOdds/Odds.php +++ b/app/Console/Commands/Grapper/TxOdds/Odds.php @@ -4,6 +4,10 @@ namespace App\Console\Commands\Grapper\TxOdds; use App\Console\Commands\Grapper\TxOdds\Odds\_3Way; use App\Console\Commands\Grapper\TxOdds\Odds\_Dc; +use App\Console\Commands\Grapper\TxOdds\Odds\_Dnb; +use App\Console\Commands\Grapper\TxOdds\Odds\_Ggng; +use App\Console\Commands\Grapper\TxOdds\Odds\_Totals; +use App\Console\Commands\Grapper\TxOdds\Odds\_Tq; use App\Console\Commands\NuhBash; use App\Console\Commands\Xml; use App\Models\CompetitionGroup; @@ -11,12 +15,6 @@ use App\Models\Element; use App\Models\Event; use App\Models\EventBookmaker; use App\Models\Group; -use App\Models\Odds2way; -use App\Models\Odds3way; -use App\Models\OddsDc; -use App\Models\OddsGgng; -use App\Models\OddsQualify; -use App\Models\OddsTotal; use App\Utilities\Notice; use Carbon\Carbon; @@ -59,6 +57,7 @@ class Odds 11534337 GG/NG (both teams to score) 5242880 DOUBLE CHANCE 7340033 TO PROGRESS (to_qualify) + 6291457 DRAW NO BET Not used: @@ -71,7 +70,6 @@ class Odds 2097153 ODD / EVEN 4194304 TOTAL GOALS - 6291457 DRAW NO BET 8388608 1X2 EURO HANDCIAP 9437188 TOTAL CORNERS 9502724 TOTAL CORNERS 1ST HALF @@ -85,7 +83,7 @@ class Odds switch (NuhBash::$options['sport_id']) { case 1: - $markets = '0,4,11534337,5242880,7340033'; + $markets = '0,4,11534337,5242880,7340033,6291457'; break; case 2: // needs check @@ -184,7 +182,10 @@ class Odds foreach ($row->bookmaker as $book) { $odds = []; + $odds['event_id'] = NuhBash::$_event->id; $odds['bookmaker_id'] = (int) $book['bid']; + $odds['sport_id'] = (int) $event['sport_id']; + $odds['provider_id'] = 2; NuhBash::$_event_bookmaker = []; @@ -209,15 +210,25 @@ class Odds } } - Notice::note($bettypeid, 'b'); - switch ($bettypeid) { case 0: _3Way::grap($odds, $offer); break; + case 4: + _Totals::grap($odds, $offer); + break; case 5242880: _Dc::grap($odds, $offer); break; + case 6291457: + _Dnb::grap($odds, $offer); + break; + case 11534337: + _Ggng::grap($odds, $offer); + break; + case 7340033: + _Tq::grap($odds, $offer); + break; default: Notice::note('ERROR Bettype ID not set: '.$bettypeid, 'r'); @@ -227,10 +238,6 @@ class Odds foreach (NuhBash::$_event_bookmaker as $value) { - if ($debug) { - Notice::note('Event Bookmaker', 'b'); - } - EventBookmaker::updateOrCreate([ 'event_id' => NuhBash::$_event->id, 'bookmaker_id' => $odds['bookmaker_id'], @@ -244,213 +251,9 @@ class Odds } } - // foreach ($json_obj['match'] as $match) { - - // self::$event = []; - - // foreach ($match as $key => $v) { - - // // if ($debug) { - // // Notice::note($key, 'b'); - // // } - - // switch ($key) { - - // case '@attributes': - // self::$event['id'] = (int) $v['id']; - // break; - - // case 'time': - // self::$event['starttime'] = Carbon::createFromDate($v)->toDateTimeString(); - // break; - - // case 'group': - - // self::$event['sport_id'] = (int) $v['@attributes']['spid']; - // self::$event['country_id'] = (int) $v['@attributes']['cnid']; - // self::$event['group_id'] = (int) $v['@attributes']['id']; - // self::$event['competition_group_id'] = (int) $v['@attributes']['cgid']; - // break; - - // case 'hteam': - // self::$event['home_id'] = $v['@attributes']['id']; - // break; - - // case 'ateam': - // self::$event['away_id'] = $v['@attributes']['id']; - // break; - - // case 'bookmaker': - - // Event::updateOrCreate(self::$event, ['starttime' => self::$event['starttime']]); - - // Notice::note(count($v), 'r'); - - // if (count($v) <= 2) { - // $bkmid = (int) $v['@attributes']['bid']; - // Notice::note($v, 'p'); - // } else { - // foreach ($v as $books) { - - // Notice::note($books, 'b'); - - // $bkmid = (int) $books['@attributes']['bid']; - - // // foreach ($books['offer'] as $bk => $book) { - - // // if ($bkmid) { - // // foreach ($book as $type => $od) { - - // // switch ($type) { - // // case '@attributes': - // // $bettypeid = (int) $od['ot']; - // // $bmoid = (int) $od['bmoid']; - // // break; - // // case 'odds': - // // switch ($bettypeid) { - // // case '0': - // // Odds3way::updateOrCreate( - // // [ - // // 'event_id' => $event->id, - // // 'bookmaker_id' => $bkmid, - // // 'sport_id' => NuhBash::$options['sport_id'], - // // ], - // // [ - // // 'h3w' => (float) $od['o1'], - // // 'd3w' => (float) $od['o2'], - // // 'a3w' => (float) $od['o3'], - // // 'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1), - // // 'flag' => 1, - // // 'nuh_check' => 0, - // // 'source_updated_at' => $od['@attributes']['time'], - // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // ] - // // ); - - // // EventBookmaker::updateOrCreate([ - // // 'event_id' => $event->id, - // // 'bookmaker_id' => $bkmid, - // // 'bmoid' => $bmoid, - // // ], [ - // // 'bkm_starttime' => Carbon::createFromDate($od['@attributes']['starting_time'])->toDateTimeString(), - // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // ]); - - // // break; - - // // // case '1': - // // // Odds2way::updateOrCreate( - // // // [ - // // // 'event_id' => $event->id, - // // // 'bookmaker_id' => $bkmid, - // // // 'sport_id' => NuhBash::$options['sport_id'], - // // // ], - // // // [ - // // // 'h2w' => (float) $od['o1'], - // // // 'a2w' => (float) $od['o3'], - // // // 'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1), - // // // 'flag' => 1, - // // // 'nuh_check' => 0, - // // // 'source_updated_at' => $od['@attributes']['time'], - // // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // // ] - // // // ); - // // // break; - - // // // case '4': - // // // OddsTotal::updateOrCreate( - // // // [ - // // // 'event_id' => $event->id, - // // // 'bookmaker_id' => $bkmid, - // // // 'sport_id' => NuhBash::$options['sport_id'], - // // // 'spread' => (float) $od['o3'], - // // // ], - // // // [ - // // // 'over' => (float) $od['o1'], - // // // 'under' => (float) $od['o2'], - // // // 'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1), - // // // 'flag' => 1, - // // // 'nuh_check' => 0, - // // // 'source_updated_at' => $od['@attributes']['time'], - // // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // // ] - // // // ); - // // // break; - - // // // case '5242880': - // // // OddsDc::updateOrCreate( - // // // [ - // // // 'event_id' => $event->id, - // // // 'bookmaker_id' => $bkmid, - // // // 'sport_id' => NuhBash::$options['sport_id'], - // // // ], - // // // [ - // // // 'dc1x' => (float) $od['o1'], - // // // 'dc12' => (float) $od['o2'], - // // // 'dc2x' => (float) $od['o3'], - // // // 'margin' => (float) Helper::margin([$od['o1'], $od['o2'], $od['o3']], 1), - // // // 'flag' => 1, - // // // 'nuh_check' => 0, - // // // 'source_updated_at' => $od['@attributes']['time'], - // // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // // ] - // // // ); - // // // break; - - // // // case '11534337': - // // // OddsGgng::updateOrCreate( - // // // [ - // // // 'event_id' => $event->id, - // // // 'bookmaker_id' => $bkmid, - // // // 'sport_id' => NuhBash::$options['sport_id'], - // // // ], - // // // [ - // // // 'gg' => (float) $od['o1'], - // // // 'ng' => (float) $od['o3'], - // // // 'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1), - // // // 'flag' => 1, - // // // 'nuh_check' => 0, - // // // 'source_updated_at' => $od['@attributes']['time'], - // // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // // ] - // // // ); - // // // break; - - // // // case '11534337': - // // // OddsQualify::updateOrCreate( - // // // [ - // // // 'event_id' => $event->id, - // // // 'bookmaker_id' => $bkmid, - // // // 'sport_id' => NuhBash::$options['sport_id'], - // // // ], - // // // [ - // // // 'htq' => (float) $od['o1'], - // // // 'atq' => (float) $od['o2'], - // // // 'margin' => (float) Helper::margin([$od['o1'], $od['o3']], 1), - // // // 'flag' => 1, - // // // 'nuh_check' => 0, - // // // 'source_updated_at' => $od['@attributes']['time'], - // // // 'last_check_at' => Carbon::now()->toDateTimeString(), - // // // ] - // // // ); - // // // break; - // // } - - // // break; - // // } - // // } - // // break; - // // } - // // } - // } - // break; - // } - - // } - - // } - // Notice::note('END', 'r', 1); - // } + if ($debug) { + Notice::note('END', 'g', 1); + } } } } diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_3Way.php b/app/Console/Commands/Grapper/TxOdds/Odds/_3Way.php index 30030de5..66c6b405 100644 --- a/app/Console/Commands/Grapper/TxOdds/Odds/_3Way.php +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_3Way.php @@ -16,7 +16,7 @@ class _3Way $debug = NuhBash::$options['d'] ?? 0; if ($debug) { - Notice::note('Odds 3 Way', 'b'); + Notice::note('1X2 '.$odds['bookmaker_id'], 'b'); } $update_array = []; @@ -41,9 +41,6 @@ class _3Way $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); $update_array['source_updated_at'] = $odds['source_updated_at']; - Odds3way::updateOrCreate([ - 'event_id' => NuhBash::$_event->id, - 'bookmaker_id' => $odds['bookmaker_id'], - ], $update_array); + Odds3way::updateOrCreate($odds, $update_array); } } diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_Dc.php b/app/Console/Commands/Grapper/TxOdds/Odds/_Dc.php index 916e5f92..e837ed9e 100644 --- a/app/Console/Commands/Grapper/TxOdds/Odds/_Dc.php +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_Dc.php @@ -15,7 +15,7 @@ class _Dc $debug = NuhBash::$options['d'] ?? 0; if ($debug) { - Notice::note('Double Chance', 'b'); + Notice::note('Double Chance '.$odds['bookmaker_id'], 'b'); } $update_array = []; @@ -33,9 +33,6 @@ class _Dc $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); $update_array['source_updated_at'] = $odds['source_updated_at']; - OddsDc::updateOrCreate([ - 'event_id' => NuhBash::$_event->id, - 'bookmaker_id' => $odds['bookmaker_id'], - ], $update_array); + OddsDc::updateOrCreate($odds, $update_array); } } diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_Dnb.php b/app/Console/Commands/Grapper/TxOdds/Odds/_Dnb.php new file mode 100644 index 00000000..9049da16 --- /dev/null +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_Dnb.php @@ -0,0 +1,37 @@ +o1; + $update_array['dnb2'] = (float) $value->o3; + } + $update_array['margin'] = (float) Margin::calculate($update_array, 1); + + $update_array['bmoid'] = $odds['bmoid']; + $update_array['offer_id'] = $odds['offer_id']; + $update_array['flag'] = 1; + $update_array['nuh_check'] = 0; + $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); + $update_array['source_updated_at'] = $odds['source_updated_at']; + + OddsDnb::updateOrCreate($odds, $update_array); + } +} diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_Ggng.php b/app/Console/Commands/Grapper/TxOdds/Odds/_Ggng.php new file mode 100644 index 00000000..acffaf3b --- /dev/null +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_Ggng.php @@ -0,0 +1,37 @@ +o1; + $update_array['ng'] = (float) $value->o3; + } + $update_array['margin'] = (float) Margin::calculate($update_array, 1); + + $update_array['bmoid'] = $odds['bmoid']; + $update_array['offer_id'] = $odds['offer_id']; + $update_array['flag'] = 1; + $update_array['nuh_check'] = 0; + $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); + $update_array['source_updated_at'] = $odds['source_updated_at']; + + OddsGgng::updateOrCreate($odds, $update_array); + } +} diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_Totals.php b/app/Console/Commands/Grapper/TxOdds/Odds/_Totals.php new file mode 100644 index 00000000..dedadc23 --- /dev/null +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_Totals.php @@ -0,0 +1,46 @@ +o1; + $update_array['under'] = (float) $value->o2; + $update_array['total'] = (float) $value->o3; + } + + if ($odds['sport_id'] == 1) { + if ((float) $update_array['total'] != 2.5) { + return; + } + } + + $update_array['margin'] = (float) Margin::calculate([$update_array['over'], $update_array['under']], 1); + + $update_array['bmoid'] = $odds['bmoid']; + $update_array['offer_id'] = $odds['offer_id']; + $update_array['flag'] = 1; + $update_array['nuh_check'] = 0; + $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); + $update_array['source_updated_at'] = $odds['source_updated_at']; + + OddsTotal::updateOrCreate($odds, $update_array); + } +} diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/_Tq.php b/app/Console/Commands/Grapper/TxOdds/Odds/_Tq.php new file mode 100644 index 00000000..49bb301c --- /dev/null +++ b/app/Console/Commands/Grapper/TxOdds/Odds/_Tq.php @@ -0,0 +1,37 @@ +o1; + $update_array['atq'] = (float) $value->o3; + } + $update_array['margin'] = (float) Margin::calculate($update_array, 1); + + $update_array['bmoid'] = $odds['bmoid']; + $update_array['offer_id'] = $odds['offer_id']; + $update_array['flag'] = 1; + $update_array['nuh_check'] = 0; + $update_array['last_check_at'] = Carbon::now()->toDateTimeString(); + $update_array['source_updated_at'] = $odds['source_updated_at']; + + OddsQualify::updateOrCreate($odds, $update_array); + } +} diff --git a/app/Filament/Resources/Events/Tables/EventsTable.php b/app/Filament/Resources/Events/Tables/EventsTable.php index e4fa22a8..9d48194a 100644 --- a/app/Filament/Resources/Events/Tables/EventsTable.php +++ b/app/Filament/Resources/Events/Tables/EventsTable.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\Events\Tables; use App\Filament\Tables\Columns\Odds3Way; +use App\Filament\Tables\Columns\OddsTotals; use Carbon\Carbon; use Filament\Actions\DeleteAction; use Filament\Actions\EditAction; @@ -26,7 +27,7 @@ class EventsTable ->size(IconSize::ExtraLarge) ->icon(fn ($record) => $record->sport->icon) ->tooltip(fn ($record) => $record->id), - TextColumn::make('txodds_id')->label('Match Id')->badge()->copyable(), + TextColumn::make('txodds_id')->label('Match Id')->badge()->copyable()->searchable(), TextColumn::make('starttime') ->label('Start') ->alignCenter() @@ -41,7 +42,8 @@ class EventsTable TextColumn::make('home.name')->alignRight()->searchable(), TextColumn::make('away.name')->searchable(), - Odds3Way::make('odds_3way.bookmaker')->label('Market')->visible(auth()->user()->multiline_setting_id == 1), + Odds3Way::make('odds_3way.bookmaker')->label('1X2')->visible(auth()->user()->multiline_setting_id == 1), + OddsTotals::make('odds_totals.bookmaker')->label('Totals')->visible(auth()->user()->multiline_setting_id == 6), ]) ->defaultSort('starttime', 'ASC') ->deferFilters(false) diff --git a/app/Filament/Resources/MultilineClients/MultilineClientResources.php b/app/Filament/Resources/MultilineClients/MultilineClientResources.php index 1f8fd4af..94e1b8fd 100644 --- a/app/Filament/Resources/MultilineClients/MultilineClientResources.php +++ b/app/Filament/Resources/MultilineClients/MultilineClientResources.php @@ -23,6 +23,12 @@ class MultilineClientResources extends Resource // protected static string|\UnitEnum|null $navigationGroup = 'Settings'; + protected static ?string $navigationLabel = 'Multiline'; + + protected static ?string $modelLabel = 'Multiline'; + + protected static ?string $title = 'Multiline'; + public static function form(Schema $schema): Schema { return MultilineClientForm::configure($schema); diff --git a/app/Filament/Resources/MultilineClients/Tables/MultilineClientsTable.php b/app/Filament/Resources/MultilineClients/Tables/MultilineClientsTable.php index 4a5e8139..988179ce 100644 --- a/app/Filament/Resources/MultilineClients/Tables/MultilineClientsTable.php +++ b/app/Filament/Resources/MultilineClients/Tables/MultilineClientsTable.php @@ -41,8 +41,17 @@ class MultilineClientsTable TextColumn::make('multiline_setting.name')->label('Bettype'), BookmakerIcon::make('bookmaker.icon')->label('Icon'), SelectColumn::make('bookmaker_id') + ->label('Bookmaker') ->width('2rem') - ->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid')), + ->options(function () { + $books = Bookmaker::where('is_active', 1)->orderBy('txid')->pluck('name', 'txid'); + foreach ($books as $key => $value) { + $books[$key] = $key.' - '.$value; + } + + return $books; + }), + // ->options(Bookmaker::where('is_active', 1)->pluck('name', 'txid')), ]) ->defaultSort('sort') ->deferFilters(false) diff --git a/app/Filament/Tables/Columns/OddsTotals.php b/app/Filament/Tables/Columns/OddsTotals.php new file mode 100644 index 00000000..a44fc9fd --- /dev/null +++ b/app/Filament/Tables/Columns/OddsTotals.php @@ -0,0 +1,23 @@ +slots = MultilineSlots::addSlots($data); + } + + public function getSlots(): ?array + { + return $this->slots; + } +} diff --git a/app/Models/Event.php b/app/Models/Event.php index 085600cd..677e3a32 100644 --- a/app/Models/Event.php +++ b/app/Models/Event.php @@ -54,4 +54,9 @@ class Event extends Model { return $this->hasMany(Odds3way::class, 'event_id', 'id')->with('bookmaker'); } + + public function odds_totals() + { + return $this->hasMany(OddsTotal::class, 'event_id', 'id')->with('bookmaker'); + } } diff --git a/app/Models/OddsTotal.php b/app/Models/OddsTotal.php index c92d6fef..f9467c2b 100644 --- a/app/Models/OddsTotal.php +++ b/app/Models/OddsTotal.php @@ -18,7 +18,7 @@ class OddsTotal extends Model 'bmoid', 'over', 'under', - 'spread', + 'total', 'margin', 'flag', 'nuh_check', diff --git a/resources/views/filament/tables/columns/odds-totals.blade.php b/resources/views/filament/tables/columns/odds-totals.blade.php new file mode 100644 index 00000000..0308a70a --- /dev/null +++ b/resources/views/filament/tables/columns/odds-totals.blade.php @@ -0,0 +1,22 @@ + + +
+ + {{ $loadSlots($record->odds_totals) }} + + @foreach ($getSlots() as $row) + @if (isset($row->bookmaker)) +
+
+
{{ OddsFormatting::get($row->over, 2) }} 
+
{{ OddsFormatting::get($row->under, 2) }} 
+
{{ OddsFormatting::get($row->total, 1) }} 
+
{{ OddsFormatting::get($row->margin, 1) }} 
+ @endif + @endforeach + +