ss_player_id; } $matches_ids = []; switch ($this->season_or_date) { case 'season': if (! $this->season_selected) { $this->season_selected = $this->getCurrentSeason(); } Log::debug('season_selected', $this->season_selected); $matches_ids = match ($part) { 1 => StatistikoEvent::where('league_id', $this->liga_id) ->when($this->season_selected, function ($query) { return $query->whereIn('season', $this->season_selected); })->pluck('match_id')->toArray(), 2 => StatistikoEvent::where('league_id', $this->liga_id) ->when($this->season_selected, function ($query) { return $query->whereNotIn('season', $this->season_selected); })->pluck('match_id')->toArray() }; break; default: $matches_ids = match ($part) { 1 => StatistikoEvent::where('league_id', $this->liga_id) ->when($this->date_spliter, function ($query) { return $query->whereDate('starttime', '>', $this->date_spliter); })->pluck('match_id')->toArray(), 2 => StatistikoEvent::where('league_id', $this->liga_id) ->when($this->season_selected, function ($query) { return $query->whereDate('starttime', '<=', $this->date_spliter); })->pluck('match_id')->toArray() }; } $res = StatistikoPlayer::with('details')->whereIn('ss_player_id', $player_ids)->whereIn('match_id', $matches_ids)->get(); $arr = []; 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; $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; } $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; } $matches_ids = StatistikoEvent::where('league_id', $this->liga_id)->pluck('match_id')->toArray(); $res = StatistikoPlayer::with('details')->whereIn('ss_player_id', $player_ids)->whereIn('match_id', $matches_ids)->get(); $arr = []; 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; $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; } $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 static 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; } }