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

@ -115,6 +115,15 @@ final class GroupStage: ModelObject, Storable {
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() {
var teamScores = [TeamScore]()
var matches = [Match]()

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

@ -12,7 +12,7 @@ struct GroupStagesSettingsView: View {
@EnvironmentObject var dataStore: DataStore
@Environment(\.dismiss) private var dismiss
@Environment(Tournament.self) var tournament: Tournament
@State private var generationDone: Bool = false
@State private var generationDoneMessage: String?
let step: Int
var tournamentStore: TournamentStore {
@ -168,6 +168,32 @@ struct GroupStagesSettingsView: View {
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 {
RowButtonView("Nommer les poules alphabétiquement", role: .destructive) {
let groupStages = tournament.groupStages()
@ -220,8 +246,8 @@ struct GroupStagesSettingsView: View {
}
.overlay(alignment: .bottom) {
if generationDone {
Label("Poules mises à jour", systemImage: "checkmark.circle.fill")
if let generationDoneMessage {
Label(generationDoneMessage, systemImage: "checkmark.circle.fill")
.toastFormatted()
.deferredRendering(for: .seconds(2))
}
@ -238,7 +264,7 @@ struct GroupStagesSettingsView: View {
RowButtonView("Refaire les poules", role: .destructive) {
tournament.deleteGroupStages()
tournament.buildGroupStages()
generationDone = true
generationDoneMessage = "Poules mises à jour"
tournament.shouldVerifyGroupStage = false
_save()
}
@ -249,7 +275,7 @@ struct GroupStagesSettingsView: View {
RowButtonView("Poule \(mode.localizedLabel().lowercased())", role: .destructive, systemImage: mode.systemImage) {
tournament.groupStageOrderingMode = mode
tournament.refreshGroupStages(keepExistingMatches: true)
generationDone = true
generationDoneMessage = "Poules mises à jour"
tournament.shouldVerifyGroupStage = false
_save()
}

Loading…
Cancel
Save