fumetto max ok

This commit is contained in:
salam committed 2026-01-03 17:46:23 +01:00
1 parent 9e7384daf8
commit 9c78f507f4
58 files changed
+672 -144

No files matched your search

+163 -18
View File
@@ -3,46 +3,191 @@
namespace App\Console\Commands\Grapper\Magloo; namespace App\Console\Commands\Grapper\Magloo;
use App\Console\Commands\Curl; use App\Console\Commands\Curl;
use App\Console\Commands\Grapper\Magloo\Odds\FilterHandicap;
use App\Console\Commands\Grapper\Magloo\Odds\FilterTotals;
use App\Console\Commands\Grapper\Magloo\Odds\FilterTotalsQ1;
use App\Console\Commands\Nuh; use App\Console\Commands\Nuh;
use App\Models\Event;
use App\Models\Odds3way;
use App\Models\OddsDc;
use App\Models\OddsHandicap;
use App\Models\OddsHandicapQ1;
use App\Models\OddsQualify;
use App\Models\OddsTotal;
use App\Models\OddsTotalQ1;
use App\Models\Sport; use App\Models\Sport;
use App\Utilities\Margin;
use App\Utilities\Notice; use App\Utilities\Notice;
use Illuminate\Support\Carbon;
class Odds class Odds
{ {
public static function grap() public static function grap()
{ {
$debug = Nuh::$options['d'] ?? 0; $debug = Nuh::$options['d'] ?? 0;
$test = Nuh::$options['t'] ?? 0; $proxy = Nuh::$options['p'] ?? 0;
$echo = Nuh::$options['e'] ?? 0;
$sportmap = Sport::map('magl', 1, [1, 3]);
if ($proxy) {
Notice::note('PROXY USED', 'r');
}
if ($debug) {
Notice::note('ODDS '.Nuh::$options['process'], 'b');
}
switch (Nuh::$options['provider_id']) { switch (Nuh::$options['provider_id']) {
case 3: case 3:
// KENIA // KENIA
if ($test) { $base_url = 'https://api.externalsvc.com/api/sb/affiliates/20/1/prematch/sport/';
$base_url = 'https://int.external.api.algorez.com/api/sb/affiliates/30/en/1/prematch/sport'; $bookmaker_id = 10;
} else {
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/30/en/1/prematch/sport';
}
break; break;
case 4: case 4:
// NIGERIA // NIGERIA
if ($test) { $base_url = 'https://api.externalsvc.com/api/sb/affiliates/30/1/prematch/sport/';
$base_url = 'https://int.external.api.algorez.com/api/sb/affiliates/20/en/1/prematch/sport'; $bookmaker_id = 16;
} else {
$base_url = 'https://api.externalsvc.com/api/sb/affiliates/20/en/1/prematch/sport';
}
break;
default:
Notice::note('prosses name does not exist', 'r', 1);
break; break;
} }
$sportmap = Sport::map('magl'); foreach ($sportmap as $magloo_sport_id => $sport_id) {
$url = $base_url.$magloo_sport_id.'/odds';
$_data = Curl::load($url, 1); $data = Curl::load($url);
if (! is_array($data) or \count($data) == 0) {
Notice::note('no data in feed', 'r', 1);
dd($_data); return;
}
foreach ($data as $match) {
$betradar_id = (int) preg_replace('/\D/', '', $match['p']);
$starttime = Carbon::parse($match['dt'])->toDateTimeString();
$event_id = Event::where('betradar_id', $betradar_id)->value('id');
if ($event_id) {
$base = [];
$base['sport_id'] = $sport_id;
$base['provider_id'] = Nuh::$options['provider_id'];
$base['bmoid'] = preg_replace('/\D/', '', $match['i']);
$base['flag'] = 1;
// dd($match['M']);
foreach ($match['M'] as $magloo_bettype_id => $value) {
switch ($magloo_bettype_id) {
case 1:
// 1x2
$odds = [];
$odds['h3w'] = $value['static'][1] ?? 1;
$odds['d3w'] = $value['static'][2] ?? 1;
$odds['a3w'] = $value['static'][3] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
$odds['starttime'] = $starttime;
Odds3way::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2:
// to qalify
$odds = [];
$odds['htq'] = $value['static'][4] ?? 1;
$odds['atq'] = $value['static'][5] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsQualify::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 10:
// double chance
$odds = [];
$odds['dc1x'] = $value['static'][9] ?? 1;
$odds['dc12'] = $value['static'][10] ?? 1;
$odds['dcx2'] = $value['static'][11] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsDc::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 10:
// ggng
$odds = [];
$odds['gg'] = $value['static'][74] ?? 1;
$odds['ng'] = $value['static'][76] ?? 1;
$odds['margin'] = (float) Margin::calculate($odds, 1);
OddsDc::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 16:
// points
$odds = FilterHandicap::get($value);
$odds['starttime'] = $starttime;
OddsHandicap::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2000:
// points qt
$odds = FilterHandicap::get($value);
OddsHandicap::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2025:
// points qt
$odds = FilterHandicapQ1::get($value);
OddsHandicapQ1::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 17:
case 2002:
// totals
$odds = FilterTotals::get($value, $sport_id);
OddsTotal::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
case 2012:
// totals qt
$odds = FilterTotalsQ1::get($value, $sport_id);
OddsTotalQ1::updateOrCreate([
'event_id' => $event_id,
'bookmaker_id' => $bookmaker_id,
], $base + $odds);
break;
}
}
}
}
}
} }
} }
@@ -0,0 +1,48 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterHandicap
{
public static function get($_array)
{
$_points = [];
foreach ($_array as $handicap => $value) {
if (fmod(abs($handicap), 1) == 0.5) {
if ($value[1714] > 1 and $value[1715] > 1) {
$_points[$handicap]['home'] = $value[1714];
$_points[$handicap]['away'] = $value[1715];
}
}
}
$tmp = 10000;
$handicap = false;
foreach ($_points as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$handicap = $key;
$tmp = $x;
}
}
$return = [];
if ($handicap) {
$return['home'] = $_points[$handicap]['home'];
$return['away'] = $_points[$handicap]['away'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['handicap'] = $handicap;
}
return $return;
}
}
@@ -0,0 +1,50 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterHandicapQ1
{
public static function get($_array)
{
$_points = [];
foreach ($_array as $handicap => $value) {
$t = explode('_', $handicap);
$handicap = $t[1];
if (fmod(abs($handicap), 1) == 0.5) {
if ($value[1714] > 1 and $value[1715] > 1) {
$_points[$handicap]['home'] = $value[1714];
$_points[$handicap]['away'] = $value[1715];
}
}
}
$tmp = 10000;
$handicap = false;
foreach ($_points as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$handicap = $key;
$tmp = $x;
}
}
$return = [];
if ($handicap) {
$return['home'] = $_points[$handicap]['home'];
$return['away'] = $_points[$handicap]['away'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['handicap'] = $handicap;
}
return $return;
}
}
@@ -0,0 +1,51 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterTotals
{
public static function get($_array, $sport_id)
{
$_totals = [];
foreach ($_array as $total => $value) {
if (fmod(abs($total), 1) == 0.5) {
if ($value[12] > 1 and $value[13] > 1) {
$_totals[$total]['over'] = $value[12];
$_totals[$total]['under'] = $value[13];
}
}
}
if ($sport_id == 1) {
$spread = '2.5';
} else {
$tmp = 10000;
$spread = false;
foreach ($_totals as $key => $value) {
$x = 0;
foreach ($value as $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$spread = $key;
$tmp = $x;
}
}
}
$return = [];
if (isset($_totals[$spread])) {
$return['over'] = $_totals[$spread]['over'];
$return['under'] = $_totals[$spread]['under'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['total'] = $spread;
}
return $return;
}
}
@@ -0,0 +1,53 @@
<?php
namespace App\Console\Commands\Grapper\Magloo\Odds;
use App\Utilities\Margin;
class FilterTotalsQ1
{
public static function get($_array, $sport_id)
{
$_totals = [];
foreach ($_array as $total => $value) {
if (fmod(abs($total), 1) == 0.5) {
$t = explode('_', $total);
$total = $t[1];
if ($value[12] > 1 and $value[13] > 1) {
$_totals[$total]['over'] = $value[12];
$_totals[$total]['under'] = $value[13];
}
}
}
if ($sport_id == 1) {
$spread = '2.5';
} else {
$tmp = 10000;
$spread = false;
foreach ($_totals as $key => $value) {
$x = 0;
foreach ($value as $k => $v) {
if ($x == 0) {
$x = $v;
} else {
$x -= $v;
}
}
$x = abs($x);
if ($x < $tmp) {
$spread = $key;
$tmp = $x;
}
}
}
$return = [];
if (isset($_totals[$spread])) {
$return['over'] = $_totals[$spread]['over'];
$return['under'] = $_totals[$spread]['under'];
$return['margin'] = (float) Margin::calculate($return, 1);
$return['total'] = $spread;
}
return $return;
}
}
@@ -232,9 +232,6 @@ class Odds
case 'bmoid': case 'bmoid':
$odds['bmoid'] = (string) $attributeValue; $odds['bmoid'] = (string) $attributeValue;
break; break;
case 'last_updated':
$odds['source_updated_at'] = Carbon::createFromDate((string) $attributeValue)->toDateTimeString();
break;
} }
} }
@@ -21,7 +21,7 @@ class _3Way
$odds['h3w'] = (float) $value->o1; $odds['h3w'] = (float) $value->o1;
$odds['d3w'] = (float) $value->o2; $odds['d3w'] = (float) $value->o2;
$odds['a3w'] = (float) $value->o3; $odds['a3w'] = (float) $value->o3;
$odds['starting_time'] = (string) $value['starting_time']; $odds['starttime'] = (string) $value['starttime'];
} }
$odds['margin'] = (float) Margin::calculate([$odds['h3w'], $odds['d3w'], $odds['a3w']], 1); $odds['margin'] = (float) Margin::calculate([$odds['h3w'], $odds['d3w'], $odds['a3w']], 1);
+1
View File
@@ -0,0 +1 @@
[{"i":3591912,"p":"sr:match:66762620","dt":"2026-01-03T12:30:00Z","M":{"16":{"0.5":{"1714":1.63,"1715":2.1},"1.5":{"1714":1.13,"1715":4.7},"-0.5":{"1714":4.25,"1715":1.17}},"1":{"static":{"1":4.25,"2":2.72,"3":2.1}},"17":{"0.5":{"12":1.14,"13":4.8},"1.5":{"12":1.74,"13":1.98},"2.5":{"12":3.3,"13":1.27},"3.5":{"12":7.1,"13":1.04},"4.5":{"12":16.0,"13":1.0}},"18":{"0.5":{"12":1.84,"13":1.8},"1.5":{"12":5.7,"13":1.07}},"19":{"0.5":{"12":1.37,"13":2.72},"1.5":{"12":2.9,"13":1.3},"2.5":{"12":1.0,"13":1.0}},"10":{"static":{"9":1.66,"10":1.4,"11":1.18}},"27":{"static":{"74":2.57,"76":1.43}},"14":{"1":{"1712":3.4,"1713":4.7,"1711":1.63},"2":{"1712":1.0,"1713":1.0,"1711":1.0},"-1":{"1712":4.9,"1713":1.17,"1711":12.0}}}},{"i":3586861,"p":"sr:match:61974122","dt":"2026-01-03T12:15:00Z","M":{"16":{"-2.5":{"1714":3.0,"1715":1.31},"-1.5":{"1714":1.81,"1715":1.86},"-0.5":{"1714":1.32,"1715":3.0}},"1":{"static":{"1":1.32,"2":5.2,"3":7.6}},"17":{"0.5":{"12":1.0,"13":18.0},"1.5":{"12":1.07,"13":6.0},"2.5":{"12":1.37,"13":2.75},"3.5":{"12":1.99,"13":1.73},"4.5":{"12":3.2,"13":1.28},"5.5":{"12":5.7,"13":1.08},"6.5":{"12":10.75,"13":1.0}},"18":{"1.5":{"12":1.26,"13":3.2},"2.5":{"12":1.93,"13":1.72},"3.5":{"12":3.45,"13":1.22}},"19":{"0.5":{"12":1.5,"13":2.3},"1.5":{"12":3.65,"13":1.2}},"10":{"static":{"9":1.05,"10":1.13,"11":3.1}},"27":{"static":{"74":1.61,"76":2.13}},"14":{"-1":{"1712":4.05,"1713":3.0,"1711":1.81},"-2":{"1712":4.05,"1713":1.86,"1711":3.0},"-3":{"1712":5.4,"1713":1.31,"1711":5.4}}}},{"i":3596036,"p":"sr:match:67054878","dt":"2026-01-04T05:30:00Z","M":{"16":{"0.5":{"1714":2.03,"1715":1.62},"1.5":{"1714":1.37,"1715":2.63},"-0.5":{"1714":4.25,"1715":1.14}},"1":{"static":{"1":4.25,"2":4.2,"3":1.62}},"17":{"0.5":{"12":1.0,"13":15.5},"1.5":{"12":1.09,"13":4.95},"2.5":{"12":1.44,"13":2.52},"3.5":{"12":2.1,"13":1.62},"4.5":{"12":3.4,"13":1.24},"5.5":{"12":6.0,"13":1.05},"6.5":{"12":11.0,"13":1.0}},"18":{"0.5":{"12":1.25,"13":3.0},"1.5":{"12":2.48,"13":1.39},"2.5":{"12":6.2,"13":1.03}},"19":{"0.5":{"12":1.02,"13":6.7},"1.5":{"12":1.44,"13":2.35},"2.5":{"12":2.47,"13":1.37}},"10":{"static":{"9":2.12,"10":1.17,"11":1.17}},"27":{"static":{"74":1.44,"76":2.48}},"14":{"1":{"1712":3.6,"1713":2.63,"1711":2.03},"2":{"1712":4.3,"1713":4.95,"1711":1.37}}}},{"i":3596684,"p":"sr:match:63259975","dt":"2026-01-04T11:00:00Z","M":{"16":{"0.5":{"1714":1.55,"1715":2.15},"1.5":{"1714":1.16,"1715":4.1},"-0.5":{"1714":2.95,"1715":1.3}},"1":{"static":{"1":2.95,"2":3.5,"3":2.15}},"17":{"0.5":{"12":1.0,"13":11.25},"1.5":{"12":1.19,"13":3.8},"2.5":{"12":1.7,"13":1.99},"3.5":{"12":2.72,"13":1.35},"4.5":{"12":5.0,"13":1.09},"5.5":{"12":9.9,"13":1.0}},"18":{"0.5":{"12":1.23,"13":3.15},"1.5":{"12":2.38,"13":1.43},"2.5":{"12":5.8,"13":1.04}},"19":{"0.5":{"12":1.13,"13":4.05},"1.5":{"12":1.93,"13":1.67},"2.5":{"12":4.1,"13":1.12}},"10":{"static":{"9":1.6,"10":1.24,"11":1.33}},"27":{"static":{"74":1.56,"76":2.18}},"14":{"1":{"1712":3.85,"1713":4.1,"1711":1.55},"-1":{"1712":4.25,"1713":1.3,"1711":5.9}}}},{"i":3591318,"p":"sr:match:62156652","dt":"2026-01-03T15:00:00Z","M":{"16":{"0.5":{"1714":1.12,"1715":5.0},"-1.5":{"1714":2.63,"1715":1.4},"-0.5":{"1714":1.6,"1715":2.15}},"1":{"static":{"1":1.6,"2":3.95,"3":5.0}},"17":{"0.5":{"12":1.0,"13":11.75},"1.5":{"12":1.19,"13":4.0},"2.5":{"12":1.65,"13":2.1},"3.5":{"12":2.58,"13":1.42},"4.5":{"12":4.55,"13":1.14},"5.5":{"12":8.7,"13":1.01}},"18":{"0.5":{"12":1.06,"13":5.9},"1.5":{"12":1.57,"13":2.15},"2.5":{"12":2.85,"13":1.32}},"19":{"0.5":{"12":1.43,"13":2.48},"1.5":{"12":3.25,"13":1.25}},"10":{"static":{"9":1.14,"10":1.21,"11":2.2}},"27":{"static":{"74":1.64,"76":2.08}},"14":{"-1":{"1712":3.65,"1713":2.15,"1711":2.63},"-2":{"1712":4.55,"1713":1.4,"1711":5.1}}}},{"i":3592955,"p":"sr:match:67173398","dt":"2026-01-03T16:00:00Z","M":{"16":{"0.5":{"1714":1.42,"1715":2.6},"1.5":{"1714":1.07,"1715":6.1},"-0.5":{"1714":2.75,"1715":1.38}},"1":{"static":{"1":2.75,"2":3.0,"3":2.6}},"17":{"0.5":{"12":1.07,"13":6.4},"1.5":{"12":1.54,"13":2.33},"2.5":{"12":2.72,"13":1.4},"3.5":{"12":5.5,"13":1.09},"4.5":{"12":12.25,"13":1.0}},"18":{"0.5":{"12":1.44,"13":2.45},"1.5":{"12":3.3,"13":1.24}},"19":{"0.5":{"12":1.41,"13":2.55},"1.5":{"12":3.15,"13":1.26}},"10":{"static":{"9":1.44,"10":1.34,"11":1.4}},"27":{"static":{"74":2.18,"76":1.58}},"14":{"1":{"1712":3.95,"1713":6.1,"1711":1.42},"-1":{"1712":3.95,"1713":1.38,"1711":6.3}}}},{"i":3550543,"p":"sr:match:61514960","dt":"2026-01-18T12:30:00Z","M":{"16":{"0.5":{"1714":1.68,"1715":2.2},"1.5":{"1714":1.23,"1715":4.2},"-3.5":{"1714":37.0,"1715":1.0},"-2.5":{"1714":17.5,"1715":1.01},"2.5":{"1714":1.06,"1715":9.5},"3.5":{"1714":1.0,"1715":22.0},"4.5":{"1714":1.0,"1715":42.0},"-1.5":{"1714":7.1,"1715":1.1},"-0.5":{"1714":3.25,"1715":1.35}},"1":{"static":{"1":3.25,"2":3.55,"3":2.2}},"17":{"0.5":{"12":1.03,"13":11.75},"1.5":{"12":1.24,"13":4.1},"2.5":{"12":1.74,"13":2.1},"3.5":{"12":2.8,"13":1.44},"4.5":{"12":5.1,"13":1.17},"5.5":{"12":10.0,"13":1.05},"6.5":{"12":19.5,"13":1.0}},"18":{"Line truncated
@@ -135,7 +135,7 @@ class EventsTable
->tooltip(fn ($record) => $record->id) ->tooltip(fn ($record) => $record->id)
->visibleFrom('lg'), ->visibleFrom('lg'),
MatchIds::make('match_ids')->grow(false)->visibleFrom('xl'), MatchIds::make('ids')->grow(false)->visibleFrom('xl'),
TextColumn::make('starttime') TextColumn::make('starttime')
->label('Start') ->label('Start')
@@ -196,8 +196,8 @@ class EventsTable
->verticalAlignment(VerticalAlignment::Start) ->verticalAlignment(VerticalAlignment::Start)
->width(225) ->width(225)
->label('Totals'), ->label('Totals'),
])->searchable(['id', 'betsapi_id', 'betradar_id', 'bet365_id', 'bwin_id']) ])->searchable(['id', 'betsapi_id', 'betradar_id', 'bet365_id', 'bwin_id', 'magnig_id', 'magken_id', 'lognig_id', 'logcol_id'])
->poll('5s') ->poll('10s')
->defaultSort('starttime', 'ASC') ->defaultSort('starttime', 'ASC')
->filters([ ->filters([
Filter::make('events') Filter::make('events')
@@ -11,6 +11,8 @@ class Column3way extends Column
protected $data; protected $data;
protected ?array $max;
protected ?array $bookmakers; protected ?array $bookmakers;
protected ?bool $has_data; protected ?bool $has_data;
@@ -31,6 +33,14 @@ class Column3way extends Column
{ {
$this->data = Odds3way::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = Odds3way::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['h3w'] = $this->data->max('h3w');
$this->max['d3w'] = $this->data->max('d3w');
$this->max['a3w'] = $this->data->max('a3w');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +49,11 @@ class Column3way extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
+15
View File
@@ -9,6 +9,8 @@ class ColumnDc extends Column
{ {
protected string $view = 'filament.tables.columns.column-dc'; protected string $view = 'filament.tables.columns.column-dc';
protected ?array $max;
protected $data; protected $data;
protected ?array $bookmakers; protected ?array $bookmakers;
@@ -31,6 +33,14 @@ class ColumnDc extends Column
{ {
$this->data = OddsDc::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = OddsDc::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['dc1x'] = $this->data->max('dc1x');
$this->max['dc12'] = $this->data->max('dc12');
$this->max['dcx2'] = $this->data->max('dcx2');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +49,11 @@ class ColumnDc extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
+13
View File
@@ -9,6 +9,8 @@ class ColumnDnb extends Column
{ {
protected string $view = 'filament.tables.columns.column-dnb'; protected string $view = 'filament.tables.columns.column-dnb';
protected ?array $max;
protected $data; protected $data;
protected ?array $bookmakers; protected ?array $bookmakers;
@@ -31,6 +33,12 @@ class ColumnDnb extends Column
{ {
$this->data = OddsDnb::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = OddsDnb::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['dnb1'] = $this->data->max('dnb1');
$this->max['dnb2'] = $this->data->max('dnb2');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +47,11 @@ class ColumnDnb extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
@@ -9,6 +9,8 @@ class ColumnGgng extends Column
{ {
protected string $view = 'filament.tables.columns.column-ggng'; protected string $view = 'filament.tables.columns.column-ggng';
protected ?array $max;
protected $data; protected $data;
protected ?array $bookmakers; protected ?array $bookmakers;
@@ -31,6 +33,12 @@ class ColumnGgng extends Column
{ {
$this->data = OddsGgng::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = OddsGgng::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['gg'] = $this->data->max('gg');
$this->max['ng'] = $this->data->max('ng');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +47,11 @@ class ColumnGgng extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
@@ -9,6 +9,8 @@ class ColumnTotal extends Column
{ {
protected string $view = 'filament.tables.columns.column-total'; protected string $view = 'filament.tables.columns.column-total';
protected ?array $max;
protected $data; protected $data;
protected ?array $bookmakers; protected ?array $bookmakers;
@@ -31,6 +33,12 @@ class ColumnTotal extends Column
{ {
$this->data = OddsTotal::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = OddsTotal::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['over'] = $this->data->max('over');
$this->max['under'] = $this->data->max('under');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +47,11 @@ class ColumnTotal extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
+13
View File
@@ -9,6 +9,8 @@ class ColumnTq extends Column
{ {
protected string $view = 'filament.tables.columns.column-tq'; protected string $view = 'filament.tables.columns.column-tq';
protected ?array $max;
protected $data; protected $data;
protected ?array $bookmakers; protected ?array $bookmakers;
@@ -31,6 +33,12 @@ class ColumnTq extends Column
{ {
$this->data = OddsQualify::with('bookmaker')->where('event_id', $record->id)->get(); $this->data = OddsQualify::with('bookmaker')->where('event_id', $record->id)->get();
$this->max['htq'] = $this->data->max('htq');
$this->max['atq'] = $this->data->max('atq');
$this->max['margin'] = $this->data->max('margin');
$this->has_data = count($this->data) ? true : false; $this->has_data = count($this->data) ? true : false;
} }
@@ -39,6 +47,11 @@ class ColumnTq extends Column
return $this->data; return $this->data;
} }
public function getMax()
{
return $this->max;
}
public function hasData() public function hasData()
{ {
return $this->has_data; return $this->has_data;
+26 -3
View File
@@ -49,7 +49,26 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
->filters([ ->filters([
Filter::make('events') Filter::make('events')
->schema([ ->schema([
Select::make('country_id')
->visible(fn () => in_array(Auth()->user()->provider_id, [3, 4]))
->placeholder('Country')
->hiddenLabel()
->label('')
->searchable()
->preload()
->multiple()
->columnSpan(2)
->live()
->options(function () {
return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->groupBy('country_id')->pluck('country', 'country_id')->toArray();
})
->reactive()
->afterStateUpdated(function (callable $set) {
$set('group_id', null);
})
->placeholder('Country'),
Select::make('group_cc') Select::make('group_cc')
->visible(fn () => Auth()->user()->provider_id == 2)
->placeholder('Country') ->placeholder('Country')
->hiddenLabel() ->hiddenLabel()
->label('') ->label('')
@@ -67,8 +86,7 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
->afterStateUpdated(function (callable $set) { ->afterStateUpdated(function (callable $set) {
$set('group_id', null); $set('group_id', null);
}) })
->placeholder('Country') ->placeholder('Country'),
->label('Countries'),
Select::make('group_id') Select::make('group_id')
->placeholder('League') ->placeholder('League')
->label('Leagues') ->label('Leagues')
@@ -79,7 +97,9 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
->preload() ->preload()
->multiple() ->multiple()
->options(function (Get $get) { ->options(function (Get $get) {
if ($get('group_cc')) { if ($get('country_id')) {
return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->whereIn('country_id', $get('country_id'))->groupBy('group_id')->pluck('group', 'group_id')->toArray();
} elseif ($get('group_cc')) {
return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->whereIn('group_cc', $get('group_cc'))->groupBy('group_id')->pluck('group', 'group_id')->toArray(); return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->whereIn('group_cc', $get('group_cc'))->groupBy('group_id')->pluck('group', 'group_id')->toArray();
} else { } else {
return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->groupBy('group_id')->pluck('group', 'group_id')->toArray(); return Mapper::query()->where('sport_id', Auth::user()->sport_id)->where('provider_id', Auth::user()->provider_id)->where('starttime', '>', Carbon::now())->groupBy('group_id')->pluck('group', 'group_id')->toArray();
@@ -90,6 +110,9 @@ class MapperRight extends Component implements HasActions, HasSchemas, HasTable
->query(function (Builder $query, array $data): Builder { ->query(function (Builder $query, array $data): Builder {
return $query return $query
->when( ->when(
$data['country_id'],
fn (Builder $query, $country_id) => $query->whereIn('country_id', $country_id)
)->when(
$data['group_cc'], $data['group_cc'],
fn (Builder $query, $group_cc) => $query->whereIn('group_cc', $group_cc) fn (Builder $query, $group_cc) => $query->whereIn('group_cc', $group_cc)
)->when( )->when(
+8 -8
View File
@@ -15,22 +15,22 @@ class LoadEvents
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('betsapi_id', 0); return Event::query()->where('sport_id', Auth::user()->sport_id)->where('betsapi_id', 0);
break; break;
case 20: case 3:
// Magloo Kenia // Magloo Kenia
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('magnig_id', 0);
break;
case 24:
// Magloo Nigeria
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('magken_id', 0); return Event::query()->where('sport_id', Auth::user()->sport_id)->where('magken_id', 0);
break; break;
case 26: case 4:
// Magloo Nigeria
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('magnig_id', 0);
break;
case 5:
// Logifuture Nigeria // Logifuture Nigeria
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('lognig_id', 0); return Event::query()->where('sport_id', Auth::user()->sport_id)->where('lognig_id', 0);
break; break;
case 27: case 6:
// Magloo Colombia // Magloo Colombia
return Event::query()->where('sport_id', Auth::user()->sport_id)->where('logcol_id', 0); return Event::query()->where('sport_id', Auth::user()->sport_id)->where('logcol_id', 0);
break; break;
+2 -2
View File
@@ -85,11 +85,11 @@ class StoreMapped
break; break;
case 3: case 3:
// MAGLOO KENIA // MAGLOO KENIA
$event->magnig_id = $mapper->event_id; $event->magken_id = $mapper->event_id;
break; break;
case 4: case 4:
// MAGLOO NIGERIA // MAGLOO NIGERIA
$event->magken_id = $mapper->event_id; $event->magnig_id = $mapper->event_id;
break; break;
case 5: case 5:
// LOGIFUTUR NIGERA // LOGIFUTUR NIGERA
-1
View File
@@ -21,7 +21,6 @@ class Odds2way extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -21,7 +21,6 @@ class Odds2wayS1 extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class Odds3way extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class OddsDc extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -21,7 +21,6 @@ class OddsDnb extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -21,7 +21,6 @@ class OddsGgng extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class OddsHandicap extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class OddsHandicapQ1 extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -21,7 +21,6 @@ class OddsQualify extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class OddsTotal extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
-1
View File
@@ -22,7 +22,6 @@ class OddsTotalQ1 extends Model
'margin', 'margin',
'flag', 'flag',
'nuh_check', 'nuh_check',
'source_updated_at',
'add_time', 'add_time',
'updated_at', 'updated_at',
]; ];
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_3ways', function (Blueprint $table) { Schema::create('odds_3ways', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -25,11 +25,8 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('starting_time')->nullable(); $table->timestamp('starttime')->nullable();
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_2ways', function (Blueprint $table) { Schema::create('odds_2ways', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -24,10 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_2ways_s1', function (Blueprint $table) { Schema::create('odds_2ways_s1', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -24,11 +24,8 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('starting_time')->nullable(); $table->timestamp('starttime')->nullable();
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_dc', function (Blueprint $table) { Schema::create('odds_dc', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->string('bmoid')->nullable(); $table->string('bmoid')->nullable();
@@ -25,10 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_dnb', function (Blueprint $table) { Schema::create('odds_dnb', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -24,10 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_ggng', function (Blueprint $table) { Schema::create('odds_ggng', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -24,10 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_qualify', function (Blueprint $table) { Schema::create('odds_qualify', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -24,10 +24,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_handicaps', function (Blueprint $table) { Schema::create('odds_handicaps', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -25,11 +25,8 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('starting_time')->nullable(); $table->timestamp('starttime')->nullable();
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_handicaps_q1', function (Blueprint $table) { Schema::create('odds_handicaps_q1', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -25,10 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_totals', function (Blueprint $table) { Schema::create('odds_totals', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -25,10 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
@@ -13,8 +13,8 @@ return new class extends Migration
{ {
Schema::create('odds_totals_q1', function (Blueprint $table) { Schema::create('odds_totals_q1', function (Blueprint $table) {
$table->id(); $table->id();
$table->foreignId('event_id')->constrained()->cascadeOnDelete(); $table->foreignId('event_id')->index()->constrained()->cascadeOnDelete();
$table->integer('sport_id')->default(0); $table->integer('sport_id')->index()->default(0);
$table->integer('bookmaker_id')->default(0); $table->integer('bookmaker_id')->default(0);
$table->integer('provider_id')->default(0); $table->integer('provider_id')->default(0);
$table->bigInteger('offer_id')->default(0); $table->bigInteger('offer_id')->default(0);
@@ -25,10 +25,7 @@ return new class extends Migration
$table->decimal('margin', 5, 1)->default(0); $table->decimal('margin', 5, 1)->default(0);
$table->boolean('flag')->default(0); $table->boolean('flag')->default(0);
$table->boolean('nuh_check')->default(0); $table->boolean('nuh_check')->default(0);
$table->timestamp('source_updated_at')->nullable();
$table->timestamps(); $table->timestamps();
$table->index(['event_id']);
$table->index(['sport_id']);
}); });
} }
+1 -1
View File
@@ -22,7 +22,7 @@ class SupervisorSeeder extends Seeder
(6, 'Bet365', 2, 0, 10, 0, '0', 30, 0, 0, 1, '2025-12-18 17:44:33', '2026-01-01 17:09:28'), (6, 'Bet365', 2, 0, 10, 0, '0', 30, 0, 0, 1, '2025-12-18 17:44:33', '2026-01-01 17:09:28'),
(7, 'Betfair', 2, 0, 10, 0, '0', 30, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-03 12:28:09'), (7, 'Betfair', 2, 0, 10, 0, '0', 30, 0, 0, 0, '2025-12-18 17:44:33', '2026-01-03 12:28:09'),
(8, 'Fixtures', 4, 0, 10, 0, '1.368', 30, 0, 1, 1, '2025-12-18 17:44:33', '2026-01-03 12:24:52'), (8, 'Fixtures', 4, 0, 10, 0, '1.368', 30, 0, 1, 1, '2025-12-18 17:44:33', '2026-01-03 12:24:52'),
(9, 'Odds', 5, 0, 15, 0, NULL, 1800, 0, 0, 1, '2026-01-03 12:27:44', '2026-01-03 12:27:53'); (9, 'Odds', 4, 0, 15, 0, NULL, 1800, 0, 0, 1, '2026-01-03 12:27:44', '2026-01-03 12:27:53');
"; ";
DB::unprepared($sql); DB::unprepared($sql);
@@ -21,21 +21,25 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dc1x, 'odd' => $item->dc1x,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dc12, 'odd' => $item->dc12,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dcx2, 'odd' => $item->dcx2,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -21,16 +21,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dnb1, 'odd' => $item->dnb1,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dnb2, 'odd' => $item->dnb2,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -21,16 +21,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->gg, 'odd' => $item->gg,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->ng, 'odd' => $item->ng,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -21,21 +21,25 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->over, 'odd' => $item->over,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->under, 'odd' => $item->under,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->total, 'odd' => $item->total,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -21,16 +21,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->htq, 'odd' => $item->htq,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->atq, 'odd' => $item->atq,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -21,21 +21,25 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->h3w, 'odd' => $item->h3w,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->d3w, 'odd' => $item->d3w,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->a3w, 'odd' => $item->a3w,
'decimal' => 2, 'decimal' => 2,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@endif @endif
@endforeach @endforeach
@@ -1,8 +1,14 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_1x2">
<div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['1', 'X', '2']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -12,21 +18,25 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->h3w, 'odd' => $item->h3w,
'decimal' => 2, 'decimal' => 2,
'max' => $item->h3w == $max['h3w'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->d3w, 'odd' => $item->d3w,
'decimal' => 2, 'decimal' => 2,
'max' => $item->d3w == $max['d3w'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->a3w, 'odd' => $item->a3w,
'decimal' => 2, 'decimal' => 2,
'max' => $item->a3w == $max['a3w'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -34,10 +44,11 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_1x2.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root,
interactive: true
}" /> }" />
</div> </div>
@endif @endif
@@ -1,8 +1,14 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_dc">
<div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['1X', '12', 'X2']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -10,23 +16,27 @@
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dcx1, 'odd' => $item->dc1x,
'decimal' => 2, 'decimal' => 2,
'max' => $item->dc1x == $max['dc1x'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dc12, 'odd' => $item->dc12,
'decimal' => 2, 'decimal' => 2,
'max' => $item->dc12 == $max['dc12'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dcx2, 'odd' => $item->dcx2,
'decimal' => 2, 'decimal' => 2,
'max' => $item->dcx2 == $max['dcx2'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -34,7 +44,7 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_dc.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root
@@ -1,8 +1,14 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_dnb">
<div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['DNB1', 'DNB2']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -12,16 +18,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dnb1, 'odd' => $item->dnb1,
'decimal' => 2, 'decimal' => 2,
'max' => $item->dnb1 == $max['dnb1'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->dnb2, 'odd' => $item->dnb2,
'decimal' => 2, 'decimal' => 2,
'max' => $item->dnb2 == $max['dnb2'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -29,7 +38,7 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_dnb.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root
@@ -1,8 +1,12 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_gg">
<div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['GG', 'NG']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -12,16 +16,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->gg, 'odd' => $item->gg,
'decimal' => 2, 'decimal' => 2,
'max' => $item->gg == $max['gg'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->ng, 'odd' => $item->ng,
'decimal' => 2, 'decimal' => 2,
'max' => $item->ng == $max['ng'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -29,7 +36,7 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_gg.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root
@@ -1,8 +1,12 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_total">
<div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-5 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['O', 'U', 'T']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -12,21 +16,25 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->over, 'odd' => $item->over,
'decimal' => 2, 'decimal' => 2,
'max' => $item->over == $max['over'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->under, 'odd' => $item->under,
'decimal' => 2, 'decimal' => 2,
'max' => $item->under == $max['under'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->total, 'odd' => $item->total,
'decimal' => 1, 'decimal' => 1,
'max' => false,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -34,7 +42,7 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_total.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root
@@ -1,8 +1,12 @@
@if ($hasData()) @if ($hasData())
<div class="mx-3 my-auto"> <div class="mx-3 my-auto">
<template x-ref="template"> <template x-ref="template_tq">
<div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10"> <div class="grid grid-cols-4 grid-rows-5 gap-1 m-5 z-10">
@include('filament.tables.columns.multiline.label', ['labels' => ['H', 'A']])
@php
$max = $getMax();
@endphp
@foreach ($getData() as $item) @foreach ($getData() as $item)
@include('filament.tables.columns.multiline.bkm', [ @include('filament.tables.columns.multiline.bkm', [
'bookmaker_id' => $item->bookmaker_id, 'bookmaker_id' => $item->bookmaker_id,
@@ -12,16 +16,19 @@
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->htq, 'odd' => $item->htq,
'decimal' => 2, 'decimal' => 2,
'max' => $item->htq == $max['htq'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->atq, 'odd' => $item->atq,
'decimal' => 2, 'decimal' => 2,
'max' => $item->atq == $max['atq'] ? 1 : 0,
]) ])
@include('filament.tables.columns.multiline.odds', [ @include('filament.tables.columns.multiline.odds', [
'odd' => $item->margin, 'odd' => $item->margin,
'decimal' => 1, 'decimal' => 1,
'max' => $item->margin == $max['margin'] ? 1 : 0,
]) ])
@endforeach @endforeach
</div> </div>
@@ -29,7 +36,7 @@
<x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray" <x-filament::icon-button icon="heroicon-o-chat-bubble-left-ellipsis" color="gray"
x-tooltip.html="{ x-tooltip.html="{
content: () => $refs.template.innerHTML, content: () => $refs.template_tq.innerHTML,
allowHTML: true, allowHTML: true,
theme: $store.theme, theme: $store.theme,
appendTo: $root appendTo: $root
@@ -32,6 +32,7 @@
<div class="text-left font-bold">{{ $record->away }}</div> <div class="text-left font-bold">{{ $record->away }}</div>
</div> </div>
<div class="flex justify-center space-x-4 text-gray-600 dark:text-gray-500"> <div class="flex justify-center space-x-4 text-gray-600 dark:text-gray-500">
<div>{{ $record->country }}</div>
<div>{{ $record->country_betsapi?->name }}</div> <div>{{ $record->country_betsapi?->name }}</div>
<div>{{ $record->group }}</div> <div>{{ $record->group }}</div>
</div> </div>
@@ -1,18 +1,55 @@
<div class="grid grid-cols-2 text-xs"> <div x-data="{ open: false }">
<div>TxOdds</div>
<div> <x-filament::button size="xs" @click="open = ! open" outlined color="gray" class="my-1">
{{ $record->id }} {{ $record->id }}
</div> </x-filament::button>
<div>BetsApi</div>
<div> <div class="grid grid-cols-2 gap-1 text-xs text-gray-500 pb-2" x-show="open">
{{ $record->betsapi_id }} <div>TxId</div>
</div> <div>
<div>Betradar</div> {{ $record->id }}
<div> </div>
{{ $record->betradar_id }} @if ($record->betsapi_id)
</div> <div>BetApi</div>
<div>Bet365</div> <div>
<div> {{ $record->betsapi_id }}
{{ $record->bet365_id }} </div>
@endif
@if ($record->betradar_id)
<div>BetRad</div>
<div>
{{ $record->betradar_id }}
</div>
@endif
@if ($record->bet365_id)
<div>Bet365</div>
<div>
{{ $record->bet365_id }}
</div>
@endif
@if ($record->magnig_id)
<div>MagNig</div>
<div>
{{ $record->magnig_id }}
</div>
@endif
@if ($record->magken_id)
<div>MagKen</div>
<div>
{{ $record->magken_id }}
</div>
@endif
@if ($record->lognig_id)
<div>LogNig</div>
<div>
{{ $record->lognig_id }}
</div>
@endif
@if ($record->logcol_id)
<div>LogCol</div>
<div>
{{ $record->logcol_id }}
</div>
@endif
</div> </div>
</div> </div>
@@ -1,7 +1,18 @@
<div class="mb-0.5 ml-0.5 border border-transparent" style="font-size: 10.5px; text-align:center;"> @if (isset($max) && $max == true)
&nbsp; <div class="mb-0.5 ml-0.5 border border-transparent bg-green-500/50 rounded"
@if (isset($odd)) style="font-size: 10.5px; text-align:center;">
{{ number_format($odd, $decimal) }} &nbsp;
@endif @if (isset($odd))
&nbsp; {{ number_format($odd, $decimal) }}
</div> @endif
&nbsp;
</div>
@else
<div class="mb-0.5 ml-0.5 border border-transparent" style="font-size: 10.5px; text-align:center;">
&nbsp;
@if (isset($odd))
{{ number_format($odd, $decimal) }}
@endif
&nbsp;
</div>
@endif
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB