team_id) { return []; } if (! $this->liga_id) { return []; } $player_ids = []; foreach ($players as $row) { $player_ids[] = $row->ss_player_id; } $arr = []; $res = $this->getPlayers($part, $player_ids); foreach ($res as $val) { $ss_player_id = (int) $val->ss_player_id; $activeteam_id = (int) $val->activeteam_id; $minutes_played = (int) $val->minutes_played; $home_id = (int) $val->event->home_id; $away_id = (int) $val->event->away_id; 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; } elseif ($activeteam_id == $away_id) { $arr[$ss_player_id]['events_played_away'] += 1; $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; } $cards = $val->card_yellow + $val->card_yellowred; $arr[$ss_player_id]['ss_player_id'] = $ss_player_id; $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; $arr[$ss_player_id]['was_fouled'] += $val->was_fouled; } foreach ($players as $player) { if (isset($arr[$player->ss_player_id])) { $arr[$player->ss_player_id]['position'] = $player->position; $arr[$player->ss_player_id]['player_name'] = $player->player_name; $arr[$player->ss_player_id]['preferred_foot'] = $player->preferred_foot; } } return $arr; } public function loadPlayerAll(): array { if (! $this->team_id) { return []; } if (! $this->liga_id) { return []; } $players = StatistikoDetail::where('ss_team_id', $this->team_id)->where('is_active', 1)->get(); $player_ids = []; foreach ($players as $player) { $player_ids[] = $player->ss_player_id; } $arr = []; $res = $this->getPlayers(1, $player_ids); foreach ($res as $val) { $ss_player_id = (int) $val->ss_player_id; $activeteam_id = (int) $val->activeteam_id; $minutes_played = (int) $val->minutes_played; $home_id = (int) $val->event->home_id; $away_id = (int) $val->event->away_id; if (! isset($arr[$ss_player_id])) { $this->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; } elseif ($activeteam_id == $away_id) { $arr[$ss_player_id]['events_played_away'] += 1; $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; } $cards = $val->card_yellow + $val->card_yellowred; $arr[$ss_player_id]['ss_player_id'] = $ss_player_id; $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; $arr[$ss_player_id]['was_fouled'] += $val->was_fouled; } foreach ($players as $value) { if (isset($arr[$value->ss_player_id])) { $arr[$value->ss_player_id]['position'] = $value->position; $arr[$value->ss_player_id]['player_name'] = $value->player_name; $arr[$value->ss_player_id]['preferred_foot'] = $value->preferred_foot; } } return $arr; } public function array_template(array &$arr, int $ss_player_id) { $arr[$ss_player_id]['ss_player_id'] = 0; $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]['was_fouled'] = 0; $arr[$ss_player_id]['cards'] = 0; } public function getCurrentSeason() { $tmp = []; $date = Carbon::now(); if ($this->season_mode == 'halfyear') { if ((int) date('m') > 7) { $tmp[] = $date->format('y').'/'.$date->format('y') + 1; } else { $tmp[] = $date->format('y') - 1 .'/'.$date->format('y'); } } else { $tmp[] = (string) $date->year; } return $tmp; } public function getPlayers(int $part, array $player_ids) { switch ($this->season_or_date) { case 'season': if (! $this->season_selected) { $this->season_selected = $this->getCurrentSeason(); } $sesson_int_string = []; foreach ($this->season_selected as $value) { if (strpos($value, '/') !== false) { $sesson_int_string[] = (string) $value; } else { $sesson_int_string[] = (string) $value; $sesson_int_string[] = (int) $value; } } return match ($part) { 1 => StatistikoPlayer::with('details') ->whereIn('ss_player_id', $player_ids) ->when($this->season_selected, function ($query) use ($sesson_int_string) { return $query->whereIn('season', $sesson_int_string); })->get(), 2 => StatistikoPlayer::with('details') ->whereIn('ss_player_id', $player_ids) ->when($this->season_selected, function ($query) use ($sesson_int_string) { return $query->whereNotIn('season', $sesson_int_string); })->get(), }; default: return match ($part) { 1 => StatistikoPlayer::with('details') ->whereIn('ss_player_id', $player_ids) ->when($this->date_spliter, function ($query) { return $query->whereDate('starttime', '>', $this->date_spliter); })->get(), 2 => StatistikoPlayer::with('details') ->whereIn('ss_player_id', $player_ids) ->when($this->season_selected, function ($query) { return $query->whereDate('starttime', '<=', $this->date_spliter); })->get(), }; } } }