exp_away - $match->exp_home; $exp_total = $match->exp_away + $match->exp_home; $handicap_range = [$exp_handicap - $accuracy, $exp_handicap + $accuracy]; $total_range = [$exp_total - $accuracy, $exp_total + $accuracy]; } // dd($season); $season = GetSeason::load($season, $seasonmode); /** * IF WITH PLAYER */ $matches_played = []; if ($ss_player_id) { $matches_season = StatistikoEvent::whereIn('season', $season) ->where(function ($query) use ($team_id, $team_position) { switch ($team_position) { case 'home': return $query->where('home_id', '=', $team_id); case 'away': return $query->where('away_id', '=', $team_id); default: return $query->where('home_id', '=', $team_id) ->orWhere('away_id', '=', $team_id); } })->pluck('match_id')->toArray(); $matches_played = StatistikoPlayer::query() ->whereIn('match_id', $matches_season) ->where('ss_player_id', $ss_player_id) ->when($player_on_field, function ($query) use ($player_on_field) { // 'all' => 'All', // 'lineup' => 'Lineup', // 'substituted' => 'Substituted', // 'notplayed' => 'Not Played', switch ($player_on_field) { case 'all': return $query->where('minutes_played', '>', 0); case 'lineup': return $query->where('lineup', 'T')->where('minutes_played', '>', 0); case 'substituted': return $query->where('lineup', 'P')->where('minutes_played', '>', 0); default: return $query->where('minutes_played', '>', 0); } }) ->pluck('match_id')->toArray(); if (! $matches_played) { $matches_played[] = -1; } } // dd($handicap_range, $total_range); /** * STATTISTIC DATA */ // Log::debug('result', [$similar_past_matches, $home_id, $away_id, $team_id]); return StatistikoEvent::with('home')->with('away') ->where(function ($query) use ($league_id, $similar_past_matches) { switch ($similar_past_matches) { case 'none': case 'league': return $query->where('league_id', $league_id); } }) ->where(function ($query) use ($team_id, $similar_past_matches, $team_position) { if ($team_id && $similar_past_matches == 'none') { switch ($team_position) { case 'home': return $query->where('home_id', '=', $team_id); case 'away': return $query->where('away_id', '=', $team_id); default: return $query->where('home_id', '=', $team_id) ->orWhere('away_id', '=', $team_id); } } }) ->when($matches_played, function ($query) use ($matches_played, $player_on_field) { if ($player_on_field == 'notplayed') { return $query->whereNotIn('match_id', $matches_played); } else { return $query->whereIn('match_id', $matches_played); } }) ->when($handicap_range, function ($query) use ($handicap_range) { return $query->whereBetween('exp_handicap', $handicap_range); })->when($total_range, function ($query) use ($total_range) { return $query->whereBetween('exp_total', $total_range); }) ->when($start, function ($query) use ($start) { return $query->whereDate('starttime', '>=', $start); })->when($end, function ($query) use ($end) { return $query->whereDate('starttime', '<=', $end); }) ->when($season, function ($query) use ($season, $season_or_date, $similar_past_matches) { if ($similar_past_matches == 'none' && $season_or_date == 'season') { return $query->whereIn('season', $season); } }) ->orderBy('starttime', 'ASC') ->get(); } }