This commit is contained in:
salam committed 2026-10-10 22:24:13 +02:00
1 parent c2f068e8bf
commit 436a8ec142
8 files changed
+158 -86

No files matched your search

@@ -64,8 +64,6 @@ class AverageTeam
foreach ($res as $val) {
// dd($team_position, $val);
if ($team_position == 'home' && $team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
@@ -100,14 +98,6 @@ class AverageTeam
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
}
// ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
// ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
// ExpectationAverage::filter($result, 'team', 'fls', $val->fls_h, $val->fls_a);
// ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_h, $val->ofs_a);
// ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
// ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
// ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
}
}
@@ -14,15 +14,24 @@ class AverageTeamSeason
public static function load(array &$expectations, array $filter, object $match)
{
$tournament_id = (int) $filter['league_id'] ?? 0;
$team_position = $filter['team_position'];
$team_id = (int) $filter['team_id'] ?? 0;
$seasonmode = $filter['seasonmode'];
$active_season = GetSeason::active($seasonmode);
$season = GetSeason::active($seasonmode);
$res = StatistikoEvent::where('league_id', $tournament_id)
->when($active_season, function ($query) use ($active_season) {
return $query->where('season', $active_season);
})->when($team_id, function ($query) use ($team_id) {
return $query->orWhere('home_id', $team_id)->orWhere('away_id', '=', $team_id);
->when($season, function ($query) use ($season) {
return $query->where('season', $season);
})->when($team_id, function ($query) use ($team_position, $team_id) {
switch ($team_position) {
case 'home':
return $query->where('home_id', $team_id);
case 'away':
return $query->where('away_id', $team_id);
default:
return $query->orWhere('home_id', $team_id)
->orWhere('away_id', '=', $team_id);
}
})->get();
if ($res) {
@@ -30,13 +39,41 @@ class AverageTeamSeason
$result = [];
foreach ($res as $val) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_a, $val->fls_h);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_a, $val->ofs_h);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
if ($team_position == 'home' && $team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_h, $val->fls_a);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_h, $val->ofs_a);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
} elseif ($team_position == 'away' && $team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_a, $val->fls_h);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_a, $val->ofs_h);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
} else {
if ($team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_h, $val->crn_a);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_h, $val->fls_a);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_h, $val->ofs_a);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
} elseif ($team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
ExpectationAverage::filter($result, 'team', 'fls', $val->fls_a, $val->fls_h);
ExpectationAverage::filter($result, 'team', 'ofs', $val->ofs_a, $val->ofs_h);
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
}
}
}
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh'];
@@ -58,7 +95,7 @@ class AverageTeamSeason
$expectations['crd_team_season']['name'] = 'Cards';
$expectations['snt_team_season']['name'] = 'Shots on Target';
$expectations['tsh_team_season']['name'] = 'Total Shots';
$expectations['active_season'] = $active_season;
$expectations['active_season'] = $season;
}
}
}
@@ -20,7 +20,6 @@ class ExpectationsTeam
* STATTISTIC DATA
*/
$team_id = (int) $filter['team_id'] ?? 0;
$league_id = (int) $filter['league_id'] ?? 0;
$team_position = $filter['team_position'];
$similar_past_matches = $filter['similar_past_matches'];
@@ -40,7 +39,7 @@ class ExpectationsTeam
return [];
}
$tmp = [];
$tmp = self::template();
foreach ($res as $value) {
// dd($match->home_id, $match->away_id, $value);
ExpectationCollecting::sort($similar_past_matches, $tmp, 'gls', $value->home_id, $value->away_id, $value->gls_h, $value->gls_a, $match);
@@ -52,14 +51,15 @@ class ExpectationsTeam
ExpectationCollecting::sort($similar_past_matches, $tmp, 'crn', $value->home_id, $value->away_id, $value->crn_h, $value->crn_a, $match);
}
if (self::$collectionMethod == 'A') {
$expectations = ExpectationMethodA::calc($tmp);
} else {
$expectations = ExpectationMethodB::calc($tmp);
if ($expectations) {
if (self::$collectionMethod == 'A') {
$expectations = ExpectationMethodA::calc($tmp);
} else {
$expectations = ExpectationMethodB::calc($tmp);
}
ExpectationsMinMax::calc($expectations, $match);
}
ExpectationsMinMax::calc($expectations, $match);
$expectations['gls']['name'] = 'Goals';
$expectations['crn']['name'] = 'Corner';
$expectations['fls']['name'] = 'Fouls';
@@ -120,4 +120,23 @@ class ExpectationsTeam
$expectations['draw_odd'] = $expectations['draw_count'] ? number_format(Round::odd($count_tp / $expectations['draw_count']), 2) : 0;
$expectations['lost_odd'] = $expectations['lost_count'] ? number_format(Round::odd($count_tp / $expectations['lost_count']), 2) : 0;
}
public static function template()
{
$arr = [];
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh'];
foreach ($bets as $bet) {
foreach (['team_home', 'team_away'] as $team) {
foreach (['scored', 'conceded'] as $sc) {
foreach (['home', 'away'] as $ha) {
foreach (['evt', 'sum'] as $es) {
$arr[$bet][$team][$sc][$ha][$es] = 0;
}
}
}
}
}
return $arr;
}
}
@@ -13,28 +13,32 @@ class ExpectationMethodB
$result = [];
foreach ($expectations as $bettype => $data) {
$result[$bettype]['home'] = round((
$data['team_home']['scored']['home']['sum'] * $cfHA +
$data['team_home']['scored']['away']['sum'] +
$data['team_away']['conceded']['away']['sum'] * $cfHA +
$data['team_away']['conceded']['home']['sum']
) / (
$data['team_home']['scored']['home']['evt'] * $cfHA +
$data['team_home']['scored']['away']['evt'] +
$data['team_away']['conceded']['home']['evt'] +
$data['team_away']['conceded']['away']['evt'] * $cfHA
), 1);
$result[$bettype]['away'] = round((
$data['team_home']['conceded']['home']['sum'] * $cfHA +
$data['team_home']['conceded']['away']['sum'] +
$data['team_away']['scored']['away']['sum'] * $cfHA +
$data['team_away']['scored']['home']['sum']
) / (
$data['team_home']['conceded']['home']['evt'] * $cfHA +
$data['team_home']['conceded']['away']['evt'] +
$data['team_away']['scored']['home']['evt'] +
$data['team_away']['scored']['away']['evt'] * $cfHA
), 1);
if ($data['team_home']['scored']['home']['evt'] && $data['team_away']['scored']['home']['evt']) {
$result[$bettype]['home'] = round((
$data['team_home']['scored']['home']['sum'] * $cfHA +
$data['team_home']['scored']['away']['sum'] +
$data['team_away']['conceded']['away']['sum'] * $cfHA +
$data['team_away']['conceded']['home']['sum']
) / (
$data['team_home']['scored']['home']['evt'] * $cfHA +
$data['team_home']['scored']['away']['evt'] +
$data['team_away']['conceded']['home']['evt'] +
$data['team_away']['conceded']['away']['evt'] * $cfHA
), 1);
}
if ($data['team_home']['scored']['home']['evt'] && $data['team_away']['scored']['home']['evt']) {
$result[$bettype]['away'] = round((
$data['team_home']['conceded']['home']['sum'] * $cfHA +
$data['team_home']['conceded']['away']['sum'] +
$data['team_away']['scored']['away']['sum'] * $cfHA +
$data['team_away']['scored']['home']['sum']
) / (
$data['team_home']['conceded']['home']['evt'] * $cfHA +
$data['team_home']['conceded']['away']['evt'] +
$data['team_away']['scored']['home']['evt'] +
$data['team_away']['scored']['away']['evt'] * $cfHA
), 1);
}
}
return $result;
@@ -62,17 +62,19 @@ class ExpectationsMinMax
}
foreach ($bets as $key) {
if ($expectations[$key]['home'] > $final[$key]['max']) {
$expectations[$key]['home'] = $final[$key]['max'];
}
if ($expectations[$key]['away'] > $final[$key]['max']) {
$expectations[$key]['away'] = $final[$key]['max'];
}
if ($expectations[$key]['home'] < $final[$key]['min']) {
$expectations[$key]['home'] = $final[$key]['min'];
}
if ($expectations[$key]['away'] < $final[$key]['min']) {
$expectations[$key]['away'] = $final[$key]['min'];
if (isset($expectations[$key])) {
if ($expectations[$key]['home'] > $final[$key]['max']) {
$expectations[$key]['home'] = $final[$key]['max'];
}
if ($expectations[$key]['away'] > $final[$key]['max']) {
$expectations[$key]['away'] = $final[$key]['max'];
}
if ($expectations[$key]['home'] < $final[$key]['min']) {
$expectations[$key]['home'] = $final[$key]['min'];
}
if ($expectations[$key]['away'] < $final[$key]['min']) {
$expectations[$key]['away'] = $final[$key]['min'];
}
}
}
@@ -82,17 +84,19 @@ class ExpectationsMinMax
$gls_away_max = $match->exp_away * (1 + ($Y / 2));
$gls_away_min = $match->exp_away * (1 - ($Y / 2));
if ($expectations['gls']['home'] > $gls_home_max) {
$expectations['gls']['home'] = $gls_home_max;
}
if ($expectations['gls']['away'] > $gls_away_max) {
$expectations['gls']['away'] = $gls_away_max;
}
if ($expectations['gls']['home'] < $gls_home_min) {
$expectations['gls']['home'] = $gls_home_min;
}
if ($expectations['gls']['away'] < $gls_away_min) {
$expectations['gls']['away'] = $gls_away_min;
if (isset($expectations['gls'])) {
if ($expectations['gls']['home'] > $gls_home_max) {
$expectations['gls']['home'] = $gls_home_max;
}
if ($expectations['gls']['away'] > $gls_away_max) {
$expectations['gls']['away'] = $gls_away_max;
}
if ($expectations['gls']['home'] < $gls_home_min) {
$expectations['gls']['home'] = $gls_home_min;
}
if ($expectations['gls']['away'] < $gls_away_min) {
$expectations['gls']['away'] = $gls_away_min;
}
}
}
}
+20 -1
View File
@@ -26,7 +26,7 @@ class LoadEventsBoxes
return [];
}
$expectations = [];
$expectations = self::template();
ExpectationsTeam::load($expectations, $filter, $match);
@@ -47,4 +47,23 @@ class LoadEventsBoxes
return $expectations;
}
public static function template()
{
$arr = [];
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh'];
foreach ($bets as $bet) {
foreach (['team_home', 'team_away'] as $team) {
foreach (['scored', 'conceded'] as $sc) {
foreach (['home', 'away'] as $ha) {
foreach (['evt', 'sum'] as $es) {
$arr[$bet][$team][$sc][$ha][$es] = 0;
}
}
}
}
}
return $arr;
}
}
+8 -8
View File
@@ -144,8 +144,8 @@ class BoxesBettypeAll extends StatsOverviewWidget
// $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>';
foreach ($bets as $name) {
$str .= '<div class="font-normal text-left col-span-2">'.$data[$name]['name'].'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'] ?? 0, 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'] ?? 0, 1).'</div>';
}
$str .= '</div>';
@@ -159,8 +159,8 @@ class BoxesBettypeAll extends StatsOverviewWidget
// $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>';
foreach ($bets as $name) {
$str .= '<div class="font-normal text-left col-span-2">'.$data[$name]['name'].'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'] ?? 0, 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'] ?? 0, 1).'</div>';
}
$str .= '</div>';
@@ -174,8 +174,8 @@ class BoxesBettypeAll extends StatsOverviewWidget
// $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>';
foreach ($bets as $name) {
$str .= '<div class="font-normal text-left col-span-2">'.$data[$name]['name'].'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'] ?? 0, 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'] ?? 0, 1).'</div>';
}
$str .= '</div>';
@@ -189,8 +189,8 @@ class BoxesBettypeAll extends StatsOverviewWidget
// $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>';
foreach ($bets as $name) {
$str .= '<div class="font-normal text-left col-span-2">'.$data[$name]['name'].'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'], 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['home'] ?? 0, 1).'</div>';
$str .= '<div class="text-right">'.number_format($data[$name]['away'] ?? 0, 1).'</div>';
}
$str .= '</div>';
@@ -79,7 +79,6 @@ class LoadEventsQueryAll
}
}
// dd($handicap_range, $total_range);
/**
* STATTISTIC DATA
*/
@@ -95,7 +94,7 @@ class LoadEventsQueryAll
})
->where(function ($query) use ($match, $similar_past_matches) {
if ($similar_past_matches == 'none') {
return $query->where('home_id', '=', $match->home_id)
return $query->orWhere('home_id', '=', $match->home_id)
->orWhere('home_id', '=', $match->away_id)
->orWhere('away_id', '=', $match->home_id)
->orWhere('away_id', '=', $match->away_id);