From 28a05362485051e6cfae2308562ac76d4b697f4f Mon Sep 17 00:00:00 2001 From: Raz Date: Mon, 23 Dec 2024 16:48:33 +0100 Subject: [PATCH] fix progressview --- PadelClub/Utils/FileImportManager.swift | 41 +++++++++++++------ .../Navigation/Umpire/PadelClubView.swift | 2 +- .../Screen/InscriptionManagerView.swift | 23 +++++++---- 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/PadelClub/Utils/FileImportManager.swift b/PadelClub/Utils/FileImportManager.swift index 3b5712e..debd398 100644 --- a/PadelClub/Utils/FileImportManager.swift +++ b/PadelClub/Utils/FileImportManager.swift @@ -476,19 +476,35 @@ class FileImportManager { let verified : String? = data[safe: 10] let isVerified = verified == "ok" if chunkMode == .byColumn { - let predicate = NSPredicate(format: "license == %@", licenceId!.strippedLicense!) - fetchRequest.predicate = predicate - let found = try? federalContext.fetch(fetchRequest).first - if let found { - let player = PlayerRegistration(importedPlayer: found) - player.setComputedRank(in: tournament) - player.sourceName = lastName - player.isNveq = status == "NVEQ" - player.clubCode = found.clubCode - if isVerified { - player.source = .frenchFederationVerified + + if let licenceId = licenceId?.strippedLicense { + let predicate = NSPredicate(format: "license == %@", licenceId) + fetchRequest.predicate = predicate + let found = try? federalContext.fetch(fetchRequest).first + if let found { + let player = PlayerRegistration(importedPlayer: found) + player.setComputedRank(in: tournament) + player.sourceName = lastName + player.isNveq = status == "NVEQ" + player.clubCode = found.clubCode + if isVerified { + player.source = .frenchFederationVerified + } + return player + } else { + let player = PlayerRegistration(firstName: firstName, lastName: lastName, licenceId: licenceId, rank: rank, sex: sex, clubName: club, phoneNumber: phoneNumber, email: email) + player.sourceName = lastName + player.isNveq = status == "NVEQ" + if isVerified { + player.source = .frenchFederationVerified + } + if rank == nil { + player.setComputedRank(in: tournament) + } else { + player.computedRank = rank ?? 0 + } + return player } - return player } else { let player = PlayerRegistration(firstName: firstName, lastName: lastName, licenceId: licenceId, rank: rank, sex: sex, clubName: club, phoneNumber: phoneNumber, email: email) player.sourceName = lastName @@ -503,7 +519,6 @@ class FileImportManager { } return player } - } else { let predicate = NSPredicate(format: "firstName like[cd] %@ && lastName like[cd] %@", firstName, lastName) fetchRequest.predicate = predicate diff --git a/PadelClub/Views/Navigation/Umpire/PadelClubView.swift b/PadelClub/Views/Navigation/Umpire/PadelClubView.swift index 8b9d3fe..dde5fd3 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=5CFF7A6F1230AC61667713BC28678544; AWSALB=d/xUzKCfM7GECEn/bcWJCxohx5dtvae5StpaltCHMlHgLKZIINeHHkh5bdT3Gtf1mSZRofvq5ASKmNxf4RpYSOKL9HZDvk53p+UPvCMqEb+p2RkpFjXbT43126fW; AWSALBCORS=d/xUzKCfM7GECEn/bcWJCxohx5dtvae5StpaltCHMlHgLKZIINeHHkh5bdT3Gtf1mSZRofvq5ASKmNxf4RpYSOKL9HZDvk53p+UPvCMqEb+p2RkpFjXbT43126fW; datadome=0~lpnQzmLCZf10rUJM5M1JqeeBye532qFnJrepPMxCtyZEbNv4k308zHOK1aDQE4QrGWbvqDKRZlnanIg8ha99vQcN5Dd7WEMZSsi48G_wYHFqCGcncSgj614Wsb6Iq0; incap_ses_1516_2712217=K1jaVik65R9vNeZfJuoJFcWxYWcAAAAAFRIA2Xyh5etXOwxALj4oxg==; tc_cj_v2=%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMMORPMMMQNNZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMMQMPMPMKOPZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMNNOOQOJPKJZZZ%5D; tc_cj_v2_cmp=; tc_cj_v2_med=; TCSESSION=12412217413110293677085; incap_ses_2223_2712217=m29uCrVnOVs2aRrB967ZHrCpYWcAAAAA/n/Nxses/KF9jVkBaC+b1Q==; nlbi_2712217=8Fq+T/G90h+rYfntb9lUTgAAAACEOhpdLiUx8E3p9MXJo6vA; xtan=-; xtant=1; tCdebugLib=1; _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") + request.setValue("JSESSIONID=DB3022D6D4C26667F90F974DEF0839D9; AWSALB=LEi0K3Uo1nILtAPwiQlDKHLVbGLlB6i53kPkmiqt3F5ZjsJ9GmJ+HIF68KASM0cOkvZy1xVBlBvPDXV5b8M/v1agy5zM8FQTDzU7RDSoAjWa8/r2TnYG945lFfyH; AWSALBCORS=LEi0K3Uo1nILtAPwiQlDKHLVbGLlB6i53kPkmiqt3F5ZjsJ9GmJ+HIF68KASM0cOkvZy1xVBlBvPDXV5b8M/v1agy5zM8FQTDzU7RDSoAjWa8/r2TnYG945lFfyH; datadome=Pu2quQW9IroVbvV3nzzbzlUlblZ0tWxdKTa~hJ6xJMZF5XsUWe0BOmUwt046PDc6YKJGmK4EpBmHHGzftQFYWpVSUpsVqFdNLBelUhW_BqvcD3vyatOwSrTo0kAUOVd3; tc_cj_v2=%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMMORPMMMQNNZZZ%5D777m_iZZZ%22**%22%27%20ZZZKQMMQMPMPMKOPZZZ%5D777%5Ecl_%5Dny%5B%5D%5D_mmZZZZZZKQMNNOOQOJPKJZZZ%5D; tc_cj_v2_cmp=; tc_cj_v2_med=; xtan=-; xtant=1; tCdebugLib=1; _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() diff --git a/PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift b/PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift index f301acd..88da5bd 100644 --- a/PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift +++ b/PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift @@ -55,7 +55,8 @@ struct InscriptionManagerView: View { @State private var gatheringInProgress: Bool = false @State private var gathered: Double = 0 @State private var gatheringDone: Bool = false - + @State private var totalUnrankedUnsourced: Double = 0 + var tournamentStore: TournamentStore { return self.tournament.tournamentStore } @@ -872,13 +873,14 @@ struct InscriptionManagerView: View { } } - let unrankedUnsourced = tournament.players().filter({ $0.isUnranked() && $0.source == nil }) Button { Task { gatheringInProgress = true gathered = 0 gatheringDone = false - print("total", unrankedUnsourced) + let unrankedUnsourced = tournament.players().filter({ $0.isUnranked() && $0.source == nil }) + totalUnrankedUnsourced = Double(unrankedUnsourced.count) + print("total", unrankedUnsourced.count) for player in unrankedUnsourced { do { if let playerData = try await player.fetchUnrankPlayerData() { @@ -887,20 +889,25 @@ struct InscriptionManagerView: View { player.clubCode = playerData.codeClub player.source = .frenchFederation try tournamentStore.playerRegistrations.addOrUpdate(instance: player) - await MainActor.run { - gathered += 1 - print("gathered", gathered) - } } + + gathered += 1 + print("gathered", gathered) + } catch { print(error) } } gatheringDone = true + gatheringInProgress = false } } label: { if gatheringInProgress { - ProgressView("Récupérés", value: gathered, total: Double(unrankedUnsourced.count)) + LabeledContent { + Text("\(gathered.formatted()) / \(totalUnrankedUnsourced.formatted())") + } label: { + ProgressView("Récupérés", value: gathered, total: totalUnrankedUnsourced) + } } else { LabeledContent { if gatheringDone {