Files
nuhodds_fi4/app/Filament/Imports/Helper/ImportPlayer.php
T
2026-09-11 10:49:49 +02:00

123 lines
3.5 KiB
PHP

<?php
namespace App\Filament\Imports\Helper;
use App\Models\StatistikoPlayer;
use App\Traits\UpdateHelper;
use Illuminate\Support\LazyCollection;
use Spatie\SimpleExcel\SimpleExcelReader;
class ImportPlayer
{
use UpdateHelper;
public static function run(string $filePath): void
{
$fieldnames = [
'sport_id',
'match_id',
'ss_player_id',
'activeteam_id',
'playersubstitute_id',
'goals',
'assists',
'own_goals',
'shots_on_target',
'shots_off_target',
'shots_blocked',
'fouls',
'was_fouled',
'offsides',
'possessions_lost',
'total_tackles',
'touches',
'total_cross',
'cross_done',
'total_dribbles',
'dribbles_won',
'total_ground_duels',
'total_ground_duels_won',
'total_aerial_duels',
'total_duels_aerial_won',
'total_pass',
'pass',
'total_long_balls',
'long_balls',
'blocked_shots',
'clearances',
'dribbled_past',
'hit_woodwork',
'interceptions',
'key_pass',
'last_man_tackle',
'dispossessed',
'clearance_off_line',
'bcc',
'bcm',
'errors_lead_to_a_goal',
'errors_lead_to_a_shot',
'penalty_committed',
'penalty_miss',
'penalty_save',
'penalty_won',
'saves',
'saves_from_in_box',
'total_runs_out',
'runs_out',
'punches',
'good_high_claim',
'minutes_played',
'lineup',
'minute_event_during_the_match',
'type_event_during_the_match',
'description_event_during_the_match',
'subtype_event_during_the_match',
'card_yellow',
'card_yellowred',
'card_red',
'ingamepenalty_missed',
'penaltyshoutout_scored',
'penaltyshoutout_missed',
'player_position',
'playerrating_value',
'tm_player_id',
];
SimpleExcelReader::create(storage_path('app/public/'.$filePath))
->getRows()
->chunk(1000)
->each(function (LazyCollection $chunk) use ($fieldnames) {
foreach ($chunk as $row) {
$row = array_values($row);
$match_id = 0;
$ss_player_id = 0;
$update_array = [];
foreach ($fieldnames as $key => $name) {
if ($key == 1) {
$match_id = (int) $row[$key];
} elseif ($key == 2) {
$ss_player_id = (int) $row[$key];
} else {
$update_array[$name] = $row[$key];
}
}
StatistikoPlayer::updateOrCreate(
[
'match_id' => $match_id,
'ss_player_id' => $ss_player_id,
],
$update_array
);
}
});
/**update statistic player tabel */
UpdateHelper::updatePlayers(1000000);
}
}