From 9b804375549f59746fdbc1fc7900208cd0a89f0f Mon Sep 17 00:00:00 2001 From: Raz Date: Wed, 15 Jan 2025 14:51:00 +0100 Subject: [PATCH] add u18 management --- PadelClub/Data/PlayerRegistration.swift | 13 +++++++----- PadelClub/Data/Tournament.swift | 8 ++++++- PadelClub/Utils/FileImportManager.swift | 2 +- PadelClub/Utils/PadelRule.swift | 21 +++++++++++++++++++ .../Navigation/Umpire/PadelClubView.swift | 2 +- 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/PadelClub/Data/PlayerRegistration.swift b/PadelClub/Data/PlayerRegistration.swift index 80e1822..7410b49 100644 --- a/PadelClub/Data/PlayerRegistration.swift +++ b/PadelClub/Data/PlayerRegistration.swift @@ -234,11 +234,14 @@ final class PlayerRegistration: ModelObject, Storable { if isUnranked() && source == nil { alerts.append(.unranked(self)) } else if source != .frenchFederationVerified && source != .frenchFederationEQVerified { - if tournament.tournamentCategory == .men && isMalePlayer() == false { - alerts.append(.playerSexInvalid(self)) - } - if tournament.tournamentCategory == .women && isMalePlayer() { - alerts.append(.playerSexInvalid(self)) + + if tournament.federalTournamentAge == .senior { + if tournament.tournamentCategory == .men && isMalePlayer() == false { + alerts.append(.playerSexInvalid(self)) + } + if tournament.tournamentCategory == .women && isMalePlayer() { + alerts.append(.playerSexInvalid(self)) + } } if let computedAge, tournament.federalTournamentAge.isAgeValid(age: computedAge) == false { alerts.append(.playerAgeInvalid(self)) diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index 87f1855..203b6fc 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -1620,7 +1620,13 @@ defer { } } - + var championshipImportKey: String { + if federalAgeCategory == .senior { + return tournamentCategory.importingRawValue + } else { + return federalAgeCategory.exportingRawValue + } + } func updateWeights() { let teams = self.unsortedTeams() teams.forEach { team in diff --git a/PadelClub/Utils/FileImportManager.swift b/PadelClub/Utils/FileImportManager.swift index 8489135..77df83d 100644 --- a/PadelClub/Utils/FileImportManager.swift +++ b/PadelClub/Utils/FileImportManager.swift @@ -444,7 +444,7 @@ class FileImportManager { case .byCoupleOfLines: chunks = lines.chunked(into: 2) case .byColumn: - chunks = lines.extractPlayers(filterKey: tournament.tournamentCategory.importingRawValue.capitalized, separator: separator) + chunks = lines.extractPlayers(filterKey: tournament.championshipImportKey.capitalized, separator: separator) } let results = chunks.map { teamSource in diff --git a/PadelClub/Utils/PadelRule.swift b/PadelClub/Utils/PadelRule.swift index e69e5ee..7cbbf4d 100644 --- a/PadelClub/Utils/PadelRule.swift +++ b/PadelClub/Utils/PadelRule.swift @@ -194,6 +194,27 @@ enum FederalTournamentAge: Int, Hashable, Codable, CaseIterable, Identifiable { } } + var exportingRawValue: String { + switch self { + case .unlisted: + return "Animation" + case .a11_12: + return "U2 ans" + case .a13_14: + return "U14 ans" + case .a15_16: + return "U16 ans" + case .a17_18: + return "U18 ans" + case .senior: + return "Senior" + case .a45: + return "45 ans" + case .a55: + return "55 ans" + } + } + var importingRawValue: String { switch self { case .unlisted: diff --git a/PadelClub/Views/Navigation/Umpire/PadelClubView.swift b/PadelClub/Views/Navigation/Umpire/PadelClubView.swift index 0ebc150..11256a0 100644 --- a/PadelClub/Views/Navigation/Umpire/PadelClubView.swift +++ b/PadelClub/Views/Navigation/Umpire/PadelClubView.swift @@ -269,7 +269,7 @@ func fetchPlayerData(for licenseID: String) async throws -> [Player]? { request.setValue("XMLHttpRequest", forHTTPHeaderField: "X-Requested-With") // Add cookies if needed (example cookie header value shown, replace with valid cookies) - request.setValue("JSESSIONID=78744C195D45C9011A20B12D166CEE9E; AWSALB=3k/WWoSO6aLh6COUzTBBBVhCTrIoJaMiuy+BUploqwzlHhjF/zq3Ms8TuRIwyLN7EgF++u/fndF5F20g196hF8xqMA7757m6dicn+MIRSRP2Q3d2qWEqRrbe0MgB; AWSALBCORS=3k/WWoSO6aLh6COUzTBBBVhCTrIoJaMiuy+BUploqwzlHhjF/zq3Ms8TuRIwyLN7EgF++u/fndF5F20g196hF8xqMA7757m6dicn+MIRSRP2Q3d2qWEqRrbe0MgB; datadome=TqnBq0og_q~eDOM31m8gZacN9zNMusX6vLBtbnBySaCw8jbr6uEW89tFkfK2llcUH~zdUrN71ic7C5QgmvUkdYplKsxL6SKwV~1s2yrdlVgnjU5pOkzVK64CU0cHJzV6; SSESS7ba44afc36c80c3faa2b8fa87e7742c5=Wfc_Bx21iDLRWgzfE6duKBHsSo7FvYqlqz7J_JmIgXc; tc_cj_v2=%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMMORPMMMQNNZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMMQMPMPMKOPZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMPLNJNKJQQJZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMPLNJNLQOJKZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMPQNSPJNLSJZZZ%5D; tc_cj_v2_cmp=; tc_cj_v2_med=; _pcid=%7B%22browserId%22%3A%22m42mi4kbtfuyj367%22%2C%22_t%22%3A%22mjr1fm32%7Cm42mi4r2%22%7D; _pctx=%7Bu%7DN4IgrgzgpgThIC4B2YA2qA05owMoBcBDfSREQpAeyRCwgEt8oBJAE0RXSwH18yBbAFYwAjADN%2BAZgCsAH34AWAEz96CmNJABfIA; _pprv=eyJjb25zZW50Ijp7IjAiOnsibW9kZSI6ImVzc2VudGlhbCJ9LCI3Ijp7Im1vZGUiOiJvcHQtaW4ifX0sInB1cnBvc2VzIjpudWxsLCJfdCI6Im1qcjFmbHdofG00Mm1pNGtoIn0%3D; xtan=-; xtant=1; TCID=124122155494907703483; TCPID=124115115191501043230; xtvrn=$548419$; visid_incap_2712217=PSfJngzoSuiowsuXXhvOu5K+7mUAAAAAQUIPAAAAAAAleL9ldvN/FC1VykkU9ret; SessionStatId=10.91.140.42.1662124965429001", forHTTPHeaderField: "Cookie") + request.setValue("JSESSIONID=D4F6672C85C69F2221A34DA7573E6DB2; AWSALB=r+eQo2F3BgjLCg2GN+hICmxbd2iUrF9Q6Eq7ihPvtv7Hjpj7PDfvXIl2s6Ny++tjlbZRE4B48u8NiV+LfmYuuDCiCi5M3HkYn9a9/SUBK7TbH1UUyGmH+3Wsr67R; AWSALBCORS=r+eQo2F3BgjLCg2GN+hICmxbd2iUrF9Q6Eq7ihPvtv7Hjpj7PDfvXIl2s6Ny++tjlbZRE4B48u8NiV+LfmYuuDCiCi5M3HkYn9a9/SUBK7TbH1UUyGmH+3Wsr67R; datadome=QNA97FsdNhy8W9ry4jSSpxMF_HlDz56VkztCkM2u3GIropzVSIljKI9jT_Nve4g8OgtCT_MTxZRi8Xpwe3xJ6d5Lygt7S7Eos8dQqddCeWYaeJDgTreRIDrNYfIoZMwI; xtan=-; xtant=1; tc_cj_v2=%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMMORPMMMQNNZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMMQMPMPMKOPZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMPLNJNKJQQJZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMPLNJNLQOJKZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMPRQLQPMPLRZZZ%5D; tc_cj_v2_cmp=; tc_cj_v2_med=; SSESS7ba44afc36c80c3faa2b8fa87e7742c5=Wfc_Bx21iDLRWgzfE6duKBHsSo7FvYqlqz7J_JmIgXc; _pcid=%7B%22browserId%22%3A%22m42mi4kbtfuyj367%22%2C%22_t%22%3A%22mjr1fm32%7Cm42mi4r2%22%7D; _pctx=%7Bu%7DN4IgrgzgpgThIC4B2YA2qA05owMoBcBDfSREQpAeyRCwgEt8oBJAE0RXSwH18yBbAFYwAjADN%2BAZgCsAH34AWAEz96CmNJABfIA; _pprv=eyJjb25zZW50Ijp7IjAiOnsibW9kZSI6ImVzc2VudGlhbCJ9LCI3Ijp7Im1vZGUiOiJvcHQtaW4ifX0sInB1cnBvc2VzIjpudWxsLCJfdCI6Im1qcjFmbHdofG00Mm1pNGtoIn0%3D; TCID=124122155494907703483; TCPID=124115115191501043230; xtvrn=$548419$; visid_incap_2712217=PSfJngzoSuiowsuXXhvOu5K+7mUAAAAAQUIPAAAAAAAleL9ldvN/FC1VykkU9ret; SessionStatId=10.91.140.42.1662124965429001", forHTTPHeaderField: "Cookie") let (data, _) = try await URLSession.shared.data(for: request) let decoder = JSONDecoder()