114 lines
3.7 KiB
PHP
114 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Tables\Columns;
|
|
|
|
use Filament\Tables\Columns\Column;
|
|
use Illuminate\Support\Facades\DB;
|
|
use stdClass;
|
|
|
|
class MultilineColumn extends Column
|
|
{
|
|
protected string $view = 'filament.tables.columns.multiline.main';
|
|
|
|
protected ?array $slots;
|
|
|
|
protected $settings;
|
|
|
|
public function loadSlots($event_id, $bookmakers)
|
|
{
|
|
$systemSettings = app('systemSettings');
|
|
$this->settings = $systemSettings[auth()->user()->multiline_setting_id];
|
|
|
|
$odds = DB::table($this->settings->table)->where('event_id', $event_id)->get();
|
|
|
|
$this->makeSlots($odds, $bookmakers);
|
|
|
|
}
|
|
|
|
public function has3Columns(): ?int
|
|
{
|
|
return $this->settings->has_3_columns;
|
|
}
|
|
|
|
public function getSlots(): ?array
|
|
{
|
|
return $this->slots;
|
|
}
|
|
|
|
public function makeSlots(&$odds, $bookmakers)
|
|
{
|
|
|
|
$multilines = [];
|
|
|
|
foreach ($bookmakers as $slot => $bookmaker) {
|
|
|
|
$open = true;
|
|
|
|
foreach ($odds as $item) {
|
|
if ($item->bookmaker_id == $bookmaker->bookmaker_id) {
|
|
$item->icon = $bookmaker->bookmaker->icon;
|
|
$item->table = $this->settings['table'];
|
|
switch ($this->settings->table) {
|
|
case 'odds_2ways':
|
|
case 'odds_2ways_s1':
|
|
$item->a = $item->h3w;
|
|
$item->c = $item->a3w;
|
|
break;
|
|
case 'odds_3ways':
|
|
$item->a = $item->h3w;
|
|
$item->b = $item->d3w;
|
|
$item->c = $item->a3w;
|
|
break;
|
|
case 'odds_dc':
|
|
$item->a = $item->dc1x;
|
|
$item->b = $item->dc12;
|
|
$item->c = $item->dc2x;
|
|
break;
|
|
case 'odds_dnb':
|
|
$item->a = $item->dnb1;
|
|
$item->c = $item->dnb2;
|
|
break;
|
|
case 'odds_ggng':
|
|
$item->a = $item->gg;
|
|
$item->c = $item->ng;
|
|
break;
|
|
case 'odds_handicaps':
|
|
case 'odds_handicaps_q1':
|
|
$item->a = $item->home;
|
|
$item->b = $item->away;
|
|
$item->c = $item->handicap;
|
|
break;
|
|
case 'odds_qualify':
|
|
$item->a = $item->htq;
|
|
$item->c = $item->atq;
|
|
break;
|
|
case 'odds_totals':
|
|
case 'odds_totals_q1':
|
|
$item->a = $item->over;
|
|
$item->b = $item->under;
|
|
$item->c = $item->total;
|
|
break;
|
|
default:
|
|
// code...
|
|
break;
|
|
}
|
|
$multilines[$slot] = $item;
|
|
$open = false;
|
|
}
|
|
}
|
|
if ($open) {
|
|
$item = new stdClass;
|
|
$item->icon = $bookmaker->bookmaker->icon;
|
|
$item->bookmaker_id = $bookmaker->bookmaker_id;
|
|
$item->a = 0;
|
|
$item->b = 0;
|
|
$item->c = 0;
|
|
$item->margin = 0;
|
|
$multilines[$slot] = $item;
|
|
}
|
|
}
|
|
|
|
$this->slots = $multilines;
|
|
}
|
|
}
|