From 44af3f2caa30676a974638e7cdad3793be4690ac Mon Sep 17 00:00:00 2001 From: salam Date: Thu, 30 Jul 2026 18:57:44 +0200 Subject: [PATCH] wip --- .../LoadStatisticFixturesLeaguesOptions.php | 6 +- .../LoadStatisticFixturesMatchOptions.php | 4 +- app/Actions/Selections/LoadPlayer.php | 20 +- app/Actions/Selections/LoadPosition.php | 20 ++ app/Actions/Selections/LoadSeasons.php | 2 +- .../Grapper/Sofascore/PlayerPerSeason.php | 12 +- .../Schemas/StatistikoDetailForm.php | 6 +- .../Schemas/StatistikoPlayerForm.php | 1 - .../Tables/StatistikoPlayersTable.php | 5 +- app/Filament/Imports/Helper/ImportDetails.php | 1 + app/Filament/Imports/Helper/ImportPlayer.php | 8 +- app/Filament/Pages/Statistic.php | 8 +- app/Filament/Widgets/Data/LoadPerformance.php | 9 +- app/Filament/Widgets/Data/LoadPlayer.php | 2 +- app/Models/RosaTournament.php | 10 + app/Models/SofaScorePlayerPerSeason.php | 2 +- app/Models/StatisticFixtures.php | 4 +- app/Models/StatistikoPlayer.php | 2 +- ...te_sofa_score_player_per_seasons_table.php | 2 +- ...9_132627_create_rosa_tournaments_table.php | 27 +++ .../seeders/SofaScorePlayerPositionSeeder.php | 222 +++++++++--------- 21 files changed, 222 insertions(+), 151 deletions(-) create mode 100644 app/Actions/Selections/LoadPosition.php create mode 100644 app/Models/RosaTournament.php create mode 100644 database/migrations/2026_07_29_132627_create_rosa_tournaments_table.php diff --git a/app/Actions/LoadStatisticFixturesLeaguesOptions.php b/app/Actions/LoadStatisticFixturesLeaguesOptions.php index 9b9a807d..b190e771 100644 --- a/app/Actions/LoadStatisticFixturesLeaguesOptions.php +++ b/app/Actions/LoadStatisticFixturesLeaguesOptions.php @@ -2,7 +2,7 @@ namespace App\Actions; -use App\Models\CompetitionGroup; +use App\Models\SofaScoreTournament; use App\Models\StatisticFixtures; class LoadStatisticFixturesLeaguesOptions @@ -13,10 +13,10 @@ class LoadStatisticFixturesLeaguesOptions ->groupBy('league_id') ->pluck('league_id')->toArray(); - $cnt = CompetitionGroup::with('country')->whereIn('id', $res)->get(); + $cnt = SofaScoreTournament::with('sofascore_category')->whereIn('tournament_id', $res)->get(); $arr = []; foreach ($cnt as $val) { - $arr[$val->id] = $val->country->name . ' ' . $val->name; + $arr[$val->tournament_id] = $val->sofascore_category->name . ' ' . $val->name; } asort($arr); diff --git a/app/Actions/LoadStatisticFixturesMatchOptions.php b/app/Actions/LoadStatisticFixturesMatchOptions.php index e77b8a7b..98ea23aa 100644 --- a/app/Actions/LoadStatisticFixturesMatchOptions.php +++ b/app/Actions/LoadStatisticFixturesMatchOptions.php @@ -6,7 +6,7 @@ use App\Models\StatisticFixtures; class LoadStatisticFixturesMatchOptions { - public static function load($league_id) + public static function load(int $league_id) { if (! $league_id) { return []; @@ -15,7 +15,7 @@ class LoadStatisticFixturesMatchOptions $arr = []; foreach ($res as $val) { - $arr[$val->id] = $val->starttime->format('Y-m-d H:i') . ' - ' . $val->home->name . ' vs ' . $val->away->name; + $arr[$val->id] = $val->starttime->format('Y-m-d H:i') . ' - ' . $val->home->ss_team_name . ' vs ' . $val->away->ss_team_name; } return $arr; diff --git a/app/Actions/Selections/LoadPlayer.php b/app/Actions/Selections/LoadPlayer.php index 80d3266b..5aa610f3 100644 --- a/app/Actions/Selections/LoadPlayer.php +++ b/app/Actions/Selections/LoadPlayer.php @@ -3,6 +3,7 @@ namespace App\Actions\Selections; use App\Models\SofaScorePlayerPerSeason; +use App\Models\SofaScorePlayerPosition; use App\Models\StatistikoEvent; use Filament\Schemas\Components\Utilities\Get; @@ -17,6 +18,7 @@ class LoadPlayer $team_position = $get('team_position'); $season_or_date = $filter['season_or_date'] ?? 'season'; + if ($season_or_date != 'season' or !count($season)) { $season[] = date('Y'); } @@ -35,8 +37,10 @@ class LoadPlayer $matches_count = count($matches); + $ss_positions_map = SofaScorePlayerPosition::pluck('name', 'ss_code')->toArray(); + // needs to run daily for pre-calculaton - $player = SofaScorePlayerPerSeason::with('details')->where('tx_team_id', $team_id)->whereIn('season', $season)->get(); + $player = SofaScorePlayerPerSeason::with('details')->where('ss_team_id', $team_id)->whereIn('season', $season)->get(); $arr = []; foreach ($player as $val) { @@ -44,25 +48,31 @@ class LoadPlayer switch ($team_position) { case 'home': $events_played = $val->events_played_home; + $minues_played = $val->minutes_played_home; break; case 'away': $events_played = $val->events_played_away; + $minues_played = $val->minutes_played_away; break; default: $events_played = $val->events_played_home + $val->events_played_away; + $minues_played = $val->minutes_played_home + $val->minutes_played_home; break; } $colorlevel = round($matches_count / 3); - $position = strtoupper($val->details->position); + $time_played = round($minues_played / 60) . ':'; + $time_played .= $minues_played % 60; + + $position = $ss_positions_map[$val->details->position] ?? 'No Specific Position'; if ($events_played < $colorlevel) { - $arr[$position][$val->ss_player_id] = '' . $val->details->name . ' (' . $events_played . ')'; + $arr[$position][$val->ss_player_id] = '' . $val->details->player_name . '(' . $events_played . ') (' . $time_played . ')'; } else if ($events_played < $colorlevel * 2) { - $arr[$position][$val->ss_player_id] = '' . $val->details->name . ' (' . $events_played . ')'; + $arr[$position][$val->ss_player_id] = '' . $val->details->player_name . ' (' . $events_played . ') (' . $time_played . ''; } else { - $arr[$position][$val->ss_player_id] = '' . $val->details->name . ' (' . $events_played . ')'; + $arr[$position][$val->ss_player_id] = '' . $val->details->player_name . ' (' . $events_played . ') (' . $time_played . ')'; } } return $arr; diff --git a/app/Actions/Selections/LoadPosition.php b/app/Actions/Selections/LoadPosition.php new file mode 100644 index 00000000..5aa1a318 --- /dev/null +++ b/app/Actions/Selections/LoadPosition.php @@ -0,0 +1,20 @@ +ss_code] = $val->season; + } + + return $arr; + } +} diff --git a/app/Actions/Selections/LoadSeasons.php b/app/Actions/Selections/LoadSeasons.php index 81abfa9e..c52a2b23 100644 --- a/app/Actions/Selections/LoadSeasons.php +++ b/app/Actions/Selections/LoadSeasons.php @@ -6,7 +6,7 @@ use App\Models\StatistikoEvent; class LoadSeasons { - public static function load($league_id) + public static function load(int $league_id) { // $res = CompetitionGroup::with('country')->where('id', $league_id)->first(); // $season_mode = $res->country->season_mode; diff --git a/app/Console/Commands/Grapper/Sofascore/PlayerPerSeason.php b/app/Console/Commands/Grapper/Sofascore/PlayerPerSeason.php index 95afaeb1..3d6bef4b 100644 --- a/app/Console/Commands/Grapper/Sofascore/PlayerPerSeason.php +++ b/app/Console/Commands/Grapper/Sofascore/PlayerPerSeason.php @@ -14,7 +14,7 @@ class PlayerPerSeason { $debug = Nuh::$options['d'] ?? 0; - $res = StatistikoDetail::query()->select('ss_player_id', 'txodds_id')->get(); + $res = StatistikoDetail::query()->select('ss_player_id', 'ss_team_id')->get(); if ($debug) { Notice::note('process ' . $res->count() . " player", 'bb'); @@ -35,10 +35,12 @@ class PlayerPerSeason $collection[$val2->event->season]['minutes_played_away'] = 0; } if ($val2->minutes_played > 0) { - if ($val->txodds_id == $val2->event->home_id) { + if ($val2->activeteam_id == $val2->event->home_id) { + $collection[$val2->event->season]['events_played_home'] += 1; $collection[$val2->event->season]['minutes_played_home'] += $val2->minutes_played; - } else if ($val->txodds_id == $val2->event->away_id) { + } else if ($val2->activeteam_id == $val2->event->away_id) { + $collection[$val2->event->season]['events_played_away'] += 1; $collection[$val2->event->season]['minutes_played_away'] += $val2->minutes_played; } @@ -46,11 +48,11 @@ class PlayerPerSeason } foreach ($collection as $season => $row) { - if ($val->txodds_id && $val->ss_player_id) { + if ($val->ss_team_id && $val->ss_player_id) { SofaScorePlayerPerSeason::updateOrCreate( [ 'ss_player_id' => $val->ss_player_id, - 'tx_team_id' => $val->txodds_id, + 'ss_team_id' => $val->ss_team_id, 'season' => $season ], [ diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Schemas/StatistikoDetailForm.php b/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Schemas/StatistikoDetailForm.php index acd9cfb0..36cb398a 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Schemas/StatistikoDetailForm.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Schemas/StatistikoDetailForm.php @@ -18,14 +18,14 @@ class StatistikoDetailForm 'xl' => 4, ])->schema([ TextInput::make('ss_player_id')->required(), + TextInput::make('ss_team_id')->required(), + TextInput::make('tx_team_id'), TextInput::make('player_name')->required(), + DatePicker::make('ss_national_team_id'), DatePicker::make('birthdate'), TextInput::make('height'), TextInput::make('nationality'), TextInput::make('position'), - TextInput::make('ss_national_team_id'), - TextInput::make('tx_team_id'), - TextInput::make('team_name'), TextInput::make('preferred_foot'), DatePicker::make('last_update'), ]), diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Schemas/StatistikoPlayerForm.php b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Schemas/StatistikoPlayerForm.php index 751d7977..cb35ccc0 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Schemas/StatistikoPlayerForm.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Schemas/StatistikoPlayerForm.php @@ -19,7 +19,6 @@ class StatistikoPlayerForm TextInput::make('sport_id'), TextInput::make('match_id'), TextInput::make('ss_player_id'), - TextInput::make('ss_player_id'), TextInput::make('activeteam_id'), TextInput::make('playersubstitute_id'), TextInput::make('goals'), diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php index ae81b97f..546696a6 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php @@ -21,12 +21,11 @@ class StatistikoPlayersTable return $table ->columns([ TextColumn::make('match_id')->searchable(), - TextColumn::make('details.name') + TextColumn::make('ss_player_id')->label('SofaScore Id')->searchable(), + TextColumn::make('details.player_name') ->label('Player') ->searchable() ->tooltip(fn($record) => $record->details->full_name), - TextColumn::make('ss_player_id')->label('TM Id')->searchable(), - TextColumn::make('ss_player_id')->label('SS Id')->searchable(), TextColumn::make('event.home.name')->searchable()->color('primary'), TextColumn::make('event.away.name')->searchable()->color('success'), ]) diff --git a/app/Filament/Imports/Helper/ImportDetails.php b/app/Filament/Imports/Helper/ImportDetails.php index 342bd2b6..09646923 100644 --- a/app/Filament/Imports/Helper/ImportDetails.php +++ b/app/Filament/Imports/Helper/ImportDetails.php @@ -23,6 +23,7 @@ class ImportDetails $row = array_values($row); // ss_player_id + // // ss_team_id // tx_team_id // player_name diff --git a/app/Filament/Imports/Helper/ImportPlayer.php b/app/Filament/Imports/Helper/ImportPlayer.php index f37142ca..3f8b7579 100644 --- a/app/Filament/Imports/Helper/ImportPlayer.php +++ b/app/Filament/Imports/Helper/ImportPlayer.php @@ -77,7 +77,7 @@ class ImportPlayer 'penaltyshoutout_missed', 'player_position', 'playerrating_value', - 'ss_player_id' + 'tm_player_id' ]; SimpleExcelReader::create(storage_path('app/public/' . $filePath)) @@ -89,15 +89,12 @@ class ImportPlayer $row = array_values($row); - $sport_id = 1; $match_id = 0; $ss_player_id = 0; $update_array = []; foreach ($fieldnames as $key => $name) { - if ($key == 0) - $sport_id = (int) $row[$key]; - else if ($key == 1) + if ($key == 1) $match_id = (int) $row[$key]; else if ($key == 2) $ss_player_id = (int) $row[$key]; @@ -107,7 +104,6 @@ class ImportPlayer StatistikoPlayer::updateOrCreate( [ - 'sport_id' => $sport_id, 'match_id' => $match_id, 'ss_player_id' => $ss_player_id, ], diff --git a/app/Filament/Pages/Statistic.php b/app/Filament/Pages/Statistic.php index a052e782..c103d2a6 100644 --- a/app/Filament/Pages/Statistic.php +++ b/app/Filament/Pages/Statistic.php @@ -7,6 +7,7 @@ use App\Actions\LoadStatisticFixturesMatchOptions; use App\Actions\Selections\LoadPlayer; use App\Actions\Selections\LoadSeasons; use App\Models\Element; +use App\Models\SofaScoreRosa; use App\Models\StatisticFixtures; use BackedEnum; use BezhanSalleh\FilamentShield\Traits\HasPageShield; @@ -108,9 +109,12 @@ class Statistic extends BaseDashboard if ($get('match_id')) { $res = StatisticFixtures::where('id', $get('match_id'))->first(); + $arr = []; - $arr[$res->home_id] = Element::query()->where('id', $res->home_id)->value('name'); - $arr[$res->away_id] = Element::query()->where('id', $res->away_id)->value('name'); + if ($res) { + $arr[$res->home_id] = SofaScoreRosa::query()->where('ss_team_id', $res->home_id)->value('ss_team_name'); + $arr[$res->away_id] = SofaScoreRosa::query()->where('ss_team_id', $res->away_id)->value('ss_team_name'); + } return $arr; } diff --git a/app/Filament/Widgets/Data/LoadPerformance.php b/app/Filament/Widgets/Data/LoadPerformance.php index 42d21147..062578da 100644 --- a/app/Filament/Widgets/Data/LoadPerformance.php +++ b/app/Filament/Widgets/Data/LoadPerformance.php @@ -15,7 +15,6 @@ class LoadPerformance public static function load(array $filter, bool $hasdots) { - // dd($filter); $league_id = (int) $filter['league_id'] ?? 0; @@ -34,8 +33,12 @@ class LoadPerformance $match = StatisticFixtures::with('home')->with('away')->where('id', $match_id)->first(); - $home_id = $match->home_id; - $away_id = $match->away_id; + if (! $match) { + return []; + } + + $home_id = $match->home_id ?? 0; + $away_id = $match->away_id ?? 0; diff --git a/app/Filament/Widgets/Data/LoadPlayer.php b/app/Filament/Widgets/Data/LoadPlayer.php index 81400571..505bdc2a 100644 --- a/app/Filament/Widgets/Data/LoadPlayer.php +++ b/app/Filament/Widgets/Data/LoadPlayer.php @@ -46,7 +46,7 @@ class LoadPlayer $statistic_type = 'gls'; } - $player_name = StatistikoDetail::where('ss_player_id', (int) $ss_player_id)->value('name'); + $player_name = StatistikoDetail::where('ss_player_id', (int) $ss_player_id)->value('player_name'); $res = StatistikoPlayer::with('event')->where('ss_player_id', (int) $ss_player_id)->get(); diff --git a/app/Models/RosaTournament.php b/app/Models/RosaTournament.php new file mode 100644 index 00000000..339d9009 --- /dev/null +++ b/app/Models/RosaTournament.php @@ -0,0 +1,10 @@ +belongsTo(Element::class); + return $this->belongsTo(SofaScoreRosa::class, 'home_id', 'ss_team_id'); } public function away() { - return $this->belongsTo(Element::class); + return $this->belongsTo(SofaScoreRosa::class, 'away_id', 'ss_team_id'); } } diff --git a/app/Models/StatistikoPlayer.php b/app/Models/StatistikoPlayer.php index aac630b9..e1e2da0e 100644 --- a/app/Models/StatistikoPlayer.php +++ b/app/Models/StatistikoPlayer.php @@ -80,6 +80,6 @@ class StatistikoPlayer extends Model public function details() { - return $this->belongsTo(StatistikoDetail::class, 'tm_player_id', 'tm_player_id'); + return $this->belongsTo(StatistikoDetail::class, 'ss_player_id', 'ss_player_id'); } } diff --git a/database/migrations/2026_06_27_091506_create_sofa_score_player_per_seasons_table.php b/database/migrations/2026_06_27_091506_create_sofa_score_player_per_seasons_table.php index b6fa3c97..198b1c1a 100644 --- a/database/migrations/2026_06_27_091506_create_sofa_score_player_per_seasons_table.php +++ b/database/migrations/2026_06_27_091506_create_sofa_score_player_per_seasons_table.php @@ -14,7 +14,7 @@ return new class extends Migration Schema::create('sofa_score_player_per_seasons', function (Blueprint $table) { $table->id(); $table->integer('ss_player_id')->index(); - $table->integer('tx_team_id')->index(); + $table->integer('ss_team_id')->index(); $table->string('season')->index(); $table->integer('events_played_home')->default(0)->nullable(); $table->integer('events_played_away')->default(0)->nullable(); diff --git a/database/migrations/2026_07_29_132627_create_rosa_tournaments_table.php b/database/migrations/2026_07_29_132627_create_rosa_tournaments_table.php new file mode 100644 index 00000000..71f45177 --- /dev/null +++ b/database/migrations/2026_07_29_132627_create_rosa_tournaments_table.php @@ -0,0 +1,27 @@ +id(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('rosa_tournaments'); + } +}; diff --git a/database/seeders/SofaScorePlayerPositionSeeder.php b/database/seeders/SofaScorePlayerPositionSeeder.php index 27085e7a..a27b4f80 100644 --- a/database/seeders/SofaScorePlayerPositionSeeder.php +++ b/database/seeders/SofaScorePlayerPositionSeeder.php @@ -26,117 +26,117 @@ class SofaScorePlayerPositionSeeder extends Seeder ('MR', 'Right Midfield'), ('RW', 'Right Winger'), ('ST', 'Centre-Forward'), - ('DC_AM', 'Centre-Back, Attacking Midfield'), - ('DL_AM', 'Left-Back, Attacking Midfield'), - ('DM_AM', 'Defensive Midfield, Attacking Midfield'), - ('DR_AM', 'Right-Back, Attacking Midfield'), - ('LW_AM', 'Left Winger, Attacking Midfield'), - ('MC_AM', 'Central Midfield, Attacking Midfield'), - ('ML_AM', 'Left Midfield, Attacking Midfield'), - ('MR_AM', 'Right Midfield, Attacking Midfield'), - ('RW_AM', 'Right Winger, Attacking Midfield'), - ('ST_AM', 'Centre-Forward, Attacking Midfield'), - ('AM_DC', 'Attacking Midfield, Centre-Back'), - ('DL_DC', 'Left-Back, Centre-Back'), - ('DM_DC', 'Defensive Midfield, Centre-Back'), - ('DR_DC', 'Right-Back, Centre-Back'), - ('LW_DC', 'Left Winger, Centre-Back'), - ('MC_DC', 'Central Midfield, Centre-Back'), - ('ML_DC', 'Left Midfield, Centre-Back'), - ('MR_DC', 'Right Midfield, Centre-Back'), - ('RW_DC', 'Right Winger, Centre-Back'), - ('ST_DC', 'Centre-Forward, Centre-Back'), - ('AM_DL', 'Attacking Midfield, Left-Back'), - ('DC_DL', 'Centre-Back, Left-Back'), - ('DM_DL', 'Defensive Midfield, Left-Back'), - ('DR_DL', 'Right-Back, Left-Back'), - ('LW_DL', 'Left Winger, Left-Back'), - ('MC_DL', 'Central Midfield, Left-Back'), - ('ML_DL', 'Left Midfield, Left-Back'), - ('MR_DL', 'Right Midfield, Left-Back'), - ('RW_DL', 'Right Winger, Left-Back'), - ('ST_DL', 'Centre-Forward, Left-Back'), - ('AM_DM', 'Attacking Midfield, Defensive Midfield'), - ('DC_DM', 'Centre-Back, Defensive Midfield'), - ('DL_DM', 'Left-Back, Defensive Midfield'), - ('DR_DM', 'Right-Back, Defensive Midfield'), - ('LW_DM', 'Left Winger, Defensive Midfield'), - ('MC_DM', 'Central Midfield, Defensive Midfield'), - ('ML_DM', 'Left Midfield, Defensive Midfield'), - ('MR_DM', 'Right Midfield, Defensive Midfield'), - ('RW_DM', 'Right Winger, Defensive Midfield'), - ('ST_DM', 'Centre-Forward, Defensive Midfield'), - ('AM_DR', 'Attacking Midfield, Right-Back'), - ('DC_DR', 'Centre-Back, Right-Back'), - ('DL_DR', 'Left-Back, Right-Back'), - ('DM_DR', 'Defensive Midfield, Right-Back'), - ('LW_DR', 'Left Winger, Right-Back'), - ('MC_DR', 'Central Midfield, Right-Back'), - ('ML_DR', 'Left Midfield, Right-Back'), - ('MR_DR', 'Right Midfield, Right-Back'), - ('RW_DR', 'Right Winger, Right-Back'), - ('ST_DR', 'Centre-Forward, Right-Back'), - ('AM_LW', 'Attacking Midfield, Left Winger'), - ('DC_LW', 'Centre-Back, Left Winger'), - ('DL_LW', 'Left-Back, Left Winger'), - ('DM_LW', 'Defensive Midfield, Left Winger'), - ('DR_LW', 'Right-Back, Left Winger'), - ('MC_LW', 'Central Midfield, Left Winger'), - ('ML_LW', 'Left Midfield, Left Winger'), - ('MR_LW', 'Right Midfield, Left Winger'), - ('RW_LW', 'Right Winger, Left Winger'), - ('ST_LW', 'Centre-Forward, Left Winger'), - ('AM_MC', 'Attacking Midfield, Central Midfield'), - ('DC_MC', 'Centre-Back, Central Midfield'), - ('DL_MC', 'Left-Back, Central Midfield'), - ('DM_MC', 'Defensive Midfield, Central Midfield'), - ('DR_MC', 'Right-Back, Central Midfield'), - ('LW_MC', 'Left Winger, Central Midfield'), - ('ML_MC', 'Left Midfield, Central Midfield'), - ('MR_MC', 'Right Midfield, Central Midfield'), - ('RW_MC', 'Right Winger, Central Midfield'), - ('ST_MC', 'Centre-Forward, Central Midfield'), - ('AM_ML', 'Attacking Midfield, Left Midfield'), - ('DC_ML', 'Centre-Back, Left Midfield'), - ('DL_ML', 'Left-Back, Left Midfield'), - ('DM_ML', 'Defensive Midfield, Left Midfield'), - ('DR_ML', 'Right-Back, Left Midfield'), - ('LW_ML', 'Left Winger, Left Midfield'), - ('MC_ML', 'Central Midfield, Left Midfield'), - ('MR_ML', 'Right Midfield, Left Midfield'), - ('RW_ML', 'Right Winger, Left Midfield'), - ('ST_ML', 'Centre-Forward, Left Midfield'), - ('AM_MR', 'Attacking Midfield, Right Midfield'), - ('DC_MR', 'Centre-Back, Right Midfield'), - ('DL_MR', 'Left-Back, Right Midfield'), - ('DM_MR', 'Defensive Midfield, Right Midfield'), - ('DR_MR', 'Right-Back, Right Midfield'), - ('LW_MR', 'Left Winger, Right Midfield'), - ('MC_MR', 'Central Midfield, Right Midfield'), - ('ML_MR', 'Left Midfield, Right Midfield'), - ('RW_MR', 'Right Winger, Right Midfield'), - ('ST_MR', 'Centre-Forward, Right Midfield'), - ('AM_RW', 'Attacking Midfield, Right Winger'), - ('DC_RW', 'Centre-Back, Right Winger'), - ('DL_RW', 'Left-Back, Right Winger'), - ('DM_RW', 'Defensive Midfield, Right Winger'), - ('DR_RW', 'Right-Back, Right Winger'), - ('LW_RW', 'Left Winger, Right Winger'), - ('MC_RW', 'Central Midfield, Right Winger'), - ('ML_RW', 'Left Midfield, Right Winger'), - ('MR_RW', 'Right Midfield, Right Winger'), - ('ST_RW', 'Centre-Forward, Right Winger'), - ('AM_ST', 'Attacking Midfield, Centre-Forward'), - ('DC_ST', 'Centre-Back, Centre-Forward'), - ('DL_ST', 'Left-Back, Centre-Forward'), - ('DM_ST', 'Defensive Midfield, Centre-Forward'), - ('DR_ST', 'Right-Back, Centre-Forward'), - ('LW_ST', 'Left Winger, Centre-Forward'), - ('MC_ST', 'Central Midfield, Centre-Forward'), - ('ML_ST', 'Left Midfield, Centre-Forward'), - ('MR_ST', 'Right Midfield, Centre-Forward'), - ('RW_ST', 'Right Winger, Centre-Forward'); -"; + ('DC-AM', 'Centre-Back, Attacking Midfield'), + ('DL-AM', 'Left-Back, Attacking Midfield'), + ('DM-AM', 'Defensive Midfield, Attacking Midfield'), + ('DR-AM', 'Right-Back, Attacking Midfield'), + ('LW-AM', 'Left Winger, Attacking Midfield'), + ('MC-AM', 'Central Midfield, Attacking Midfield'), + ('ML-AM', 'Left Midfield, Attacking Midfield'), + ('MR-AM', 'Right Midfield, Attacking Midfield'), + ('RW-AM', 'Right Winger, Attacking Midfield'), + ('ST-AM', 'Centre-Forward, Attacking Midfield'), + ('AM-DC', 'Attacking Midfield, Centre-Back'), + ('DL-DC', 'Left-Back, Centre-Back'), + ('DM-DC', 'Defensive Midfield, Centre-Back'), + ('DR-DC', 'Right-Back, Centre-Back'), + ('LW-DC', 'Left Winger, Centre-Back'), + ('MC-DC', 'Central Midfield, Centre-Back'), + ('ML-DC', 'Left Midfield, Centre-Back'), + ('MR-DC', 'Right Midfield, Centre-Back'), + ('RW-DC', 'Right Winger, Centre-Back'), + ('ST-DC', 'Centre-Forward, Centre-Back'), + ('AM-DL', 'Attacking Midfield, Left-Back'), + ('DC-DL', 'Centre-Back, Left-Back'), + ('DM-DL', 'Defensive Midfield, Left-Back'), + ('DR-DL', 'Right-Back, Left-Back'), + ('LW-DL', 'Left Winger, Left-Back'), + ('MC-DL', 'Central Midfield, Left-Back'), + ('ML-DL', 'Left Midfield, Left-Back'), + ('MR-DL', 'Right Midfield, Left-Back'), + ('RW-DL', 'Right Winger, Left-Back'), + ('ST-DL', 'Centre-Forward, Left-Back'), + ('AM-DM', 'Attacking Midfield, Defensive Midfield'), + ('DC-DM', 'Centre-Back, Defensive Midfield'), + ('DL-DM', 'Left-Back, Defensive Midfield'), + ('DR-DM', 'Right-Back, Defensive Midfield'), + ('LW-DM', 'Left Winger, Defensive Midfield'), + ('MC-DM', 'Central Midfield, Defensive Midfield'), + ('ML-DM', 'Left Midfield, Defensive Midfield'), + ('MR-DM', 'Right Midfield, Defensive Midfield'), + ('RW-DM', 'Right Winger, Defensive Midfield'), + ('ST-DM', 'Centre-Forward, Defensive Midfield'), + ('AM-DR', 'Attacking Midfield, Right-Back'), + ('DC-DR', 'Centre-Back, Right-Back'), + ('DL-DR', 'Left-Back, Right-Back'), + ('DM-DR', 'Defensive Midfield, Right-Back'), + ('LW-DR', 'Left Winger, Right-Back'), + ('MC-DR', 'Central Midfield, Right-Back'), + ('ML-DR', 'Left Midfield, Right-Back'), + ('MR-DR', 'Right Midfield, Right-Back'), + ('RW-DR', 'Right Winger, Right-Back'), + ('ST-DR', 'Centre-Forward, Right-Back'), + ('AM-LW', 'Attacking Midfield, Left Winger'), + ('DC-LW', 'Centre-Back, Left Winger'), + ('DL-LW', 'Left-Back, Left Winger'), + ('DM-LW', 'Defensive Midfield, Left Winger'), + ('DR-LW', 'Right-Back, Left Winger'), + ('MC-LW', 'Central Midfield, Left Winger'), + ('ML-LW', 'Left Midfield, Left Winger'), + ('MR-LW', 'Right Midfield, Left Winger'), + ('RW-LW', 'Right Winger, Left Winger'), + ('ST-LW', 'Centre-Forward, Left Winger'), + ('AM-MC', 'Attacking Midfield, Central Midfield'), + ('DC-MC', 'Centre-Back, Central Midfield'), + ('DL-MC', 'Left-Back, Central Midfield'), + ('DM-MC', 'Defensive Midfield, Central Midfield'), + ('DR-MC', 'Right-Back, Central Midfield'), + ('LW-MC', 'Left Winger, Central Midfield'), + ('ML-MC', 'Left Midfield, Central Midfield'), + ('MR-MC', 'Right Midfield, Central Midfield'), + ('RW-MC', 'Right Winger, Central Midfield'), + ('ST-MC', 'Centre-Forward, Central Midfield'), + ('AM-ML', 'Attacking Midfield, Left Midfield'), + ('DC-ML', 'Centre-Back, Left Midfield'), + ('DL-ML', 'Left-Back, Left Midfield'), + ('DM-ML', 'Defensive Midfield, Left Midfield'), + ('DR-ML', 'Right-Back, Left Midfield'), + ('LW-ML', 'Left Winger, Left Midfield'), + ('MC-ML', 'Central Midfield, Left Midfield'), + ('MR-ML', 'Right Midfield, Left Midfield'), + ('RW-ML', 'Right Winger, Left Midfield'), + ('ST-ML', 'Centre-Forward, Left Midfield'), + ('AM-MR', 'Attacking Midfield, Right Midfield'), + ('DC-MR', 'Centre-Back, Right Midfield'), + ('DL-MR', 'Left-Back, Right Midfield'), + ('DM-MR', 'Defensive Midfield, Right Midfield'), + ('DR-MR', 'Right-Back, Right Midfield'), + ('LW-MR', 'Left Winger, Right Midfield'), + ('MC-MR', 'Central Midfield, Right Midfield'), + ('ML-MR', 'Left Midfield, Right Midfield'), + ('RW-MR', 'Right Winger, Right Midfield'), + ('ST-MR', 'Centre-Forward, Right Midfield'), + ('AM-RW', 'Attacking Midfield, Right Winger'), + ('DC-RW', 'Centre-Back, Right Winger'), + ('DL-RW', 'Left-Back, Right Winger'), + ('DM-RW', 'Defensive Midfield, Right Winger'), + ('DR-RW', 'Right-Back, Right Winger'), + ('LW-RW', 'Left Winger, Right Winger'), + ('MC-RW', 'Central Midfield, Right Winger'), + ('ML-RW', 'Left Midfield, Right Winger'), + ('MR-RW', 'Right Midfield, Right Winger'), + ('ST-RW', 'Centre-Forward, Right Winger'), + ('AM-ST', 'Attacking Midfield, Centre-Forward'), + ('DC-ST', 'Centre-Back, Centre-Forward'), + ('DL-ST', 'Left-Back, Centre-Forward'), + ('DM-ST', 'Defensive Midfield, Centre-Forward'), + ('DR-ST', 'Right-Back, Centre-Forward'), + ('LW-ST', 'Left Winger, Centre-Forward'), + ('MC-ST', 'Central Midfield, Centre-Forward'), + ('ML-ST', 'Left Midfield, Centre-Forward'), + ('MR-ST', 'Right Midfield, Centre-Forward'), + ('RW-ST', 'Right Winger, Centre-Forward'); + "; DB::unprepared($sql); } }