improve ranking data debug exportpaca_championship
parent
0c0b492d8f
commit
619702bcff
@ -0,0 +1,72 @@ |
||||
// |
||||
// GroupStageQualificationManager.swift |
||||
// PadelClub |
||||
// |
||||
// Created by razmig on 05/11/2024. |
||||
// |
||||
|
||||
|
||||
class GroupStageQualificationManager { |
||||
private let tournament: Tournament |
||||
private let tournamentStore: TournamentStore |
||||
|
||||
init(tournament: Tournament, tournamentStore: TournamentStore) { |
||||
self.tournament = tournament |
||||
self.tournamentStore = tournamentStore |
||||
} |
||||
|
||||
func qualificationSection() -> some View { |
||||
guard tournament.groupStageAdditionalQualified > 0 else { return EmptyView() } |
||||
|
||||
let name = "\(tournament.qualifiedPerGroupStage + 1).ordinalFormatted()" |
||||
let missingQualifiedFromGroupStages = tournament.missingQualifiedFromGroupStages() |
||||
|
||||
return Section { |
||||
NavigationLink { |
||||
SpinDrawView( |
||||
drawees: missingQualifiedFromGroupStages.isEmpty |
||||
? tournament.groupStageAdditionalQualifiedPreDraw() |
||||
: ["Qualification d'un \(name) de poule"], |
||||
segments: missingQualifiedFromGroupStages.isEmpty |
||||
? tournament.groupStageAdditionalLeft() |
||||
: missingQualifiedFromGroupStages |
||||
) { results in |
||||
if !missingQualifiedFromGroupStages.isEmpty { |
||||
self.handleDrawResults(results, missingQualifiedFromGroupStages) |
||||
} |
||||
} |
||||
} label: { |
||||
Label { |
||||
Text("Qualifier un \(name) de poule par tirage au sort") |
||||
} icon: { |
||||
Image(systemName: "exclamationmark.circle.fill") |
||||
.foregroundStyle(.logoBackground) |
||||
} |
||||
} |
||||
.disabled(tournament.moreQualifiedToDraw() == 0) |
||||
} footer: { |
||||
footerText(missingQualifiedFromGroupStages.isEmpty) |
||||
} |
||||
} |
||||
|
||||
private func handleDrawResults(_ results: [DrawResult], _ missingQualifiedFromGroupStages: [Team]) { |
||||
results.forEach { drawResult in |
||||
var team = missingQualifiedFromGroupStages[drawResult.drawIndex] |
||||
team.qualified = true |
||||
do { |
||||
try tournamentStore.teamRegistrations.addOrUpdate(instance: team) |
||||
} catch { |
||||
Logger.error(error) |
||||
} |
||||
} |
||||
} |
||||
|
||||
private func footerText(_ noMoreTeams: Bool) -> Text { |
||||
if tournament.moreQualifiedToDraw() == 0 { |
||||
return Text("Aucune équipe supplémentaire à qualifier. Vous pouvez en rajouter en modifiant le paramètre dans structure.") |
||||
} else if noMoreTeams { |
||||
return Text("Aucune équipe supplémentaire à tirer au sort. Attendez la fin des poules.") |
||||
} |
||||
return Text("") |
||||
} |
||||
} |
||||
Loading…
Reference in new issue