Merge branch 'main' into sync3

sync3
Laurent 5 months ago
commit 8ac1d789fd
  1. 36
      PadelClubData/Data/Event.swift
  2. 8
      PadelClubData/Data/GroupStage.swift
  3. 6
      PadelClubData/Data/Match.swift
  4. 19
      PadelClubData/Data/PlayerRegistration.swift
  5. 4
      PadelClubData/Data/Round.swift
  6. 2
      PadelClubData/Data/TeamRegistration.swift
  7. 6
      PadelClubData/Data/Tournament.swift

@ -148,6 +148,42 @@ final public class Event: BaseEvent {
return "Du \(startDay) \(startMonthYear) au \(endDay) \(endMonthYear)" return "Du \(startDay) \(startMonthYear) au \(endDay) \(endMonthYear)"
} }
} }
public func tournamentInformation() -> String? {
confirmedTournaments().first?.information
}
public func eventLinksPasteData() -> String {
let tournaments = self.confirmedTournaments()
var link = [String?]()
link.append(eventTitle())
link.append(tournamentInformation())
if let url = shareURL() {
var tournamentLink = [String]()
tournamentLink.append("Lien de l'événement")
tournamentLink.append(url.absoluteString)
let eventLink = tournamentLink.joined(separator: "\n")
link.append(eventLink)
}
link.append("Retrouvez toutes les infos en suivant le\(tournaments.count.pluralSuffix) lien\(tournaments.count.pluralSuffix) ci-dessous :")
link.append(tournaments.compactMap({ tournament in
if let url = tournament.shareURL(.info) {
var tournamentLink = [String]()
tournamentLink.append(tournament.tournamentTitle(.title))
tournamentLink.append(url.absoluteString)
return tournamentLink.joined(separator: "\n")
} else {
return nil
}
}).joined(separator: "\n\n"))
return link.compactMap({ $0 }).joined(separator: "\n\n")
}
func insertOnServer() throws { func insertOnServer() throws {
DataStore.shared.events.writeChangeAndInsertOnServer(instance: self) DataStore.shared.events.writeChangeAndInsertOnServer(instance: self)

@ -29,9 +29,7 @@ final public class GroupStage: BaseGroupStage, SideStorable {
// MARK: - DidSet // MARK: - DidSet
public override func didSetStartDate() { public override func didSetStartDate() {
if self.tournamentValue()?.hasStarted() == false { plannedStartDate = startDate
plannedStartDate = startDate
}
} }
// MARK: - Computed dependencies // MARK: - Computed dependencies
@ -539,6 +537,10 @@ final public class GroupStage: BaseGroupStage, SideStorable {
public func clearScoreCache() { public func clearScoreCache() {
scoreCache.removeAll() scoreCache.removeAll()
} }
var computedStartDateForSorting: Date {
startDate ?? computedStartDate() ?? .distantFuture
}
// public func teams(_ sortedByScore: Bool = false, scores: [TeamGroupStageScore]? = nil) -> [TeamRegistration] { // public func teams(_ sortedByScore: Bool = false, scores: [TeamGroupStageScore]? = nil) -> [TeamRegistration] {
// if sortedByScore { // if sortedByScore {

@ -47,11 +47,7 @@ final public class Match: BaseMatch, SideStorable {
if hasStarted() { if hasStarted() {
return return
} }
if self.roundValue()?.tournamentObject()?.hasStarted() == false { plannedStartDate = startDate
plannedStartDate = startDate
} else if self.groupStageValue()?.tournamentObject()?.hasStarted() == false {
plannedStartDate = startDate
}
} }
// MARK: - // MARK: -

@ -89,8 +89,14 @@ final public class PlayerRegistration: BasePlayerRegistration, SideStorable {
} }
public func isSameAs(_ player: PlayerRegistration) -> Bool { public func isSameAs(_ player: PlayerRegistration) -> Bool {
firstName.trimmedMultiline.canonicalVersion.localizedCaseInsensitiveCompare(player.firstName.trimmedMultiline.canonicalVersion) == .orderedSame && if let licenceId, let playerLicenceId = player.licenceId {
lastName.trimmedMultiline.canonicalVersion.localizedCaseInsensitiveCompare(player.lastName.trimmedMultiline.canonicalVersion) == .orderedSame let result = licenceId.strippedLicense == playerLicenceId.strippedLicense
if result {
return result
}
}
return firstName.trimmedMultiline.canonicalVersion.localizedCaseInsensitiveCompare(player.firstName.trimmedMultiline.canonicalVersion) == .orderedSame &&
lastName.trimmedMultiline.canonicalVersion.localizedCaseInsensitiveCompare(player.lastName.trimmedMultiline.canonicalVersion) == .orderedSame
} }
public func tournament() -> Tournament? { public func tournament() -> Tournament? {
@ -158,11 +164,14 @@ final public class PlayerRegistration: BasePlayerRegistration, SideStorable {
} }
} }
public func setComputedRank(in tournament: Tournament) { public func setComputedRank(in tournament: Tournament) {
let currentRank = rank ?? tournament.unrankValue(for: isMalePlayer()) ?? 90_000 let maleUnranked = tournament.unrankValue(for: isMalePlayer()) ?? 90_415
let femaleUnranked = tournament.unrankValue(for: false) ?? 0
let currentRank = rank ?? maleUnranked
switch tournament.tournamentCategory { switch tournament.tournamentCategory {
case .men: case .men:
computedRank = isMalePlayer() ? currentRank : currentRank + PlayerRegistration.addon(for: currentRank, manMax: tournament.maleUnrankedValue ?? 0, womanMax: tournament.femaleUnrankedValue ?? 0) let addon = PlayerRegistration.addon(for: currentRank, manMax: maleUnranked, womanMax: femaleUnranked)
computedRank = isMalePlayer() ? currentRank : currentRank + addon
default: default:
computedRank = currentRank computedRank = currentRank
} }

@ -24,9 +24,7 @@ final public class Round: BaseRound, SideStorable {
// MARK: - DidSet // MARK: - DidSet
public override func didSetStartDate() { public override func didSetStartDate() {
if self.tournamentValue()?.hasStarted() == false { plannedStartDate = startDate
plannedStartDate = startDate
}
} }
// MARK: - Computed dependencies // MARK: - Computed dependencies

@ -536,7 +536,7 @@ final public class TeamRegistration: BaseTeamRegistration, SideStorable {
} }
public func unrankValue(for malePlayer: Bool) -> Int { public func unrankValue(for malePlayer: Bool) -> Int {
return tournamentObject()?.unrankValue(for: malePlayer) ?? 90_000 return tournamentObject()?.unrankValue(for: malePlayer) ?? 90_415
} }
public func groupStageObject() -> GroupStage? { public func groupStageObject() -> GroupStage? {

@ -632,6 +632,9 @@ defer {
return waitingListTeams(in: teams, includingWalkOuts: false) return waitingListTeams(in: teams, includingWalkOuts: false)
} }
public func allTeamsWithoutWalkOut() -> [TeamRegistration] {
return unsortedTeams().filter({ !$0.walkOut })
}
public func selectedSortedTeams() -> [TeamRegistration] { public func selectedSortedTeams() -> [TeamRegistration] {
#if _DEBUG_TIME //DEBUGING TIME #if _DEBUG_TIME //DEBUGING TIME
@ -2325,6 +2328,9 @@ defer {
return matchCountPerDay return matchCountPerDay
} }
public func groupStageStartDate() -> Date? {
groupStages().sorted(by: \.computedStartDateForSorting).first?.startDate
}
// MARK: - // MARK: -

Loading…
Cancel
Save