|
|
|
|
@ -83,6 +83,7 @@ class FileImportManager { |
|
|
|
|
case frenchFederation |
|
|
|
|
case padelClub |
|
|
|
|
case custom |
|
|
|
|
case customAutoSearch |
|
|
|
|
|
|
|
|
|
var localizedLabel: String { |
|
|
|
|
switch self { |
|
|
|
|
@ -92,6 +93,8 @@ class FileImportManager { |
|
|
|
|
return "FFT" |
|
|
|
|
case .custom: |
|
|
|
|
return "Personnalisé" |
|
|
|
|
case .customAutoSearch: |
|
|
|
|
return "Personnalisé (avec recherche)" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -161,7 +164,9 @@ class FileImportManager { |
|
|
|
|
case .padelClub: |
|
|
|
|
return await _getPadelClubTeams(from: fileContent, tournament: tournament) |
|
|
|
|
case .custom: |
|
|
|
|
return await _getPadelBusinessLeagueTeams(from: fileContent, tournament: tournament) |
|
|
|
|
return await _getPadelBusinessLeagueTeams(from: fileContent, autoSearch: false, tournament: tournament) |
|
|
|
|
case .customAutoSearch: |
|
|
|
|
return await _getPadelBusinessLeagueTeams(from: fileContent, autoSearch: true, tournament: tournament) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -400,13 +405,16 @@ class FileImportManager { |
|
|
|
|
return results |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private func _getPadelBusinessLeagueTeams(from fileContent: String, tournament: Tournament) async -> [TeamHolder] { |
|
|
|
|
private func _getPadelBusinessLeagueTeams(from fileContent: String, autoSearch: Bool, tournament: Tournament) async -> [TeamHolder] { |
|
|
|
|
let lines = fileContent.replacingOccurrences(of: "\"", with: "").components(separatedBy: "\n") |
|
|
|
|
guard let firstLine = lines.first else { return [] } |
|
|
|
|
var separator = "," |
|
|
|
|
if firstLine.contains(";") { |
|
|
|
|
separator = ";" |
|
|
|
|
} |
|
|
|
|
let fetchRequest = ImportedPlayer.fetchRequest() |
|
|
|
|
let federalContext = PersistenceController.shared.localContainer.viewContext |
|
|
|
|
|
|
|
|
|
let results: [TeamHolder] = lines.chunked(into: 2).map { team in |
|
|
|
|
var teamName: String? = nil |
|
|
|
|
let players = team.map { player in |
|
|
|
|
@ -422,8 +430,20 @@ class FileImportManager { |
|
|
|
|
let rank : Int? = data[safe: 6]?.trimmed.toInt() |
|
|
|
|
let licenceId : String? = data[safe: 7]?.trimmed |
|
|
|
|
let club : String? = data[safe: 8]?.trimmed |
|
|
|
|
let player = PlayerRegistration(firstName: firstName, lastName: lastName, licenceId: licenceId, rank: rank, sex: sex, clubName: club, phoneNumber: phoneNumber, email: email) |
|
|
|
|
return player |
|
|
|
|
let predicate = NSPredicate(format: "firstName like[cd] %@ && lastName like[cd] %@", firstName, lastName) |
|
|
|
|
fetchRequest.predicate = predicate |
|
|
|
|
let found = try? federalContext.fetch(fetchRequest).first |
|
|
|
|
if let found, autoSearch { |
|
|
|
|
let player = PlayerRegistration(importedPlayer: found) |
|
|
|
|
player.setComputedRank(in: tournament) |
|
|
|
|
return player |
|
|
|
|
} else { |
|
|
|
|
let player = PlayerRegistration(firstName: firstName, lastName: lastName, licenceId: licenceId, rank: rank, sex: sex, clubName: club, phoneNumber: phoneNumber, email: email) |
|
|
|
|
if rank == nil, autoSearch { |
|
|
|
|
player.setComputedRank(in: tournament) |
|
|
|
|
} |
|
|
|
|
return player |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return TeamHolder(players: players, tournamentCategory: .men, tournamentAgeCategory: .senior, previousTeam: nil, name: teamName, tournament: tournament) |
|
|
|
|
|