120 lines
5.5 KiB
PHP
120 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Widgets\Boxes;
|
|
|
|
use App\Models\StatistikoDetail;
|
|
use App\Models\StatistikoPlayer;
|
|
|
|
class LoadPlayerAverages
|
|
{
|
|
public static function load(int &$team_id, string $season)
|
|
{
|
|
|
|
$players = StatistikoDetail::where('ss_team_id', $team_id)->get();
|
|
|
|
$arr = [];
|
|
|
|
foreach ($players as $val) {
|
|
|
|
$res = StatistikoPlayer::whereIn('ss_player_id', $val->ss_player_id)->get();
|
|
|
|
foreach ($res as $val) {
|
|
|
|
$ss_player_id = (int) $val->ss_player_id;
|
|
$activeteam_id = (int) $val->activeteam_id;
|
|
$minutes_played = (int) $val->minutes_played;
|
|
$season = $val->event->season;
|
|
$home_id = (int) $val->event->home_id;
|
|
$away_id = (int) $val->event->away_id;
|
|
$startime = $val->event->starttime;
|
|
|
|
if ($startime->greaterThan(now()->subDays(180))) {
|
|
$last_180_days = true;
|
|
} else {
|
|
$last_180_days = false;
|
|
}
|
|
|
|
if (! isset($arr[$ss_player_id])) {
|
|
self::array_template($arr, $ss_player_id);
|
|
}
|
|
|
|
if ($activeteam_id == $home_id) {
|
|
$arr[$ss_player_id]['events_played_home'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_home'] += $minutes_played;
|
|
$arr[$ss_player_id]['events_played_home'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_home'] += $minutes_played;
|
|
if ($last_180_days) {
|
|
$arr[$ss_player_id]['events_played_home'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_home'] += $minutes_played;
|
|
}
|
|
} elseif ($activeteam_id == $away_id) {
|
|
$arr[$ss_player_id]['events_played_away'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_away'] += $minutes_played;
|
|
$arr[$ss_player_id]['events_played_away'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_away'] += $minutes_played;
|
|
if ($last_180_days) {
|
|
$arr[$ss_player_id]['events_played_away'] += 1;
|
|
$arr[$ss_player_id]['minutes_played_away'] += $minutes_played;
|
|
}
|
|
|
|
}
|
|
$cards = $val->card_yellow + $val->card_yellowred;
|
|
|
|
if ($season == 'last180days' && $last_180_days) {
|
|
$arr[$ss_player_id]['ss_player_id'] = $ss_player_id;
|
|
$arr[$ss_player_id]['season'] = 'last180days';
|
|
$arr[$ss_player_id]['total_events']++;
|
|
$arr[$ss_player_id]['total_min'] += $minutes_played;
|
|
$arr[$ss_player_id]['average_min'] = round($arr[$ss_player_id]['total_min'] / $arr[$ss_player_id]['total_events']);
|
|
$arr[$ss_player_id]['goals'] += $val->goals;
|
|
$arr[$ss_player_id]['fouls'] += $val->fouls;
|
|
$arr[$ss_player_id]['cards'] += $cards;
|
|
$arr[$ss_player_id]['offsides'] += $val->offsides;
|
|
$arr[$ss_player_id]['shots_on_target'] += $val->shots_on_target;
|
|
$arr[$ss_player_id]['shots_off_target'] += $val->shots_off_target;
|
|
$arr[$ss_player_id]['shots_blocked'] += $val->shots_blocked;
|
|
$arr[$ss_player_id]['total_shots'] += $val->shots_on_target + $val->shots_off_target + $val->shots_blocked;
|
|
}
|
|
if ($season != 'last180days') {
|
|
$arr[$ss_player_id]['ss_player_id'] = $ss_player_id;
|
|
$arr[$ss_player_id]['season'] = $season;
|
|
$arr[$ss_player_id]['total_events']++;
|
|
$arr[$ss_player_id]['total_min'] += $minutes_played;
|
|
$arr[$ss_player_id]['average_min'] = round($arr[$ss_player_id]['total_min'] / $arr[$ss_player_id]['total_events']);
|
|
$arr[$ss_player_id]['goals'] += $val->goals;
|
|
$arr[$ss_player_id]['fouls'] += $val->fouls;
|
|
$arr[$ss_player_id]['cards'] += $cards;
|
|
$arr[$ss_player_id]['offsides'] += $val->offsides;
|
|
$arr[$ss_player_id]['shots_on_target'] += $val->shots_on_target;
|
|
$arr[$ss_player_id]['shots_off_target'] += $val->shots_off_target;
|
|
$arr[$ss_player_id]['shots_blocked'] += $val->shots_blocked;
|
|
$arr[$ss_player_id]['total_shots'] += $val->shots_on_target + $val->shots_off_target + $val->shots_blocked;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $arr;
|
|
}
|
|
|
|
public static function array_template(array &$arr, int $ss_player_id)
|
|
{
|
|
$arr[$ss_player_id]['ss_player_id'] = 0;
|
|
$arr[$ss_player_id]['season'] = '';
|
|
$arr[$ss_player_id]['total_events'] = 0;
|
|
$arr[$ss_player_id]['total_min'] = 0;
|
|
$arr[$ss_player_id]['average_min'] = 0;
|
|
$arr[$ss_player_id]['events_played_home'] = 0;
|
|
$arr[$ss_player_id]['events_played_away'] = 0;
|
|
$arr[$ss_player_id]['minutes_played_home'] = 0;
|
|
$arr[$ss_player_id]['minutes_played_away'] = 0;
|
|
$arr[$ss_player_id]['goals'] = 0;
|
|
$arr[$ss_player_id]['fouls'] = 0;
|
|
$arr[$ss_player_id]['offsides'] = 0;
|
|
$arr[$ss_player_id]['shots_on_target'] = 0;
|
|
$arr[$ss_player_id]['shots_off_target'] = 0;
|
|
$arr[$ss_player_id]['shots_blocked'] = 0;
|
|
$arr[$ss_player_id]['total_shots'] = 0;
|
|
$arr[$ss_player_id]['cards'] = 0;
|
|
}
|
|
}
|