Files
nuhodds_fi4/app/Filament/Imports/PlayerImporter.php
T
2026-03-23 06:58:36 +01:00

61 lines
1.7 KiB
PHP

<?php
namespace App\Filament\Imports;
use App\Models\Player;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Filament\Actions\Imports\Models\Import;
use Illuminate\Support\Number;
class PlayerImporter extends Importer
{
protected static ?string $model = Player::class;
public static function getColumns(): array
{
return [
ImportColumn::make('id')
->castStateUsing(function (string $state): ?int {
if (blank($state)) {
return null;
}
return (int) $state;
})
->requiredMapping()
->numeric(),
ImportColumn::make('name')
->castStateUsing(function (string $state): ?string {
if (blank($state)) {
return null;
}
$state = preg_replace('@\([^\)]*\)$@', '', $state);
return trim($state);
})
->requiredMapping()
->rules(['required', 'max:255']),
];
}
public function resolveRecord(): Player
{
return Player::firstOrNew([
'id' => (int) $this->data['id'],
]);
}
public static function getCompletedNotificationBody(Import $import): string
{
$body = 'Your player import has completed and '.Number::format($import->successful_rows).' '.str('row')->plural($import->successful_rows).' imported.';
if ($failedRowsCount = $import->getFailedRowsCount()) {
$body .= ' '.Number::format($failedRowsCount).' '.str('row')->plural($failedRowsCount).' failed to import.';
}
return $body;
}
}