Files
2026-10-15 16:29:48 +02:00

102 lines
5.7 KiB
PHP

<?php
namespace App\Filament\Widgets\Boxes;
use App\Filament\Pages\Selections\Helper\GetSeason;
use App\Filament\Widgets\Boxes\Helper\ExpectationAverage;
use App\Models\StatistikoEvent;
class AverageTeamSeason
{
/**
* BOX 5 - AVERAGE WITH TEAM FIXED TO ACTIVE SEASON
*/
public static function load(array &$expectations, array $filter, object $match)
{
$tournament_id = (int) $filter['league_id'] ?? 0;
$team_position = $filter['team_position'];
$team_id = (int) $filter['team_id'] ?? 0;
$season_mode = $filter['season_mode'];
$season = GetSeason::active($season_mode);
$res = StatistikoEvent::where('league_id', $tournament_id)
->when($season, function ($query) use ($season) {
return $query->where('season', $season);
})->when($team_id, function ($query) use ($team_position, $team_id) {
switch ($team_position) {
case 'home':
return $query->where('home_id', $team_id);
case 'away':
return $query->where('away_id', $team_id);
default:
return $query->orWhere('home_id', $team_id)
->orWhere('away_id', '=', $team_id);
}
})->get();
if ($res) {
$result = [];
foreach ($res as $val) {
if ($team_position == 'home' && $team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_h, $val->fls_a);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_h, $val->ofs_a);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
} elseif ($team_position == 'away' && $team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_a, $val->fls_h);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_a, $val->ofs_h);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
} else {
if ($team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_h, $val->fls_a);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_h, $val->ofs_a);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
} elseif ($team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_a, $val->fls_h);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_a, $val->ofs_h);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
}
}
}
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh'];
if ($result) {
foreach ($bets as $bet) {
$expectations[$bet.'_team_season']['home'] = round(array_sum($result['team'][$bet]['home']) / \count($result['team'][$bet]['home']), 1);
$expectations[$bet.'_team_season']['away'] = round(array_sum($result['team'][$bet]['away']) / \count($result['team'][$bet]['away']), 1);
}
} else {
foreach ($bets as $bet) {
$expectations[$bet.'_team_season']['home'] = 0;
$expectations[$bet.'_team_season']['away'] = 0;
}
}
$expectations['gls_team_season']['name'] = 'Goals';
$expectations['crn_team_season']['name'] = 'Corner';
$expectations['fls_team_season']['name'] = 'Fouls';
$expectations['ofs_team_season']['name'] = 'Offsides';
$expectations['crd_team_season']['name'] = 'Cards';
$expectations['snt_team_season']['name'] = 'Shots on Target';
$expectations['tsh_team_season']['name'] = 'Total Shots';
$expectations['active_season'] = $season;
}
}
}