|
|
|
|
@ -42,65 +42,123 @@ struct TournamentStatusView: View { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let paidOnlineTeams = tournament.paidOnlineTeams() |
|
|
|
|
|
|
|
|
|
Section { |
|
|
|
|
RowButtonView("Supprimer le tournoi", role: .destructive) { |
|
|
|
|
if tournament.payment == nil { |
|
|
|
|
do { |
|
|
|
|
let event = tournament.eventObject() |
|
|
|
|
let isLastTournament = event?.tournaments.count == 1 |
|
|
|
|
|
|
|
|
|
if tournament.onlineTeams().isEmpty == false { |
|
|
|
|
tournament.isDeleted = true |
|
|
|
|
try dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
} else { |
|
|
|
|
if let event, isLastTournament { |
|
|
|
|
try dataStore.events.delete(instance: event) |
|
|
|
|
} else { |
|
|
|
|
try dataStore.tournaments.delete(instance: tournament) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if eventDismiss == false || isLastTournament { |
|
|
|
|
navigation.path = NavigationPath() |
|
|
|
|
let event = tournament.eventObject() |
|
|
|
|
let isLastTournament = event?.tournaments.count == 1 |
|
|
|
|
|
|
|
|
|
if tournament.onlineTeams().isEmpty == false { |
|
|
|
|
tournament.isDeleted = true |
|
|
|
|
dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
} else { |
|
|
|
|
if let event, isLastTournament { |
|
|
|
|
dataStore.events.delete(instance: event) |
|
|
|
|
} else { |
|
|
|
|
dismiss() |
|
|
|
|
dataStore.tournaments.delete(instance: tournament) |
|
|
|
|
} |
|
|
|
|
} catch { |
|
|
|
|
Logger.error(error) |
|
|
|
|
} |
|
|
|
|
if eventDismiss == false || isLastTournament { |
|
|
|
|
navigation.path = NavigationPath() |
|
|
|
|
} else { |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
tournament.endDate = Date() |
|
|
|
|
tournament.isDeleted = true |
|
|
|
|
tournament.navigationPath.removeAll() |
|
|
|
|
do { |
|
|
|
|
try dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
if eventDismiss == false { |
|
|
|
|
navigation.path = NavigationPath() |
|
|
|
|
} else { |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
} catch { |
|
|
|
|
Logger.error(error) |
|
|
|
|
_save() |
|
|
|
|
if eventDismiss == false { |
|
|
|
|
navigation.path = NavigationPath() |
|
|
|
|
} else { |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} footer: { |
|
|
|
|
if tournament.payment == nil { |
|
|
|
|
if paidOnlineTeams.isEmpty == false { |
|
|
|
|
Text("Ce tournoi ne peut pas étre supprimé, seulement annulé car il contient des équipes ayant payé en ligne.") |
|
|
|
|
} else if tournament.payment == nil { |
|
|
|
|
Text("Ce tournoi sera supprimé et n'a pas été comptabilisé dans vos achats. Toutes les données seront supprimées.") |
|
|
|
|
} else { |
|
|
|
|
Text("Ce tournoi sera supprimé et a déjà été comptabilisé dans vos achats. Toutes les données seront supprimées.") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.disabled(paidOnlineTeams.isEmpty == false) |
|
|
|
|
|
|
|
|
|
if tournament.hasEnded() == false && tournament.isCanceled == false { |
|
|
|
|
Section { |
|
|
|
|
|
|
|
|
|
@Bindable var bindableTournament: Tournament = tournament |
|
|
|
|
|
|
|
|
|
if paidOnlineTeams.isEmpty == false { |
|
|
|
|
LabeledContent { |
|
|
|
|
Text(paidOnlineTeams.count.formatted()) |
|
|
|
|
} label: { |
|
|
|
|
Text("Équipes ayant payé en ligne") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Toggle(isOn: $bindableTournament.enableOnlinePaymentRefund) { |
|
|
|
|
Text("Remboursement possible") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if tournament.enableOnlinePaymentRefund { |
|
|
|
|
if let refundDateLimit = tournament.refundDateLimit { |
|
|
|
|
LabeledContent { |
|
|
|
|
Text(refundDateLimit.formatted()) |
|
|
|
|
} label: { |
|
|
|
|
Text("Date limite") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if refundDateLimit.isEarlierThan(Date()) == false { |
|
|
|
|
Text("Le remboursement est toujours possible") |
|
|
|
|
} else { |
|
|
|
|
Text("La date limite a été dépassé") |
|
|
|
|
FooterButtonView("Retirer la date limite ?", role: .destructive) { |
|
|
|
|
tournament.refundDateLimit = nil |
|
|
|
|
_save() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if tournament.enableOnlinePaymentRefund { |
|
|
|
|
if let refundDateLimit = tournament.refundDateLimit { |
|
|
|
|
if refundDateLimit.isEarlierThan(Date()) == false { |
|
|
|
|
Text("\(paidOnlineTeams.count) équipe\(paidOnlineTeams.count.pluralSuffix) seront remboursée\(paidOnlineTeams.count.pluralSuffix)") |
|
|
|
|
} else { |
|
|
|
|
Text("Les équipes ayant payé en ligne ne seront pas automatiquement remboursées car la date limite a été dépassé") |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
Text("Les équipes ayant payé en ligne seront remboursées") |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
Text("Les équipes ayant payé en ligne ne seront pas automatiquement remboursées vous n'avez pas autorisé le remboursement.") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Text("Si vous annulez ce tournoi vous pouvez toujours gérer les remboursements au cas par cas dans la vue gestion des inscriptions du tournoi.") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RowButtonView("Annuler le tournoi", role: .destructive) { |
|
|
|
|
if paidOnlineTeams.isEmpty == false { |
|
|
|
|
|
|
|
|
|
if tournament.enableOnlinePaymentRefund { |
|
|
|
|
if let refundDateLimit = tournament.refundDateLimit { |
|
|
|
|
if refundDateLimit.isEarlierThan(Date()) == false { |
|
|
|
|
tournament.refundTeams() |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
tournament.refundTeams() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
tournament.endDate = Date() |
|
|
|
|
tournament.isCanceled = true |
|
|
|
|
do { |
|
|
|
|
try dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
} catch { |
|
|
|
|
Logger.error(error) |
|
|
|
|
} |
|
|
|
|
_save() |
|
|
|
|
dismiss() |
|
|
|
|
} |
|
|
|
|
} footer: { |
|
|
|
|
@ -118,6 +176,9 @@ struct TournamentStatusView: View { |
|
|
|
|
} |
|
|
|
|
.navigationTitle("Gestion du tournoi") |
|
|
|
|
.toolbarBackground(.visible, for: .navigationBar) |
|
|
|
|
.onChange(of: tournament.enableOnlinePaymentRefund) { |
|
|
|
|
_save() |
|
|
|
|
} |
|
|
|
|
.onChange(of: tournament.endDate) { |
|
|
|
|
_save() |
|
|
|
|
} |
|
|
|
|
@ -130,11 +191,7 @@ struct TournamentStatusView: View { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private func _save() { |
|
|
|
|
do { |
|
|
|
|
try dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
} catch { |
|
|
|
|
Logger.error(error) |
|
|
|
|
} |
|
|
|
|
dataStore.tournaments.addOrUpdate(instance: tournament) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|