fix issue with update ranking and mixte tournament

sync
Razmig Sarkissian 8 months ago
parent 6dccef8908
commit 83370f9e73
  1. 2
      PadelClub/Data/PlayerRegistration.swift
  2. 8
      PadelClub/Data/Tournament.swift
  3. 9
      PadelClub/Views/Tournament/FileImportView.swift
  4. 6
      PadelClub/Views/Tournament/Screen/InscriptionManagerView.swift

@ -265,7 +265,7 @@ final class PlayerRegistration: ModelObject, Storable {
} }
} }
func updateRank(from sources: [CSVParser], lastRank: Int) async throws { func updateRank(from sources: [CSVParser], lastRank: Int?) async throws {
#if DEBUG_TIME #if DEBUG_TIME
let start = Date() let start = Date()
defer { defer {

@ -1537,7 +1537,7 @@ defer {
rankSourceDate = newDate rankSourceDate = newDate
// Fetch current month data only once // Fetch current month data only once
let monthData = currentMonthData() var monthData = currentMonthData()
if monthData == nil { if monthData == nil {
async let lastRankWoman = SourceFileManager.shared.getUnrankValue(forMale: false, rankSourceDate: rankSourceDate) async let lastRankWoman = SourceFileManager.shared.getUnrankValue(forMale: false, rankSourceDate: rankSourceDate)
@ -1554,10 +1554,12 @@ defer {
} catch { } catch {
Logger.error(error) Logger.error(error)
} }
monthData = newMonthData
} }
let lastRankMan = monthData?.maleUnrankedValue ?? 0 let lastRankMan = monthData?.maleUnrankedValue
let lastRankWoman = monthData?.femaleUnrankedValue ?? 0 let lastRankWoman = monthData?.femaleUnrankedValue
var chunkedParsers: [CSVParser] = [] var chunkedParsers: [CSVParser] = []
if let providedSources { if let providedSources {

@ -499,7 +499,16 @@ struct FileImportView: View {
private func _validate(tournament: Tournament) async { private func _validate(tournament: Tournament) async {
let filteredTeams = filteredTeams(tournament: tournament) let filteredTeams = filteredTeams(tournament: tournament)
let lastDataSource: String? = DataStore.shared.appSettings.lastDataSource
var _mostRecentDateAvailable: Date? {
guard let lastDataSource else { return nil }
return URL.importDateFormatter.date(from: lastDataSource)
}
if let rankSourceDate = _mostRecentDateAvailable {
tournament.rankSourceDate = rankSourceDate
_save()
}
tournament.importTeams(filteredTeams) tournament.importTeams(filteredTeams)
validatedTournamentIds.insert(tournament.id) validatedTournamentIds.insert(tournament.id)

@ -278,6 +278,7 @@ struct InscriptionManagerView: View {
} }
.sheet(isPresented: $presentImportView, onDismiss: { .sheet(isPresented: $presentImportView, onDismiss: {
_setHash() _setHash()
currentRankSourceDate = tournament.rankSourceDate
}) { }) {
NavigationStack { NavigationStack {
FileImportView(defaultFileProvider: tournament.isAnimation() ? .custom : .frenchFederation) FileImportView(defaultFileProvider: tournament.isAnimation() ? .custom : .frenchFederation)
@ -293,8 +294,11 @@ struct InscriptionManagerView: View {
_setHash() _setHash()
} }
.onChange(of: currentRankSourceDate) { .onChange(of: currentRankSourceDate) {
if let currentRankSourceDate, tournament.rankSourceDate != currentRankSourceDate { if let currentRankSourceDate, tournament.rankSourceDate != currentRankSourceDate, unsortedPlayers.isEmpty == false {
confirmUpdateRank = true confirmUpdateRank = true
} else {
tournament.rankSourceDate = currentRankSourceDate
_save()
} }
} }
.sheet(isPresented: $confirmUpdateRank, onDismiss: { .sheet(isPresented: $confirmUpdateRank, onDismiss: {

Loading…
Cancel
Save