Files
nuhodds_fi4/app/Filament/Resources/Events/Widgets/AlarmWidget.php
T
2026-10-04 15:25:03 +02:00

123 lines
8.6 KiB
PHP

<?php
namespace App\Filament\Resources\Events\Widgets;
use App\Actions\AlarmStatistic;
use Filament\Widgets\Concerns\InteractsWithPageFilters;
use Filament\Widgets\StatsOverviewWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class AlarmWidget extends StatsOverviewWidget
{
use InteractsWithPageFilters;
protected $listeners = [
'refreshAlarmWidget' => '$refresh',
];
protected ?string $pollingInterval = '15s';
public array $filters = [];
protected function getStats(): array
{
// if (auth()->user()->partner_show) {
// return [];
// }
$res = AlarmStatistic::load();
switch (auth()->user()->sport_id) {
case 1:
return [
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_3ways', 'title' => '1X2', 'red' => $res['odds_3ways'][3] ?? 0, 'yellow' => $res['odds_3ways'][2] ?? 0, 'green' => $res['odds_3ways'][1] ?? 0]),
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_3ways_ht', 'title' => '1X2 HT', 'red' => $res['odds_3ways_ht'][3] ?? 0, 'yellow' => $res['odds_3ways_ht'][2] ?? 0, 'green' => $res['odds_3ways_ht'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals', 'title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals_ht', 'title' => 'Totals HT', 'red' => $res['odds_totals_ht'][3] ?? 0, 'yellow' => $res['odds_totals_ht'][2] ?? 0, 'green' => $res['odds_totals_ht'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_ggng', 'title' => 'GG NG', 'red' => $res['odds_ggng'][3] ?? 0, 'yellow' => $res['odds_ggng'][2] ?? 0, 'green' => $res['odds_ggng'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_dnb', 'title' => 'DNB', 'red' => $res['odds_dnb'][3] ?? 0, 'yellow' => $res['odds_dnb'][2] ?? 0, 'green' => $res['odds_dnb'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_dc', 'title' => 'DC', 'red' => $res['odds_dc'][3] ?? 0, 'yellow' => $res['odds_dc'][2] ?? 0, 'green' => $res['odds_dc'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_tq', 'title' => 'TQ', 'red' => $res['odds_tq'][3] ?? 0, 'yellow' => $res['odds_tq'][2] ?? 0, 'green' => $res['odds_tq'][1] ?? 0]),
];
case 2:
return [
Stat::make('1X2', '1X2')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_3ways', 'title' => '1X2', 'red' => $res['odds_3ways'][3] ?? 0, 'yellow' => $res['odds_3ways'][2] ?? 0, 'green' => $res['odds_3ways'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_2ways', 'title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points', 'title' => 'PO', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points_q1', 'title' => 'PO Q1', 'red' => $res['odds_points_q1'][3] ?? 0, 'yellow' => $res['odds_points_q1'][2] ?? 0, 'green' => $res['odds_points_q1'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals', 'title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals_q1', 'title' => 'Totals Q1', 'red' => $res['odds_totals_q1'][3] ?? 0, 'yellow' => $res['odds_totals_q1'][2] ?? 0, 'green' => $res['odds_totals_q1'][1] ?? 0]),
];
case 3:
return [
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_2ways', 'title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points', 'title' => 'PO', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points_q1', 'title' => 'PO Q1', 'red' => $res['odds_points_q1'][3] ?? 0, 'yellow' => $res['odds_points_q1'][2] ?? 0, 'green' => $res['odds_points_q1'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points_ht', 'title' => 'PO HT', 'red' => $res['odds_points_ht'][3] ?? 0, 'yellow' => $res['odds_points_ht'][2] ?? 0, 'green' => $res['odds_points_ht'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals', 'title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals_q1', 'title' => 'Totals Q1', 'red' => $res['odds_totals_q1'][3] ?? 0, 'yellow' => $res['odds_totals_q1'][2] ?? 0, 'green' => $res['odds_totals_q1'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals_ht', 'title' => 'Totals HT', 'red' => $res['odds_totals_ht'][3] ?? 0, 'yellow' => $res['odds_totals_ht'][2] ?? 0, 'green' => $res['odds_totals_ht'][1] ?? 0]),
];
case 5:
return [
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_2ways', 'title' => 'ML', 'red' => $res['odds_2ways'][3] ?? 0, 'yellow' => $res['odds_2ways'][2] ?? 0, 'green' => $res['odds_2ways'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_2ways_s1', 'title' => 'MLS1', 'red' => $res['odds_2ways_s1'][3] ?? 0, 'yellow' => $res['odds_2ways_s1'][2] ?? 0, 'green' => $res['odds_2ways_s1'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_points', 'title' => 'PO', 'red' => $res['odds_points'][3] ?? 0, 'yellow' => $res['odds_points'][2] ?? 0, 'green' => $res['odds_points'][1] ?? 0]),
Stat::make('', '')->view('filament.resources.events.widgets.alarm-widget',
['filter' => 'odds_totals', 'title' => 'Totals', 'red' => $res['odds_totals'][3] ?? 0, 'yellow' => $res['odds_totals'][2] ?? 0, 'green' => $res['odds_totals'][1] ?? 0]),
];
}
return [];
}
public function filterAlarm($table, $alarm)
{
switch ($alarm) {
case 1:
$this->dispatch('filterUpdateGreen', $table);
break;
case 2:
$this->dispatch('filterUpdateYellow', $table);
break;
case 3:
$this->dispatch('filterUpdateRed', $table);
break;
}
}
public function getColumns(): int|array
{
return [
'md' => 6,
'xl' => 8,
];
}
}