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; } }