diff --git a/PadelClub/Data/PlayerRegistration.swift b/PadelClub/Data/PlayerRegistration.swift index fbb07ca..78f46d2 100644 --- a/PadelClub/Data/PlayerRegistration.swift +++ b/PadelClub/Data/PlayerRegistration.swift @@ -73,13 +73,21 @@ class PlayerRegistration: ModelObject, Storable { self.source = .frenchFederation } - internal init(federalData: [String], sex: Int, sexUnknown: Bool) { - lastName = federalData[0].trimmed.uppercased() - firstName = federalData[1].trimmed.capitalized + internal init?(federalData: [String], sex: Int, sexUnknown: Bool) { + let _lastName = federalData[0].trimmed.uppercased() + let _firstName = federalData[1].trimmed.capitalized + if _lastName.isEmpty && _firstName.isEmpty { return nil } + lastName = _lastName + firstName = _firstName birthdate = federalData[2] licenceId = federalData[3] clubName = federalData[4] - rank = Int(federalData[5]) + let stringRank = federalData[5] + if stringRank.isEmpty { + rank = nil + } else { + rank = Int(stringRank) + } let _email = federalData[6] if _email.isEmpty == false { self.email = _email diff --git a/PadelClub/Data/TeamRegistration.swift b/PadelClub/Data/TeamRegistration.swift index d6df314..a57cd16 100644 --- a/PadelClub/Data/TeamRegistration.swift +++ b/PadelClub/Data/TeamRegistration.swift @@ -201,8 +201,12 @@ class TeamRegistration: ModelObject, Storable { } func includes(players: [PlayerRegistration]) -> Bool { + let unsortedPlayers = unsortedPlayers() + guard players.count == unsortedPlayers.count else { return false } return players.allSatisfy { player in - includes(player: player) + unsortedPlayers.anySatisfy { _player in + _player.isSameAs(player) + } } } diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index 648ca9b..07b9c72 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -476,7 +476,7 @@ class Tournament : ModelObject, Storable { } func courtUsed() -> [Int] { -#if DEBUG_TIME //DEBUGING TIME +#if DEBUG //DEBUGING TIME let start = Date() defer { let duration = Duration.milliseconds(Date().timeIntervalSince(start) * 1_000) @@ -484,7 +484,7 @@ defer { } #endif - let runningMatches : [Match] = DataStore.shared.matches.filter({ $0.isRunning() }).filter({ $0.tournamentId() == self.id }) + let runningMatches : [Match] = DataStore.shared.matches.filter({ $0.tournamentId() == self.id && $0.isRunning() }) return Set(runningMatches.compactMap { $0.courtIndex }).sorted() } diff --git a/PadelClub/Utils/FileImportManager.swift b/PadelClub/Utils/FileImportManager.swift index b27ee9c..9686e04 100644 --- a/PadelClub/Utils/FileImportManager.swift +++ b/PadelClub/Utils/FileImportManager.swift @@ -268,13 +268,17 @@ class FileImportManager { case .mix: return 1 } } - if tournamentCategory == tournament.tournamentCategory { + if tournamentCategory == tournament.tournamentCategory { let playerOne = PlayerRegistration(federalData: Array(resultOne[0...7]), sex: sexPlayerOne, sexUnknown: sexUnknown) - playerOne.setComputedRank(in: tournament) + playerOne?.setComputedRank(in: tournament) let playerTwo = PlayerRegistration(federalData: Array(resultTwo[0...7]), sex: sexPlayerTwo, sexUnknown: sexUnknown) - playerTwo.setComputedRank(in: tournament) - let team = TeamHolder(players: [playerOne, playerTwo], tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam([playerOne, playerTwo]), tournament: tournament) - results.append(team) + playerTwo?.setComputedRank(in: tournament) + + let players = [playerOne, playerTwo].compactMap({ $0 }) + if players.isEmpty == false { + let team = TeamHolder(players: players, tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam(players), tournament: tournament) + results.append(team) + } } } } @@ -320,12 +324,15 @@ class FileImportManager { } let playerOne = PlayerRegistration(federalData: Array(result[0...7]), sex: sexPlayerOne, sexUnknown: sexUnknown) - playerOne.setComputedRank(in: tournament) + playerOne?.setComputedRank(in: tournament) let playerTwo = PlayerRegistration(federalData: Array(result[8...]), sex: sexPlayerTwo, sexUnknown: sexUnknown) - playerTwo.setComputedRank(in: tournament) + playerTwo?.setComputedRank(in: tournament) - let team = TeamHolder(players: [playerOne, playerTwo], tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam([playerOne, playerTwo]), tournament: tournament) - results.append(team) + let players = [playerOne, playerTwo].compactMap({ $0 }) + if players.isEmpty == false { + let team = TeamHolder(players: players, tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam(players), tournament: tournament) + results.append(team) + } } } }