paca_championship
Raz 1 year ago
parent 883fdaea18
commit 8fbafd8c08
  1. 9
      PadelClub/Data/GroupStage.swift
  2. 6
      PadelClub/Views/GroupStage/Components/GroupStageSettingsView.swift
  3. 36
      PadelClub/Views/GroupStage/GroupStagesSettingsView.swift

@ -115,6 +115,15 @@ final class GroupStage: ModelObject, Storable {
return match return match
} }
func removeReturnMatches() {
let returnMatches = _matches().filter({ $0.index >= matchCount })
do {
try self.tournamentStore.matches.delete(contentOfs: returnMatches)
} catch {
Logger.error(error)
}
}
func addReturnMatches() { func addReturnMatches() {
var teamScores = [TeamScore]() var teamScores = [TeamScore]()
var matches = [Match]() var matches = [Match]()

@ -150,10 +150,16 @@ struct GroupStageSettingsView: View {
} }
Section { Section {
if groupStage.isReturnMatchEnabled() {
RowButtonView("Effacer les matchs retours", role: .destructive) {
groupStage.removeReturnMatches()
}
} else {
RowButtonView("Rajouter les matchs retours", role: .destructive) { RowButtonView("Rajouter les matchs retours", role: .destructive) {
groupStage.addReturnMatches() groupStage.addReturnMatches()
} }
} }
}
Section { Section {
RowButtonView("Rafraichir", role: .destructive) { RowButtonView("Rafraichir", role: .destructive) {

@ -12,7 +12,7 @@ struct GroupStagesSettingsView: View {
@EnvironmentObject var dataStore: DataStore @EnvironmentObject var dataStore: DataStore
@Environment(\.dismiss) private var dismiss @Environment(\.dismiss) private var dismiss
@Environment(Tournament.self) var tournament: Tournament @Environment(Tournament.self) var tournament: Tournament
@State private var generationDone: Bool = false @State private var generationDoneMessage: String?
let step: Int let step: Int
var tournamentStore: TournamentStore { var tournamentStore: TournamentStore {
@ -168,6 +168,32 @@ struct GroupStagesSettingsView: View {
Text("Redistribue les équipes par la méthode du serpentin") Text("Redistribue les équipes par la méthode du serpentin")
} }
let groupStages = tournament.groupStages()
Section {
if groupStages.anySatisfy({ $0.isReturnMatchEnabled() }) {
RowButtonView("Effacer les matchs retours", role: .destructive) {
groupStages.filter({ $0.isReturnMatchEnabled() }).forEach { groupStage in
groupStage.removeReturnMatches()
}
generationDoneMessage = "Matchs retours effacés"
}
}
}
Section {
if groupStages.anySatisfy({ $0.isReturnMatchEnabled() == false }) {
RowButtonView("Rajouter les matchs retours", role: .destructive) {
groupStages.filter({ $0.isReturnMatchEnabled() == false }).forEach { groupStage in
groupStage.addReturnMatches()
}
generationDoneMessage = "Matchs retours créés"
}
}
}
Section { Section {
RowButtonView("Nommer les poules alphabétiquement", role: .destructive) { RowButtonView("Nommer les poules alphabétiquement", role: .destructive) {
let groupStages = tournament.groupStages() let groupStages = tournament.groupStages()
@ -220,8 +246,8 @@ struct GroupStagesSettingsView: View {
} }
.overlay(alignment: .bottom) { .overlay(alignment: .bottom) {
if generationDone { if let generationDoneMessage {
Label("Poules mises à jour", systemImage: "checkmark.circle.fill") Label(generationDoneMessage, systemImage: "checkmark.circle.fill")
.toastFormatted() .toastFormatted()
.deferredRendering(for: .seconds(2)) .deferredRendering(for: .seconds(2))
} }
@ -238,7 +264,7 @@ struct GroupStagesSettingsView: View {
RowButtonView("Refaire les poules", role: .destructive) { RowButtonView("Refaire les poules", role: .destructive) {
tournament.deleteGroupStages() tournament.deleteGroupStages()
tournament.buildGroupStages() tournament.buildGroupStages()
generationDone = true generationDoneMessage = "Poules mises à jour"
tournament.shouldVerifyGroupStage = false tournament.shouldVerifyGroupStage = false
_save() _save()
} }
@ -249,7 +275,7 @@ struct GroupStagesSettingsView: View {
RowButtonView("Poule \(mode.localizedLabel().lowercased())", role: .destructive, systemImage: mode.systemImage) { RowButtonView("Poule \(mode.localizedLabel().lowercased())", role: .destructive, systemImage: mode.systemImage) {
tournament.groupStageOrderingMode = mode tournament.groupStageOrderingMode = mode
tournament.refreshGroupStages(keepExistingMatches: true) tournament.refreshGroupStages(keepExistingMatches: true)
generationDone = true generationDoneMessage = "Poules mises à jour"
tournament.shouldVerifyGroupStage = false tournament.shouldVerifyGroupStage = false
_save() _save()
} }

Loading…
Cancel
Save