From d947f408880b6608093a16eb8df9ece041de226b Mon Sep 17 00:00:00 2001 From: salam Date: Thu, 10 Sep 2026 08:34:30 +0200 Subject: [PATCH] wip --- app/Actions/PlayerPerSeason.php | 57 +++- app/Livewire/BoardDispatcher.php | 304 ++++++++++++++++-- app/Livewire/PlayerCalculator.php | 1 - app/Models/SofaScorePlayerPerSeason.php | 6 + app/Models/SofaScorePlayerPosition.php | 16 + ...te_sofa_score_player_per_seasons_table.php | 6 + ...eate_sofa_score_player_positions_table.php | 17 + .../seeders/SofaScorePlayerPositionSeeder.php | 250 +++++++------- .../views/livewire/board-dispatcher.blade.php | 28 +- 9 files changed, 520 insertions(+), 165 deletions(-) diff --git a/app/Actions/PlayerPerSeason.php b/app/Actions/PlayerPerSeason.php index 0da1b774..e03e4684 100644 --- a/app/Actions/PlayerPerSeason.php +++ b/app/Actions/PlayerPerSeason.php @@ -6,17 +6,24 @@ use App\Models\SofaScorePlayerCache; use App\Models\SofaScorePlayerPerSeason; use App\Models\StatistikoDetail; use App\Models\StatistikoPlayer; +use App\Utilities\Notice; class PlayerPerSeason { public static function run() { - // when data changes clear player chche + $debug = 0; + + // when data changes clear player cache SofaScorePlayerCache::truncate(); $res = StatistikoDetail::query()->where('is_active', 1)->select('ss_player_id', 'ss_team_id')->get(); - foreach ($res as $val) { + foreach ($res as $key => $val) { + + if ($debug) { + Notice::note($val->ss_player_id.' - '.$res->count().'/'.$key + 1, 'g'); + } $collection = []; @@ -25,29 +32,67 @@ class PlayerPerSeason foreach ($res2 as $val2) { if (isset($val2->event->season)) { + if (! isset($collection['total'])) { + $collection['total']['events_played_home'] = 0; + $collection['total']['events_played_away'] = 0; + $collection['total']['minutes_played_home'] = 0; + $collection['total']['minutes_played_away'] = 0; + $collection['total']['goals'] = 0; + $collection['total']['fouls'] = 0; + $collection['total']['offsides'] = 0; + $collection['total']['shots_on_target'] = 0; + $collection['total']['shots_off_target'] = 0; + $collection['total']['cards'] = 0; + } if (! isset($collection[$val2->event->season])) { $collection[$val2->event->season]['events_played_home'] = 0; $collection[$val2->event->season]['events_played_away'] = 0; $collection[$val2->event->season]['minutes_played_home'] = 0; $collection[$val2->event->season]['minutes_played_away'] = 0; + $collection[$val2->event->season]['goals'] = 0; + $collection[$val2->event->season]['fouls'] = 0; + $collection[$val2->event->season]['cards'] = 0; + $collection[$val2->event->season]['offsides'] = 0; + $collection[$val2->event->season]['shots_on_target'] = 0; + $collection[$val2->event->season]['shots_off_target'] = 0; } if ((int) $val2->minutes_played > 0) { 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; + $collection['total']['events_played_home'] += 1; + $collection['total']['minutes_played_home'] += $val2->minutes_played; } elseif ($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; + $collection['total']['minutes_played_away'] += 1; + $collection['total']['minutes_played_away'] += $val2->minutes_played; } + + $cards = $val2->card_yellow + $val2->card_yellowred + $val2->card_red; + + $collection[$val2->event->season]['goals'] += $val2->goals; + $collection[$val2->event->season]['fouls'] += $val2->fouls; + $collection[$val2->event->season]['cards'] += $cards; + $collection[$val2->event->season]['offsides'] += $val2->offsides; + $collection[$val2->event->season]['shots_on_target'] += $val2->shots_on_target; + $collection[$val2->event->season]['shots_off_target'] += $val2->shots_off_target; + + $collection['total']['goals'] += $val2->goals; + $collection['total']['fouls'] += $val2->fouls; + $collection['total']['cards'] += $cards; + $collection['total']['offsides'] += $val2->offsides; + $collection['total']['shots_on_target'] += $val2->shots_on_target; + $collection['total']['shots_off_target'] += $val2->shots_off_target; } } } foreach ($collection as $season => $row) { if ($val->ss_team_id && $val->ss_player_id) { + SofaScorePlayerPerSeason::updateOrCreate( [ 'ss_player_id' => $val->ss_player_id, @@ -59,6 +104,12 @@ class PlayerPerSeason 'events_played_away' => $row['events_played_away'], 'minutes_played_home' => $row['minutes_played_home'], 'minutes_played_away' => $row['minutes_played_away'], + 'goals' => $row['goals'], + 'fouls' => $row['fouls'], + 'cards' => $row['cards'], + 'offsides' => $row['offsides'], + 'shots_on_target' => $row['shots_on_target'], + 'shots_off_target' => $row['shots_off_target'], ] ); } diff --git a/app/Livewire/BoardDispatcher.php b/app/Livewire/BoardDispatcher.php index f95c2289..b5e356f5 100644 --- a/app/Livewire/BoardDispatcher.php +++ b/app/Livewire/BoardDispatcher.php @@ -2,7 +2,11 @@ namespace App\Livewire; +use App\Models\SofaScorePlayerPerSeason; +use App\Models\SofaScorePlayerPosition; use App\Models\SofaScoreRosa; +use App\Models\StatisticFixtures; +use App\Models\StatistikoDetail; use App\Models\User; use Filament\Actions\Action; use Filament\Actions\Concerns\InteractsWithActions; @@ -34,6 +38,14 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa public array $sourceRecords = []; + public array $filters = []; + + // slider + public float $x_value = 3; + + // min + public float $y_value = 180; + public array $lists = []; public array $results = []; @@ -44,6 +56,8 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa public bool $calculationDisabled = true; + public bool $rangeXDisabled = true; + public string $ss_team_name = ''; public array $lineupsMap = [ @@ -160,6 +174,8 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa public function mount(array $filters) { + $this->filters = $filters; + $this->ss_team_name = SofaScoreRosa::where('ss_team_id', $filters['team_id'])->value('ss_team_name'); $this->sourceRecords = PlayerCalculator::load($filters); @@ -178,31 +194,33 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa // Log::debug('beschriftung', $this->beschriftung); } + public function updateXvalue() + { + $this->calculationChecker(); + } + public function getHeadingTable(): HtmlString { return new HtmlString('
-
Gls
-
Fls
-
Ofs
-
Snt
-
Tsh
-
Crd
-
Foot
-
Evt
-
Ømin
-
'); +
Gls
+
Fls
+
Ofs
+
Snt
+
Tsh
+
Crd
+
Foot
+
Evt
+
Ømin
+ '); } public function form(Schema $schema): Schema { return $schema - ->columns(4) ->components([ Select::make('lineup_selected') + ->label('Lineup') ->live() - ->hiddenLabel() - ->columnSpan(2) - ->prefix('Lineup') ->prefixIcon('icon-soccerplayer') ->searchable() ->options($this->lineup_options) @@ -243,13 +261,13 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa ->tooltip('Remove all players from field') ->icon('phosphor-arrows-clockwise') ->action(fn () => $this->clearAll()), - Action::make('calculate') - ->hiddenLabel() - ->tooltip('Calculate expected values') - ->size(Size::Small) - ->icon('phosphor-calculator') - ->disabled($this->calculationDisabled) - ->action(fn () => $this->calculateAspg()), + // Action::make('calculate') + // ->hiddenLabel() + // ->tooltip('Calculate expected values') + // ->size(Size::Small) + // ->icon('phosphor-calculator') + // ->disabled($this->calculationDisabled) + // ->action(fn () => $this->calculateAspg()), Action::make('copy') ->tooltip('Copy results for pasting into a spread sheet') ->hiddenLabel() @@ -317,9 +335,6 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa foreach ($this->sourceRecords as $k => $record) { if ($record['id'] == (int) $player['id']) { - - $this->calculationDisabled = false; - if ($this->boxes[$boxNumber]) { $this->clearBox($boxNumber); } @@ -328,11 +343,34 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $this->sourceRecords[$k]['position'] = $this->activeBoxes[$boxNumber]; } } + $this->calculationChecker(); + } + + public function calculationChecker() + { + $count = 0; + foreach ($this->sourceRecords as $record) { + if (count($record)) { + $count++; + } + } + if ($count >= 9) { + $this->copyDisabled = false; + $this->rangeXDisabled = false; + + $this->calculateAspg(); + } else { + $this->copyDisabled = true; + $this->rangeXDisabled = true; + + $this->clearAll(); + } } public function updateLineup(?string $state) { $this->clearAll(); + $this->calculationChecker(); if (isset($this->lineupsMap[$state])) { $this->lineup = $this->lineupsMap[$state]; @@ -343,6 +381,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa public function clearBox(int $boxNumber): void { + if (isset($this->boxes[$boxNumber])) { $tmp = $this->boxes[$boxNumber]; $player_id = 0; @@ -358,12 +397,9 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $this->sourceRecords[$k]['active'] = 0; } } - } - } - public function calculateAspg(): void - { - $this->copyDisabled = false; + $this->calculationChecker(); + } } public function clearAll(): void @@ -374,18 +410,22 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa foreach ($this->sourceRecords as $k => $record) { $this->sourceRecords[$k]['position'] = ''; $this->sourceRecords[$k]['active'] = 0; + $this->sourceRecords[$k]['gls'] = 0; + $this->sourceRecords[$k]['fls'] = 0; + $this->sourceRecords[$k]['ofs'] = 0; + $this->sourceRecords[$k]['snt'] = 0; + $this->sourceRecords[$k]['tsh'] = 0; + $this->sourceRecords[$k]['crd'] = 0; } - $this->copyDisabled = true; - $this->calculationDisabled = true; + $this->calculationChecker(); } public function copyResult() { - return; - $copystring = ''; foreach ($this->results as $row) { + dd($row); unset($row['origin']); unset($row['pcolor']); unset($row['ecolor']); @@ -395,6 +435,204 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $this->js("navigator.clipboard.writeText(`$copystring`)"); } + public function calculateAspg(): void + { + // Calcolare Aspettativa Team per GOALS + // (il valore che appare quando viene selezionato un Evento): nell' esempio, + // se scegliamo come Team il Remo (Home) il valore di riferimento sarà 1.2 + $team_id = $this->filters['team_id']; + $res = StatisticFixtures::where('id', $this->filters['match_id'])->first(); + $asp_team = 0; + if ((int) $res->home_id == (int) $team_id) { + $asp_team = $res->exp_home; + } elseif ((int) $res->away_id == (int) $team_id) { + $asp_team = $res->exp_away; + } + + // "atr" => 2.8868026211843 + // "id" => 44691 + // "name" => "Maicon" + // "on_field" => 0 + // "position" => "DC" + // "sgf" => 1044 + // "smg" => 1044 + // "adg" => 90 + // "as_goals" => 0.044 + // "at_goals" => 67.511 + // "as_cards" => 0.195 + // "at_cards" => 67.54875 + // "as_fouls" => 0.959 + // "at_fouls" => 67.73975 + // "as_offsides" => 0.036 + // "at_offsides" => 67.509 + // "as_total_shots" => 0.525 + // "at_total_shots" => 67.63125 + // "as_shots_on_target" => 0.263 + // "at_shots_on_target" => 67.56575 + + $player = StatistikoDetail::where('ss_team_id', (int) $team_id)->where('position', '!=', 'GK')->where('is_active', 1)->get(); + + // Aspettativa Team di Riferimento + // (ATR) = Aspettativa Team * Numero di Giocatori di Team in Rosters (esclusi i portieri) / 10. + // Ad esempio per Remo (supponiamo 24 giocatori nel Roster esclusi i portieri): ATR = 1.2 * 24 / 10 = 2.88 + + $asp_team_riferimento = $asp_team * $player->count() / 10; + + $player_totals = SofaScorePlayerPerSeason::with('details')->where('season', 'total')->where('ss_team_id', $team_id)->get(); + + $results = []; + foreach ($player_totals as $val) { + if ($val->details && $val->details->is_active) { + + $ss_player_id = $val->ss_player_id; + $position = $val->details->position; + + $tmp = []; + $tmp['id'] = $ss_player_id; + $tmp['name'] = $val->details->player_name; + + $tmp['asp_team'] = $asp_team; + $tmp['asp_team_riferimento'] = $asp_team_riferimento; + + $position_field = $this->get_position($ss_player_id); + if ($position_field) { + $position = $position_field; + $tmp['active'] = 1; + } else { + $tmp['active'] = 0; + } + $tmp['position'] = $position; + + // Aspettativa di Gioco (AdG) = Somma Goals fatti da Player nel DB / Somma Minuti Giocati da Player (SMG) nel DB * 90. + // Se la SMG è < Y per quel Player prenderemo in considerazione solo l'Aspettativa Statistica (AS). + // Il valore Y dovrebbe essere configurabile in una interfaccia. Il valore iniziale lo fissiamo a Y = 180 + + // Somma Goals fatti da Player nel DB + $somma_goals = $val->goals; + $tmp['somma_goals'] = $val->goals; + + // Somma Minuti Giocati da Player (SMG) nel DB + $somma_minuti = $val->minutes_played_home + $val->minutes_played_away; + $tmp['somma_minuti'] = $somma_minuti; + + // Aspettativa di Gioco + // (AdG) + $asp_gioco = $somma_goals / $somma_minuti * 90; + $tmp['asp_gioco'] = $asp_gioco; + + // il valore corrispondente al ruolo del Player (esempio un giocatore in Details ha ruolo = RW + // quindi Aspettativa Statistica (AS) per RW = 0.219) + + $bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target']; + foreach ($bettypes as $bettype) { + $asp_statistica = (float) SofaScorePlayerPosition::where('ss_code', $position)->value('exp_'.$bettype); + $tmp['asp_statistica_'.$bettype] = $asp_statistica; + + if ($somma_minuti < $this->y_value) { + // Se la SMG è < Y per quel Player prenderemo in considerazione solo l'Aspettativa Statistica (AS). + $tmp['asp_teorica_'.$bettype] = $asp_statistica; + } else { + // Aspettativa Teorica (AT) Goals = (X * AdG + AS) / (1 + X) + // dove X è un valore che dovrebbe essere parametrizzabile da una interfaccia. + // Il valore iniziale lo fissiamo a X = 3 + // (AT) + $tmp['asp_teorica_'.$bettype] = ($this->x_value * $asp_gioco + $asp_statistica) / (1 + $this->x_value); + } + } + + // Calcolare la Somma di tutte le AT (colonna G della Tabella) + // Considerare la ATR calcolata allo Step 1 (colonna I della Tabella) + + // Aspettativa per Player: AP = AT * ATR / TOT AT + $results[] = $tmp; + } + } + + $bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target']; + foreach ($bettypes as $bettype) { + $total_bettype = array_sum(array_column($results, 'asp_teorica_'.$bettype)); + foreach ($results as $key => $value) { + // Aspettativa per Player: AP = AT * ATR / TOT AT + $results[$key]['asp_total_'.$bettype] = $total_bettype; + $results[$key]['asp_player_'.$bettype] = ((float) $value['asp_team'] * (float) $value['asp_teorica_'.$bettype]) / $total_bettype; + } + } + + // dd($results); + + // update frontend + foreach ($this->sourceRecords as $k => $record) { + // "id" => 787607 + // "name" => "Keno" + // "preferred_foot" => "Right" + // "player_position" => "LW" + // "position_area" => "attack" + // "player_color" => "warning" + // "timed_color" => "danger" + // "events_played" => 7 + // "everage_minutes" => 11 + // "position" => "DC" + // "active" => 1 + // "gls" => 0 + // "fls" => 0 + // "ofs" => 0 + // "snt" => 0 + // "tsh" => 0 + // "crd" => 0 + foreach ($results as $key => $result) { + // "id" => 44691 + // "name" => "Maicon" + // "asp_team" => "1.11030870045550" + // "asp_team_riferimento" => 2.8868026211843 + // "active" => 0 + // "position" => "DC" + // "somma_goals" => 1044 + // "somma_minuti" => 1044 + // "asp_gioco" => 90 + // "asp_statistica_goals" => 0.044 + // "asp_teorica_goals" => 67.511 + // "asp_statistica_cards" => 0.195 + // "asp_teorica_cards" => 67.54875 + // "asp_statistica_fouls" => 0.959 + // "asp_teorica_fouls" => 67.73975 + // "asp_statistica_offsides" => 0.036 + // "asp_teorica_offsides" => 67.509 + // "asp_statistica_total_shots" => 0.525 + // "asp_teorica_total_shots" => 67.63125 + // "asp_statistica_shots_on_target" => 0.263 + // "asp_teorica_shots_on_target" => 67.56575 + // "asp_player_goals" => 0.041110675617421 + // "asp_player_cards" => 0.041126169295623 + // "asp_player_fouls" => 0.041104958293849 + // "asp_player_offsides" => 0.041105354678332 + // "asp_player_total_shots" => 0.041028401589513 + // "asp_player_shots_on_target" => 0.041094150075013 + if ($record['id'] == $result['id']) { + // dd($result); + $this->sourceRecords[$k]['active'] = $result['active']; + $this->sourceRecords[$k]['gls'] = number_format($result['asp_player_goals'], 3); + $this->sourceRecords[$k]['fls'] = number_format($result['asp_player_fouls'], 3); + $this->sourceRecords[$k]['ofs'] = number_format($result['asp_player_offsides'], 3); + $this->sourceRecords[$k]['snt'] = number_format($result['asp_player_total_shots'], 3); + $this->sourceRecords[$k]['tsh'] = number_format($result['asp_player_shots_on_target'], 3); + $this->sourceRecords[$k]['crd'] = number_format($result['asp_player_cards'], 3); + } + } + } + } + + public function get_position(int $ss_player_id) + { + // see if player is in field and if yes get new position + foreach ($this->sourceRecords as $record) { + if ($record['id'] == $ss_player_id) { + return $record['position']; + } + } + + return false; + } + public function render() { return view('livewire.board-dispatcher'); diff --git a/app/Livewire/PlayerCalculator.php b/app/Livewire/PlayerCalculator.php index 9271d345..a27bee8a 100644 --- a/app/Livewire/PlayerCalculator.php +++ b/app/Livewire/PlayerCalculator.php @@ -135,7 +135,6 @@ class PlayerCalculator extends Component 'position' => '', 'active' => 0, 'gls' => 0, - 'crn' => 0, 'fls' => 0, 'ofs' => 0, 'snt' => 0, diff --git a/app/Models/SofaScorePlayerPerSeason.php b/app/Models/SofaScorePlayerPerSeason.php index 43386a16..c82cdbe9 100644 --- a/app/Models/SofaScorePlayerPerSeason.php +++ b/app/Models/SofaScorePlayerPerSeason.php @@ -14,6 +14,12 @@ class SofaScorePlayerPerSeason extends Model 'events_played_away', 'minutes_played_home', 'minutes_played_away', + 'goals', + 'fouls', + 'cards', + 'offsides', + 'shots_on_target', + 'shots_off_target', ]; public function details() diff --git a/app/Models/SofaScorePlayerPosition.php b/app/Models/SofaScorePlayerPosition.php index 6ca5af3f..007bc15a 100644 --- a/app/Models/SofaScorePlayerPosition.php +++ b/app/Models/SofaScorePlayerPosition.php @@ -15,5 +15,21 @@ class SofaScorePlayerPosition extends Model 'ss_code', 'name', 'generalposition', + 'exp_goals', + 'exp_assists', + 'exp_cards', + 'exp_fouls', + 'exp_was_fouled', + 'exp_offsides', + 'exp_total_shots', + 'exp_shots_on_target', + 'minexp_goals', + 'minexp_assists', + 'minexp_cards', + 'minexp_fouls', + 'minexp_was_fouled', + 'minexp_offsides', + 'minexp_total_shots', + 'minexp_shots_on_target', ]; } 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 198b1c1a..c41d40a6 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 @@ -20,6 +20,12 @@ return new class extends Migration $table->integer('events_played_away')->default(0)->nullable(); $table->integer('minutes_played_home')->default(0)->nullable(); $table->integer('minutes_played_away')->default(0)->nullable(); + $table->integer('goals')->default(0)->nullable(); + $table->integer('fouls')->default(0)->nullable(); + $table->integer('cards')->default(0)->nullable(); + $table->integer('offsides')->default(0)->nullable(); + $table->integer('shots_on_target')->default(0)->nullable(); + $table->integer('shots_off_target')->default(0)->nullable(); $table->timestamps(); }); } diff --git a/database/migrations/2026_07_30_094111_create_sofa_score_player_positions_table.php b/database/migrations/2026_07_30_094111_create_sofa_score_player_positions_table.php index 13801450..3ae71da8 100644 --- a/database/migrations/2026_07_30_094111_create_sofa_score_player_positions_table.php +++ b/database/migrations/2026_07_30_094111_create_sofa_score_player_positions_table.php @@ -16,6 +16,23 @@ return new class extends Migration $table->string('ss_code')->index(); $table->string('name'); $table->string('generalposition'); + $table->decimal('exp_goals', 4, 3)->default(0); + $table->decimal('exp_assists', 4, 3)->default(0); + $table->decimal('exp_cards', 4, 3)->default(0); + $table->decimal('exp_fouls', 4, 3)->default(0); + $table->decimal('exp_was_fouled', 4, 3)->default(0); + $table->decimal('exp_offsides', 4, 3)->default(0); + $table->decimal('exp_total_shots', 4, 3)->default(0); + $table->decimal('exp_shots_on_target', 4, 3)->default(0); + $table->decimal('minexp_goals', 4, 3)->default(0); + $table->decimal('minexp_assists', 4, 3)->default(0); + $table->decimal('minexp_cards', 4, 3)->default(0); + $table->decimal('minexp_fouls', 4, 3)->default(0); + $table->decimal('minexp_was_fouled', 4, 3)->default(0); + $table->decimal('minexp_offsides', 4, 3)->default(0); + $table->decimal('minexp_total_shots', 4, 3)->default(0); + $table->decimal('minexp_shots_on_target', 4, 3)->default(0); + $table->timestamps(); }); } diff --git a/database/seeders/SofaScorePlayerPositionSeeder.php b/database/seeders/SofaScorePlayerPositionSeeder.php index b76a7451..7435defc 100644 --- a/database/seeders/SofaScorePlayerPositionSeeder.php +++ b/database/seeders/SofaScorePlayerPositionSeeder.php @@ -12,131 +12,133 @@ class SofaScorePlayerPositionSeeder extends Seeder /** * SofaScore Player Positions */ - $sql = "INSERT INTO `sofa_score_player_positions` (`ss_code`, `name`, `generalposition`) + $sql = "INSERT INTO `sofa_score_player_positions` (`id`, `ss_code`, `name`, `generalposition`, `exp_goals`, `exp_assists`, `exp_cards`, `exp_fouls`, `exp_was_fouled`, `exp_offsides`, `exp_total_shots`, `exp_shots_on_target`, `minexp_goals`, `minexp_assists`, `minexp_cards`, `minexp_fouls`, `minexp_was_fouled`, `minexp_offsides`, `minexp_total_shots`, `minexp_shots_on_target`, `created_at`, `updated_at`) VALUES - ('LW', 'Left Winger', 'ATTACK'), - ('RW', 'Right Winger', 'ATTACK'), - ('ST', 'Centre-Forward', 'ATTACK'), - ('LW-AM', 'Left Winger, Attacking Midfield', 'ATTACK'), - ('RW-AM', 'Right Winger, Attacking Midfield', 'ATTACK'), - ('ST-AM', 'Centre-Forward, Attacking Midfield', 'ATTACK'), - ('LW-DC', 'Left Winger, Centre-Back', 'ATTACK'), - ('RW-DC', 'Right Winger, Centre-Back', 'ATTACK'), - ('ST-DC', 'Centre-Forward, Centre-Back', 'ATTACK'), - ('LW-DL', 'Left Winger, Left-Back', 'ATTACK'), - ('RW-DL', 'Right Winger, Left-Back', 'ATTACK'), - ('ST-DL', 'Centre-Forward, Left-Back', 'ATTACK'), - ('LW-DM', 'Left Winger, Defensive Midfield', 'ATTACK'), - ('RW-DM', 'Right Winger, Defensive Midfield', 'ATTACK'), - ('ST-DM', 'Centre-Forward, Defensive Midfield', 'ATTACK'), - ('LW-DR', 'Left Winger, Right-Back', 'ATTACK'), - ('RW-DR', 'Right Winger, Right-Back', 'ATTACK'), - ('ST-DR', 'Centre-Forward, Right-Back', 'ATTACK'), - ('RW-LW', 'Right Winger, Left Winger', 'ATTACK'), - ('ST-LW', 'Centre-Forward, Left Winger', 'ATTACK'), - ('LW-MC', 'Left Winger, Central Midfield', 'ATTACK'), - ('RW-MC', 'Right Winger, Central Midfield', 'ATTACK'), - ('ST-MC', 'Centre-Forward, Central Midfield', 'ATTACK'), - ('LW-ML', 'Left Winger, Left Midfield', 'ATTACK'), - ('RW-ML', 'Right Winger, Left Midfield', 'ATTACK'), - ('ST-ML', 'Centre-Forward, Left Midfield', 'ATTACK'), - ('LW-MR', 'Left Winger, Right Midfield', 'ATTACK'), - ('RW-MR', 'Right Winger, Right Midfield', 'ATTACK'), - ('ST-MR', 'Centre-Forward, Right Midfield', 'ATTACK'), - ('LW-RW', 'Left Winger, Right Winger', 'ATTACK'), - ('ST-RW', 'Centre-Forward, Right Winger', 'ATTACK'), - ('LW-ST', 'Left Winger, Centre-Forward', 'ATTACK'), - ('RW-ST', 'Right Winger, Centre-Forward', 'ATTACK'), - ('DC', 'Centre-Back', 'DEFENCE'), - ('DL', 'Left-Back', 'DEFENCE'), - ('DR', 'Right-Back', 'DEFENCE'), - ('DC-AM', 'Centre-Back, Attacking Midfield', 'DEFENCE'), - ('DL-AM', 'Left-Back, Attacking Midfield', 'DEFENCE'), - ('DR-AM', 'Right-Back, Attacking Midfield', 'DEFENCE'), - ('DL-DC', 'Left-Back, Centre-Back', 'DEFENCE'), - ('DR-DC', 'Right-Back, Centre-Back', 'DEFENCE'), - ('DC-DL', 'Centre-Back, Left-Back', 'DEFENCE'), - ('DR-DL', 'Right-Back, Left-Back', 'DEFENCE'), - ('DC-DM', 'Centre-Back, Defensive Midfield', 'DEFENCE'), - ('DL-DM', 'Left-Back, Defensive Midfield', 'DEFENCE'), - ('DR-DM', 'Right-Back, Defensive Midfield', 'DEFENCE'), - ('DC-DR', 'Centre-Back, Right-Back', 'DEFENCE'), - ('DL-DR', 'Left-Back, Right-Back', 'DEFENCE'), - ('DC-LW', 'Centre-Back, Left Winger', 'DEFENCE'), - ('DL-LW', 'Left-Back, Left Winger', 'DEFENCE'), - ('DR-LW', 'Right-Back, Left Winger', 'DEFENCE'), - ('DC-MC', 'Centre-Back, Central Midfield', 'DEFENCE'), - ('DL-MC', 'Left-Back, Central Midfield', 'DEFENCE'), - ('DR-MC', 'Right-Back, Central Midfield', 'DEFENCE'), - ('DC-ML', 'Centre-Back, Left Midfield', 'DEFENCE'), - ('DL-ML', 'Left-Back, Left Midfield', 'DEFENCE'), - ('DR-ML', 'Right-Back, Left Midfield', 'DEFENCE'), - ('DC-MR', 'Centre-Back, Right Midfield', 'DEFENCE'), - ('DL-MR', 'Left-Back, Right Midfield', 'DEFENCE'), - ('DR-MR', 'Right-Back, Right Midfield', 'DEFENCE'), - ('DC-RW', 'Centre-Back, Right Winger', 'DEFENCE'), - ('DL-RW', 'Left-Back, Right Winger', 'DEFENCE'), - ('DR-RW', 'Right-Back, Right Winger', 'DEFENCE'), - ('DC-ST', 'Centre-Back, Centre-Forward', 'DEFENCE'), - ('DL-ST', 'Left-Back, Centre-Forward', 'DEFENCE'), - ('DR-ST', 'Right-Back, Centre-Forward', 'DEFENCE'), - ('GK', 'Goalkeeper', 'GOALKEEPER'), - ('AM', 'Attacking Midfield', 'MIDFIELD'), - ('DM', 'Defensive Midfield', 'MIDFIELD'), - ('MC', 'Central Midfield', 'MIDFIELD'), - ('ML', 'Left Midfield', 'MIDFIELD'), - ('MR', 'Right Midfield', 'MIDFIELD'), - ('DM-AM', 'Defensive Midfield, Attacking Midfield', 'MIDFIELD'), - ('MC-AM', 'Central Midfield, Attacking Midfield', 'MIDFIELD'), - ('ML-AM', 'Left Midfield, Attacking Midfield', 'MIDFIELD'), - ('MR-AM', 'Right Midfield, Attacking Midfield', 'MIDFIELD'), - ('AM-DC', 'Attacking Midfield, Centre-Back', 'MIDFIELD'), - ('DM-DC', 'Defensive Midfield, Centre-Back', 'MIDFIELD'), - ('MC-DC', 'Central Midfield, Centre-Back', 'MIDFIELD'), - ('ML-DC', 'Left Midfield, Centre-Back', 'MIDFIELD'), - ('MR-DC', 'Right Midfield, Centre-Back', 'MIDFIELD'), - ('AM-DL', 'Attacking Midfield, Left-Back', 'MIDFIELD'), - ('DM-DL', 'Defensive Midfield, Left-Back', 'MIDFIELD'), - ('MC-DL', 'Central Midfield, Left-Back', 'MIDFIELD'), - ('ML-DL', 'Left Midfield, Left-Back', 'MIDFIELD'), - ('MR-DL', 'Right Midfield, Left-Back', 'MIDFIELD'), - ('AM-DM', 'Attacking Midfield, Defensive Midfield', 'MIDFIELD'), - ('MC-DM', 'Central Midfield, Defensive Midfield', 'MIDFIELD'), - ('ML-DM', 'Left Midfield, Defensive Midfield', 'MIDFIELD'), - ('MR-DM', 'Right Midfield, Defensive Midfield', 'MIDFIELD'), - ('AM-DR', 'Attacking Midfield, Right-Back', 'MIDFIELD'), - ('DM-DR', 'Defensive Midfield, Right-Back', 'MIDFIELD'), - ('MC-DR', 'Central Midfield, Right-Back', 'MIDFIELD'), - ('ML-DR', 'Left Midfield, Right-Back', 'MIDFIELD'), - ('MR-DR', 'Right Midfield, Right-Back', 'MIDFIELD'), - ('AM-LW', 'Attacking Midfield, Left Winger', 'MIDFIELD'), - ('DM-LW', 'Defensive Midfield, Left Winger', 'MIDFIELD'), - ('MC-LW', 'Central Midfield, Left Winger', 'MIDFIELD'), - ('ML-LW', 'Left Midfield, Left Winger', 'MIDFIELD'), - ('MR-LW', 'Right Midfield, Left Winger', 'MIDFIELD'), - ('AM-MC', 'Attacking Midfield, Central Midfield', 'MIDFIELD'), - ('DM-MC', 'Defensive Midfield, Central Midfield', 'MIDFIELD'), - ('ML-MC', 'Left Midfield, Central Midfield', 'MIDFIELD'), - ('MR-MC', 'Right Midfield, Central Midfield', 'MIDFIELD'), - ('AM-ML', 'Attacking Midfield, Left Midfield', 'MIDFIELD'), - ('DM-ML', 'Defensive Midfield, Left Midfield', 'MIDFIELD'), - ('MC-ML', 'Central Midfield, Left Midfield', 'MIDFIELD'), - ('MR-ML', 'Right Midfield, Left Midfield', 'MIDFIELD'), - ('AM-MR', 'Attacking Midfield, Right Midfield', 'MIDFIELD'), - ('DM-MR', 'Defensive Midfield, Right Midfield', 'MIDFIELD'), - ('MC-MR', 'Central Midfield, Right Midfield', 'MIDFIELD'), - ('ML-MR', 'Left Midfield, Right Midfield', 'MIDFIELD'), - ('AM-RW', 'Attacking Midfield, Right Winger', 'MIDFIELD'), - ('DM-RW', 'Defensive Midfield, Right Winger', 'MIDFIELD'), - ('MC-RW', 'Central Midfield, Right Winger', 'MIDFIELD'), - ('ML-RW', 'Left Midfield, Right Winger', 'MIDFIELD'), - ('MR-RW', 'Right Midfield, Right Winger', 'MIDFIELD'), - ('AM-ST', 'Attacking Midfield, Centre-Forward', 'MIDFIELD'), - ('DM-ST', 'Defensive Midfield, Centre-Forward', 'MIDFIELD'), - ('MC-ST', 'Central Midfield, Centre-Forward', 'MIDFIELD'), - ('ML-ST', 'Left Midfield, Centre-Forward', 'MIDFIELD'), - ('MR-ST', 'Right Midfield, Centre-Forward', 'MIDFIELD'); - "; + (1, 'AM', 'Attacking Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (2, 'DC', 'Centre-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (3, 'DL', 'Left-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (4, 'DM', 'Defensive Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (5, 'DR', 'Right-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (6, 'GK', 'Goalkeeper', 'GOALKEEPER', 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, NULL, NULL), + (7, 'LW', 'Left Winger', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (8, 'MC', 'Central Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (9, 'ML', 'Left Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (10, 'MR', 'Right Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (11, 'RW', 'Right Winger', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (12, 'ST', 'Centre-Forward', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (13, 'SS', 'Second Striker', 'ATTACK', 0.286, 0.183, 0.157, 1.230, 1.634, 0.339, 2.331, 0.849, 0.134, 0.087, 0.134, 1.189, 1.678, 0.405, 1.507, 0.588, NULL, NULL), + (14, 'SW', 'Sweeper', 'DEFENCE', 0.050, 0.027, 0.186, 0.877, 0.624, 0.053, 0.585, 0.306, 0.034, 0.020, 0.182, 0.981, 0.693, 0.034, 0.368, 0.182, NULL, NULL), + (15, 'DC-AM', 'Centre-Back / Attacking Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (16, 'DL-AM', 'Left-Back / Attacking Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (17, 'DM-AM', 'Defensive Midfield / Attacking Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (18, 'DR-AM', 'Right-Back / Attacking Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (19, 'LW-AM', 'Left Winger / Attacking Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (20, 'MC-AM', 'Central Midfield / Attacking Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (21, 'ML-AM', 'Left Midfield / Attacking Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (22, 'MR-AM', 'Right Midfield / Attacking Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (23, 'RW-AM', 'Right Winger / Attacking Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (24, 'ST-AM', 'Centre-Forward / Attacking Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (25, 'AM-DC', 'Attacking Midfield / Centre-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (26, 'DL-DC', 'Left-Back / Centre-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (27, 'DM-DC', 'Defensive Midfield / Centre-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (28, 'DR-DC', 'Right-Back / Centre-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (29, 'LW-DC', 'Left Winger / Centre-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (30, 'MC-DC', 'Central Midfield / Centre-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (31, 'ML-DC', 'Left Midfield / Centre-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (32, 'MR-DC', 'Right Midfield / Centre-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (33, 'RW-DC', 'Right Winger / Centre-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (34, 'ST-DC', 'Centre-Forward / Centre-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (35, 'AM-DL', 'Attacking Midfield / Left-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (36, 'DC-DL', 'Centre-Back / Left-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (37, 'DM-DL', 'Defensive Midfield / Left-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (38, 'DR-DL', 'Right-Back / Left-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (39, 'LW-DL', 'Left Winger / Left-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (40, 'MC-DL', 'Central Midfield / Left-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (41, 'ML-DL', 'Left Midfield / Left-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (42, 'MR-DL', 'Right Midfield / Left-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (43, 'RW-DL', 'Right Winger / Left-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (44, 'ST-DL', 'Centre-Forward / Left-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (45, 'AM-DM', 'Attacking Midfield / Defensive Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (46, 'DC-DM', 'Centre-Back / Defensive Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (47, 'DL-DM', 'Left-Back / Defensive Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (48, 'DR-DM', 'Right-Back / Defensive Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (49, 'LW-DM', 'Left Winger / Defensive Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (50, 'MC-DM', 'Central Midfield / Defensive Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (51, 'ML-DM', 'Left Midfield / Defensive Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (52, 'MR-DM', 'Right Midfield / Defensive Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (53, 'RW-DM', 'Right Winger / Defensive Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (54, 'ST-DM', 'Centre-Forward / Defensive Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (55, 'AM-DR', 'Attacking Midfield / Right-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (56, 'DC-DR', 'Centre-Back / Right-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (57, 'DL-DR', 'Left-Back / Right-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (58, 'DM-DR', 'Defensive Midfield / Right-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (59, 'LW-DR', 'Left Winger / Right-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (60, 'MC-DR', 'Central Midfield / Right-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (61, 'ML-DR', 'Left Midfield / Right-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (62, 'MR-DR', 'Right Midfield / Right-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (63, 'RW-DR', 'Right Winger / Right-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (64, 'ST-DR', 'Centre-Forward / Right-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (65, 'AM-LW', 'Attacking Midfield / Left Winger', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (66, 'DC-LW', 'Centre-Back / Left Winger', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (67, 'DL-LW', 'Left-Back / Left Winger', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (68, 'DM-LW', 'Defensive Midfield / Left Winger', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (69, 'DR-LW', 'Right-Back / Left Winger', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (70, 'MC-LW', 'Central Midfield / Left Winger', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (71, 'ML-LW', 'Left Midfield / Left Winger', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (72, 'MR-LW', 'Right Midfield / Left Winger', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (73, 'RW-LW', 'Right Winger / Left Winger', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (74, 'ST-LW', 'Centre-Forward / Left Winger', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (75, 'AM-MC', 'Attacking Midfield / Central Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (76, 'DC-MC', 'Centre-Back / Central Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (77, 'DL-MC', 'Left-Back / Central Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (78, 'DM-MC', 'Defensive Midfield / Central Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (79, 'DR-MC', 'Right-Back / Central Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (80, 'LW-MC', 'Left Winger / Central Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (81, 'ML-MC', 'Left Midfield / Central Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (82, 'MR-MC', 'Right Midfield / Central Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (83, 'RW-MC', 'Right Winger / Central Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (84, 'ST-MC', 'Centre-Forward / Central Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (85, 'AM-ML', 'Attacking Midfield / Left Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (86, 'DC-ML', 'Centre-Back / Left Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (87, 'DL-ML', 'Left-Back / Left Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (88, 'DM-ML', 'Defensive Midfield / Left Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (89, 'DR-ML', 'Right-Back / Left Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (90, 'LW-ML', 'Left Winger / Left Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (91, 'MC-ML', 'Central Midfield / Left Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (92, 'MR-ML', 'Right Midfield / Left Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (93, 'RW-ML', 'Right Winger / Left Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (94, 'ST-ML', 'Centre-Forward / Left Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (95, 'AM-MR', 'Attacking Midfield / Right Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (96, 'DC-MR', 'Centre-Back / Right Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (97, 'DL-MR', 'Left-Back / Right Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (98, 'DM-MR', 'Defensive Midfield / Right Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (99, 'DR-MR', 'Right-Back / Right Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (100, 'LW-MR', 'Left Winger / Right Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (101, 'MC-MR', 'Central Midfield / Right Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (102, 'ML-MR', 'Left Midfield / Right Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (103, 'RW-MR', 'Right Winger / Right Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (104, 'ST-MR', 'Centre-Forward / Right Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (105, 'AM-RW', 'Attacking Midfield / Right Winger', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (106, 'DC-RW', 'Centre-Back / Right Winger', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (107, 'DL-RW', 'Left-Back / Right Winger', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (108, 'DM-RW', 'Defensive Midfield / Right Winger', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (109, 'DR-RW', 'Right-Back / Right Winger', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (110, 'LW-RW', 'Left Winger / Right Winger', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (111, 'MC-RW', 'Central Midfield / Right Winger', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (112, 'ML-RW', 'Left Midfield / Right Winger', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (113, 'MR-RW', 'Right Midfield / Right Winger', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (114, 'ST-RW', 'Centre-Forward / Right Winger', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL), + (115, 'AM-ST', 'Attacking Midfield / Centre-Forward', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL), + (116, 'DC-ST', 'Centre-Back / Centre-Forward', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL), + (117, 'DL-ST', 'Left-Back / Centre-Forward', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (118, 'DM-ST', 'Defensive Midfield / Centre-Forward', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL), + (119, 'DR-ST', 'Right-Back / Centre-Forward', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL), + (120, 'LW-ST', 'Left Winger / Centre-Forward', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL), + (121, 'MC-ST', 'Central Midfield / Centre-Forward', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL), + (122, 'ML-ST', 'Left Midfield / Centre-Forward', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (123, 'MR-ST', 'Right Midfield / Centre-Forward', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL), + (124, 'RW-ST', 'Right Winger / Centre-Forward', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL); + "; DB::unprepared($sql); } } diff --git a/resources/views/livewire/board-dispatcher.blade.php b/resources/views/livewire/board-dispatcher.blade.php index 93587f3b..178dbdb2 100644 --- a/resources/views/livewire/board-dispatcher.blade.php +++ b/resources/views/livewire/board-dispatcher.blade.php @@ -2,10 +2,30 @@
{{ $this->table }}
-
-
-
{{ $this->form }}
-
{{ $ss_team_name }}
+
+
+
{{ $ss_team_name }}
+
+
{{ $this->form }}
+
+
+ + + +
+ +
+