diff --git a/PadelClub/Data/PlayerRegistration.swift b/PadelClub/Data/PlayerRegistration.swift index ebb617b..714d71e 100644 --- a/PadelClub/Data/PlayerRegistration.swift +++ b/PadelClub/Data/PlayerRegistration.swift @@ -350,12 +350,7 @@ final class PlayerRegistration: ModelObject, Storable { } } - func setComputedRank(in tournament: Tournament) { - if tournament.isAnimation() { - computedRank = rank ?? 0 - return - } - + func setComputedRank(in tournament: Tournament) { let currentRank = rank ?? tournament.unrankValue(for: isMalePlayer()) ?? 90_000 switch tournament.tournamentCategory { case .men: diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index 0df302d..a763ac7 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -1509,7 +1509,8 @@ defer { teams.forEach { team in let players = team.unsortedPlayers() players.forEach { $0.setComputedRank(in: self) } - team.setWeight(from: players, inTournamentCategory: tournamentCategory) + let sortedPlayers = players.sorted(by: \.computedRank, order: .ascending) + team.setWeight(from: sortedPlayers, inTournamentCategory: tournamentCategory) do { try self.tournamentStore.playerRegistrations.addOrUpdate(contentOfs: players) } catch { @@ -1638,7 +1639,7 @@ defer { } func hideWeight() -> Bool { - return hideTeamsWeight || tournamentLevel.hideWeight() + return hideTeamsWeight } func isAnimation() -> Bool { @@ -2664,7 +2665,7 @@ defer { } func shouldWarnOnlineRegistrationUpdates() -> Bool { - onlineTeams().isEmpty == false && hasEnded() == false && hasStarted() == false + enableOnlineRegistration && onlineTeams().isEmpty == false && hasEnded() == false && hasStarted() == false } func refreshTeamList() async { diff --git a/PadelClub/Views/Player/Components/EditablePlayerView.swift b/PadelClub/Views/Player/Components/EditablePlayerView.swift index 6569682..1f5c291 100644 --- a/PadelClub/Views/Player/Components/EditablePlayerView.swift +++ b/PadelClub/Views/Player/Components/EditablePlayerView.swift @@ -97,7 +97,7 @@ struct EditablePlayerView: View { @ViewBuilder func computedPlayerView(_ player: PlayerRegistration) -> some View { VStack(alignment: .leading, spacing: 0.0) { - ImportedPlayerView(player: player) + ImportedPlayerView(player: player, showFemaleInMaleAssimilation: player.tournament()?.tournamentCategory.showFemaleInMaleAssimilation ?? false) // HStack { // Text(player.isImported() ? "importé via beach padel" : "") // Text(player.formattedLicense().isLicenseNumber ? "licence valide" : "non valide") diff --git a/PadelClub/Views/Player/PlayerView.swift b/PadelClub/Views/Player/PlayerView.swift index 755ac6d..db0a81d 100644 --- a/PadelClub/Views/Player/PlayerView.swift +++ b/PadelClub/Views/Player/PlayerView.swift @@ -20,7 +20,7 @@ struct PlayerView: View { } var body: some View { - ImportedPlayerView(player: player) + ImportedPlayerView(player: player, showFemaleInMaleAssimilation: tournament.tournamentCategory.showFemaleInMaleAssimilation) .swipeActions(edge: .trailing, allowsFullSwipe: true) { Button(role: .destructive) { do { diff --git a/PadelClub/Views/Tournament/FileImportView.swift b/PadelClub/Views/Tournament/FileImportView.swift index fbbffa3..caf0004 100644 --- a/PadelClub/Views/Tournament/FileImportView.swift +++ b/PadelClub/Views/Tournament/FileImportView.swift @@ -508,21 +508,7 @@ struct FileImportView: View { private func _validate(tournament: Tournament) async { let filteredTeams = filteredTeams(tournament: tournament) - - let unfound = _getUnfound(tournament: tournament, fromTeams: filteredTeams) - unfound.forEach { team in - if team.isWildCard() == false { - team.resetPositions() - team.walkOut = true - } - } - - do { - try tournament.tournamentStore.teamRegistrations.addOrUpdate(contentOfs: unfound) - } catch { - Logger.error(error) - } - + tournament.importTeams(filteredTeams) validatedTournamentIds.insert(tournament.id) diff --git a/PadelClub/Views/Tournament/Screen/AddTeamView.swift b/PadelClub/Views/Tournament/Screen/AddTeamView.swift index f0dbe16..c18ada5 100644 --- a/PadelClub/Views/Tournament/Screen/AddTeamView.swift +++ b/PadelClub/Views/Tournament/Screen/AddTeamView.swift @@ -81,6 +81,14 @@ struct AddTeamView: View { fetchRequest = FetchRequest(fetchRequest: request, animation: .default) } + var selectionLimit: Int { + if tournament.isAnimation() { + return -1 + } else { + return tournament.significantPlayerCount() - _currentSelectionIds().count + } + } + var body: some View { if let pasteString, pasteString.isEmpty == false, fetchPlayers.isEmpty == false { computedBody @@ -163,7 +171,7 @@ struct AddTeamView: View { } .sheet(isPresented: $presentPlayerSearch) { NavigationStack { - SelectablePlayerListView(allowSelection: 2 - _currentSelectionIds().count, isPresented: true, searchField: searchField, filterOption: _filterOption(), showFemaleInMaleAssimilation: tournament.tournamentCategory.showFemaleInMaleAssimilation) { players in + SelectablePlayerListView(allowSelection: selectionLimit, isPresented: true, searchField: searchField, filterOption: _filterOption(), showFemaleInMaleAssimilation: tournament.tournamentCategory.showFemaleInMaleAssimilation) { players in players.forEach { player in let newPlayer = PlayerRegistration(importedPlayer: player) newPlayer.setComputedRank(in: tournament)