rename player weight into computedRank

multistore
Razmig Sarkissian 2 years ago
parent a61e16123c
commit 4a002de680
  1. 16
      PadelClub/Data/PlayerRegistration.swift
  2. 2
      PadelClub/Data/TeamRegistration.swift
  3. 8
      PadelClub/Data/Tournament.swift
  4. 12
      PadelClub/Utils/FileImportManager.swift
  5. 4
      PadelClub/Views/Cashier/CashierView.swift
  6. 2
      PadelClub/Views/GroupStage/Shared/GroupStageTeamReplacementView.swift
  7. 2
      PadelClub/Views/Player/Components/PlayerSexPickerView.swift
  8. 6
      PadelClub/Views/Player/PlayerDetailView.swift
  9. 2
      PadelClub/Views/Tournament/FileImportView.swift
  10. 2
      PadelClub/Views/Tournament/Screen/Components/UpdateSourceRankDateView.swift
  11. 4
      PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift

@ -31,7 +31,7 @@ class PlayerRegistration: ModelObject, Storable {
var email: String?
var birthdate: String?
var weight: Int = 0
var computedRank: Int = 0
var source: PlayerDataSource?
var hasArrived: Bool = false
@ -169,8 +169,8 @@ class PlayerRegistration: ModelObject, Storable {
func rankLabel(_ displayStyle: DisplayStyle = .wide) -> String {
if let rank, rank > 0 {
if rank != weight {
return weight.formatted() + " (" + rank.formatted() + ")"
if rank != computedRank {
return computedRank.formatted() + " (" + rank.formatted() + ")"
} else {
return rank.formatted()
}
@ -180,7 +180,7 @@ class PlayerRegistration: ModelObject, Storable {
}
func getRank() -> Int {
weight
computedRank
}
@MainActor
@ -238,13 +238,13 @@ class PlayerRegistration: ModelObject, Storable {
}
}
func setWeight(in tournament: Tournament) {
func setComputedRank(in tournament: Tournament) {
let currentRank = rank ?? tournament.unrankValue(for: isMalePlayer()) ?? 100_000
switch tournament.tournamentCategory {
case .men:
weight = isMalePlayer() ? currentRank : currentRank + PlayerRegistration.addon(for: currentRank, manMax: tournament.maleUnrankedValue ?? 0, womanMax: tournament.femaleUnrankedValue ?? 0)
computedRank = isMalePlayer() ? currentRank : currentRank + PlayerRegistration.addon(for: currentRank, manMax: tournament.maleUnrankedValue ?? 0, womanMax: tournament.femaleUnrankedValue ?? 0)
default:
weight = currentRank
computedRank = currentRank
}
}
@ -279,7 +279,7 @@ class PlayerRegistration: ModelObject, Storable {
case _birthdate = "birthdate"
case _phoneNumber = "phoneNumber"
case _email = "email"
case _weight = "weight"
case _computedRank = "computedRank"
case _source = "source"
case _hasArrived = "hasArrived"

@ -268,7 +268,7 @@ class TeamRegistration: ModelObject, Storable {
func setWeight(from players: [PlayerRegistration], inTournamentCategory tournamentCategory: TournamentCategory) {
let significantPlayerCount = significantPlayerCount()
weight = (players.prefix(significantPlayerCount).map { $0.weight } + missingPlayerType(inTournamentCategory: tournamentCategory).map { unrankValue(for: $0 == 1 ? true : false ) }).prefix(significantPlayerCount).reduce(0,+)
weight = (players.prefix(significantPlayerCount).map { $0.computedRank } + missingPlayerType(inTournamentCategory: tournamentCategory).map { unrankValue(for: $0 == 1 ? true : false ) }).prefix(significantPlayerCount).reduce(0,+)
}
func significantPlayerCount() -> Int {

@ -632,11 +632,11 @@ class Tournament : ModelObject, Storable {
}
func selectedPlayers() -> [PlayerRegistration] {
selectedSortedTeams().flatMap { $0.unsortedPlayers() }.sorted(by: \.weight)
selectedSortedTeams().flatMap { $0.unsortedPlayers() }.sorted(by: \.computedRank)
}
func players() -> [PlayerRegistration] {
unsortedTeams().flatMap { $0.unsortedPlayers() }.sorted(by: \.weight)
unsortedTeams().flatMap { $0.unsortedPlayers() }.sorted(by: \.computedRank)
}
func femalePlayers() -> [PlayerRegistration] {
@ -670,7 +670,7 @@ class Tournament : ModelObject, Storable {
}
return players.filter { player in
if player.rank == nil { return false }
if player.weight <= tournamentLevel.minimumPlayerRank(category: tournamentCategory, ageCategory: federalTournamentAge) {
if player.computedRank <= tournamentLevel.minimumPlayerRank(category: tournamentCategory, ageCategory: federalTournamentAge) {
return true
} else {
return false
@ -846,7 +846,7 @@ class Tournament : ModelObject, Storable {
let teams = self.unsortedTeams()
teams.forEach { team in
let players = team.unsortedPlayers()
players.forEach { $0.setWeight(in: self) }
players.forEach { $0.setComputedRank(in: self) }
team.setWeight(from: players, inTournamentCategory: tournamentCategory)
try? DataStore.shared.playerRegistrations.addOrUpdate(contentOfs: players)
}

@ -71,7 +71,7 @@ class FileImportManager {
self.players = Set(players)
self.tournamentCategory = tournamentCategory
self.previousTeam = previousTeam
self.weight = players.map { $0.weight }.reduce(0,+)
self.weight = players.map { $0.computedRank }.reduce(0,+)
self.registrationDate = registrationDate
}
@ -210,9 +210,9 @@ class FileImportManager {
}
let playerOne = PlayerRegistration(federalData: Array(resultOne[0...7]), sex: sexPlayerOne, sexUnknown: sexUnknown)
playerOne.setWeight(in: tournament)
playerOne.setComputedRank(in: tournament)
let playerTwo = PlayerRegistration(federalData: Array(resultTwo[0...7]), sex: sexPlayerTwo, sexUnknown: sexUnknown)
playerTwo.setWeight(in: tournament)
playerTwo.setComputedRank(in: tournament)
let team = TeamHolder(players: [playerOne, playerTwo], tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam([playerOne, playerTwo]))
results.append(team)
}
@ -256,9 +256,9 @@ class FileImportManager {
}
let playerOne = PlayerRegistration(federalData: Array(result[0...7]), sex: sexPlayerOne, sexUnknown: sexUnknown)
playerOne.setWeight(in: tournament)
playerOne.setComputedRank(in: tournament)
let playerTwo = PlayerRegistration(federalData: Array(result[8...]), sex: sexPlayerTwo, sexUnknown: sexUnknown)
playerTwo.setWeight(in: tournament)
playerTwo.setComputedRank(in: tournament)
let team = TeamHolder(players: [playerOne, playerTwo], tournamentCategory: tournamentCategory, previousTeam: tournament.findTeam([playerOne, playerTwo]))
results.append(team)
@ -281,7 +281,7 @@ class FileImportManager {
let found = try? federalContext.fetch(fetchRequest)
let registeredPlayers = found?.map({ importedPlayer in
let player = PlayerRegistration(importedPlayer: importedPlayer)
player.setWeight(in: tournament)
player.setComputedRank(in: tournament)
return player
})
if let registeredPlayers, registeredPlayers.isEmpty == false {

@ -188,7 +188,7 @@ struct CashierView: View {
Text(teamCallDate.localizedDate())
}
Spacer()
Text(player.weight.formatted())
Text(player.computedRank.formatted())
}
} footer: {
if tournaments.count > 1, let tournamentTitle = player.tournament()?.tournamentTitle() {
@ -200,7 +200,7 @@ struct CashierView: View {
@ViewBuilder
private func _byPlayerRank() -> some View {
let players = teams.flatMap({ $0.players() }).sorted(using: .keyPath(\.weight)).filter({ _shouldDisplayPlayer($0) })
let players = teams.flatMap({ $0.players() }).sorted(using: .keyPath(\.computedRank)).filter({ _shouldDisplayPlayer($0) })
_byPlayer(players)
}

@ -21,7 +21,7 @@ struct GroupStageTeamReplacementView: View {
private func _getWeight() -> Int {
guard let selectedPlayer else { return 0 }
return team.weight - selectedPlayer.weight
return team.weight - selectedPlayer.computedRank
}
private func _searchableRange(_ teamRange: TeamRegistration.TeamRange) -> String {

@ -32,7 +32,7 @@ struct PlayerSexPickerView: View {
private func _save() {
do {
player.setWeight(in: tournament)
player.setComputedRank(in: tournament)
try dataStore.playerRegistrations.addOrUpdate(instance: player)
if let team = player.team() {
team.updateWeight(inTournamentCategory: tournament.tournamentCategory)

@ -60,7 +60,7 @@ struct PlayerDetailView: View {
Text("Valeur à rajouter")
}
LabeledContent {
TextField("Rang", value: $player.weight, format: .number)
TextField("Rang", value: $player.computedRank, format: .number)
.keyboardType(.decimalPad)
.multilineTextAlignment(.trailing)
.frame(maxWidth: .infinity)
@ -79,12 +79,12 @@ struct PlayerDetailView: View {
.onChange(of: player.sex) {
_save()
}
.onChange(of: player.weight) {
.onChange(of: player.computedRank) {
player.team()?.updateWeight(inTournamentCategory: tournament.tournamentCategory)
_save()
}
.onChange(of: player.rank) {
player.setWeight(in: tournament)
player.setComputedRank(in: tournament)
player.team()?.updateWeight(inTournamentCategory: tournament.tournamentCategory)
_save()
}

@ -272,7 +272,7 @@ struct FileImportView: View {
Section {
HStack {
VStack(alignment: .leading) {
ForEach(team.players.sorted(by: \.weight)) {
ForEach(team.players.sorted(by: \.computedRank)) {
Text($0.playerLabel())
}
}

@ -40,7 +40,7 @@ struct UpdateSourceRankDateView: View {
try await tournament.updateRank(to: currentRankSourceDate)
try await MainActor.run {
tournament.unsortedPlayers().forEach { player in
player.setWeight(in: tournament)
player.setComputedRank(in: tournament)
}
try dataStore.playerRegistrations.addOrUpdate(contentOfs: tournament.unsortedPlayers())

@ -83,7 +83,7 @@ struct InscriptionManagerView: View {
selectionSearchField = nil
players.forEach { player in
let newPlayer = PlayerRegistration(importedPlayer: player)
newPlayer.setWeight(in: tournament)
newPlayer.setComputedRank(in: tournament)
createdPlayers.insert(newPlayer)
createdPlayerIds.insert(newPlayer.id)
}
@ -529,7 +529,7 @@ struct InscriptionManagerView: View {
fetchPlayers.first(where: { id == $0.license })
}.forEach { player in
let player = PlayerRegistration(importedPlayer: player)
player.setWeight(in: tournament)
player.setComputedRank(in: tournament)
currentSelection.insert(player)
}

Loading…
Cancel
Save