'None', * 'league' => 'League', * 'all' => 'All Database', */ $handicap_range = 0; $total_range = 0; if ($similar_past_matches != 'none') { $match = StatisticFixtures::with('home')->with('away')->where('id', (int) $match_id)->first(); $exp_handicap = $match->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]; $home_team = $match->home->name; $away_team = $match->away->name; } else { $home_team = 'In Favour'; $away_team = 'Against'; } /** * IF WITH PLAYER */ $matches_played = 0; $description = ''; if ($tm_player_id) { $matches_played = StatistikoPlayer::where('tm_player_id', (int) $tm_player_id) ->when($player_on_field, function ($query) use ($player_on_field) { switch ($player_on_field) { case 'lineup': return $query->where('lineup', 'T'); case 'substituted': return $query->where('lineup', 'P'); } }) ->pluck('match_id')->toArray(); $description = ' with ' . StatistikoDetail::where('tm_player_id', (int) $tm_player_id)->value('name') . ' (' . \count($matches_played) . ')'; if (! $matches_played) { $matches_played[] = -1; } } /** * STATTISTIC DATA */ $res = 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, $team_position, $similar_past_matches) { if ($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) { 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->where('starttime', '>=', $start); })->when($end, function ($query) use ($end) { return $query->where('starttime', '<=', $end); }) ->orderBy('starttime', 'ASC') ->get(); if ($res == null) { return []; } $dataset_home = []; $dataset_away = []; $dataset_exp_home = []; $dataset_exp_away = []; $results_per_event = []; $playing_date = []; $labels = []; $events = []; $results = ['w' => 0, 'd' => 0, 'l' => 0, 'w2' => 0, 'l2' => 0]; foreach ($res as $value) { // dd($value); $labels[] = round($value['starttime']->diffInDays(Carbon::now())); $playing_date[] = $value['starttime']->format('d. F Y H:i'); $results_per_event[] = $value['gls_h'] . ' : ' . $value['gls_a']; if ($team_position == 'home') { switch ($value['result_code']) { case '1': $results['w']++; $results['l2']++; break; case 'X': $results['d']++; break; case '2': $results['l']++; $results['w2']++; break; } switch ($statistic_type) { case 'gls': $val_home = (int) $value['gls_h']; $val_away = (int) $value['gls_a']; $dataset_exp_home[] = (float) round($value['exp_home'], 1); $dataset_exp_away[] = (float) round($value['exp_away'], 1); break; case 'crn': $val_home = (int) $value['crn_h']; $val_away = (int) $value['crn_a']; break; case 'fls': $val_home = (int) $value['fls_h']; $val_away = (int) $value['fls_a']; break; case 'ofs': $val_home = (int) $value['ofs_h']; $val_away = (int) $value['ofs_a']; break; case 'crd': $val_home = (int) $value['crd_h']; $val_away = (int) $value['crd_a']; break; case 'snt': $val_home = (int) $value['snt_h']; $val_away = (int) $value['snt_a']; break; case 'tsh': $val_home = (int) $value['tsh_h']; $val_away = (int) $value['tsh_a']; break; } } elseif ($team_position == 'away') { switch ($value['result_code']) { case '1': $results['l']++; $results['w2']++; break; case 'X': $results['d']++; break; case '2': $results['w']++; $results['l2']++; break; } switch ($statistic_type) { case 'gls': $val_home = (int) $value['gls_a']; $val_away = (int) $value['gls_h']; $dataset_exp_home[] = (float) round($value['exp_away'], 1); $dataset_exp_away[] = (float) round($value['exp_home'], 1); break; case 'crn': $val_home = (int) $value['crn_a']; $val_away = (int) $value['crn_h']; break; case 'fls': $val_home = (int) $value['fls_a']; $val_away = (int) $value['fls_h']; break; case 'ofs': $val_home = (int) $value['ofs_a']; $val_away = (int) $value['ofs_h']; break; case 'crd': $val_home = (int) $value['crd_a']; $val_away = (int) $value['crd_h']; break; case 'snt': $val_home = (int) $value['snt_a']; $val_away = (int) $value['snt_h']; break; case 'tsh': $val_home = (int) $value['tsh_a']; $val_away = (int) $value['tsh_h']; break; } } else { switch ($value['result_code']) { case '1': if ($team_id == $value['home_id']) { $results['l2']++; $results['w']++; } else { $results['w2']++; $results['l']++; } break; case 'X': $results['d']++; break; case '2': if ($team_id == $value['home_id']) { $results['l']++; $results['w2']++; } else { $results['l2']++; $results['w']++; } break; } switch ($statistic_type) { case 'gls': if ($team_id == $value['home_id']) { $val_home = (int) $value['gls_h']; $val_away = (int) $value['gls_a']; $dataset_exp_home[] = (float) round($value['exp_home'], 1); $dataset_exp_away[] = (float) round($value['exp_away'], 1); } else { $val_home = (int) $value['gls_a']; $val_away = (int) $value['gls_h']; $dataset_exp_home[] = (float) round($value['exp_away'], 1); $dataset_exp_away[] = (float) round($value['exp_home'], 1); } break; case 'crn': if ($team_id == $value['home_id']) { $val_home = (int) $value['crn_h']; $val_away = (int) $value['crn_a']; } else { $val_home = (int) $value['crn_a']; $val_away = (int) $value['crn_h']; } break; case 'fls': if ($team_id == $value['home_id']) { $val_home = (int) $value['fls_h']; $val_away = (int) $value['fls_a']; } else { $val_home = (int) $value['fls_a']; $val_away = (int) $value['fls_h']; } break; case 'ofs': if ($team_id == $value['home_id']) { $val_home = (int) $value['ofs_h']; $val_away = (int) $value['ofs_a']; } else { $val_home = (int) $value['ofs_a']; $val_away = (int) $value['ofs_h']; } break; case 'crd': if ($team_id == $value['home_id']) { $val_home = (int) $value['crd_h']; $val_away = (int) $value['crd_a']; } else { $val_home = (int) $value['crd_a']; $val_away = (int) $value['crd_h']; } break; case 'snt': if ($team_id == $value['home_id']) { $val_home = (int) $value['snt_h']; $val_away = (int) $value['snt_a']; } else { $val_home = (int) $value['snt_a']; $val_away = (int) $value['snt_h']; } break; case 'tsh': if ($team_id == $value['home_id']) { $val_home = (int) $value['tsh_h']; $val_away = (int) $value['tsh_a']; } else { $val_home = (int) $value['tsh_a']; $val_away = (int) $value['tsh_h']; } break; } } if (isset($val_home) && isset($val_away)) { $events[] = $value->home->name . ' vs ' . $value->away->name; $dataset_home[] = $val_home; $dataset_away[] = $val_away; } } if ($similar_past_matches != 'none') { $label1 = 'Home'; $label2 = 'Away'; } else { $label1 = 'In Favour'; $label2 = 'Against'; } self::shortenEnding($labels, $dataset_home, $dataset_away); $data = [ 'datasets' => [ [ 'label' => $label1, 'events' => $events, 'playing_date' => $playing_date, 'results_per_event' => $results_per_event, 'data' => $dataset_home, 'tension' => 0.5, 'borderColor' => '#fb2c36', 'backgroundColor' => '#fb2c36', 'pointStyle' => $hasdots, 'fill' => [ 'target' => 1, 'above' => '#fb2c3680', 'below' => '#fdc70080', ], ], [ 'label' => $label2, 'events' => $events, 'playing_date' => $playing_date, 'results_per_event' => $results_per_event, 'data' => $dataset_away, 'tension' => 0.5, 'borderColor' => '#fdc700', 'backgroundColor' => '#fdc700', 'pointStyle' => $hasdots, 'fill' => false, 'hidden' => true, ], ], 'labels' => $labels, 'description' => $description ?? '', 'results' => $results, 'home_team' => $home_team, 'away_team' => $away_team, 'similar_past_matches' => $similar_past_matches, ]; if ($dataset_exp_home) { $data['datasets'][] = [ 'label' => 'Goals ' . $label1, 'events' => $events, 'playing_date' => $playing_date, 'results_per_event' => $results_per_event, 'data' => $dataset_exp_home, 'tension' => 0.5, 'borderColor' => '#c70036', 'backgroundColor' => '#c70036', 'pointStyle' => $hasdots, 'hidden' => true, 'fill' => [ 'target' => 1, 'above' => '#fb2c3680', 'below' => '#fdc70080', ], ]; $data['datasets'][] = [ 'label' => 'Goals ' . $label2, 'events' => $events, 'playing_date' => $playing_date, 'results_per_event' => $results_per_event, 'data' => $dataset_exp_away, 'tension' => 0.5, 'borderColor' => '#e17100', 'backgroundColor' => '#e17100', 'pointStyle' => $hasdots, 'hidden' => true, 'fill' => [ 'target' => 1, 'above' => '#fb2c3680', 'below' => '#fdc70080', ], ]; } self::$last_query = $data; // dd($data); return $data; } public static function shortenEnding(array &$labels, array &$homes, array &$aways) { if (! isset($homes['all'])) { return; } $count_home = 0; $count_away = 0; for ($i = \count($homes) - 1; $i > 0; $i--) { if ($homes[$i] == null) { $count_home++; } else { break; } } for ($i = \count($aways) - 1; $i > 0; $i--) { if ($aways[$i] == null) { $count_away++; } else { break; } } $keeps = count($homes['all']) - min($count_home, $count_away) - 1; $homes = array_slice($homes, 0, $keeps); $aways = array_slice($aways, 0, $keeps); $labels = array_slice($labels, 0, $keeps); } }