Adds payment when adding supervisors

main
Laurent 1 month ago
parent b239ff9a07
commit dec6f21db9
  1. 9
      PadelClub/Views/Tournament/Subscription/PaymentStatusView.swift
  2. 8
      PadelClub/Views/Tournament/TournamentView.swift
  3. 15
      PadelClub/Views/User/ShareModelView.swift

@ -48,6 +48,8 @@ struct PaymentStatusView: View {
@State var payment: TournamentPayment? = .free
@State var noOfferMessage: String? = nil
var body: some View {
Group {
@ -58,7 +60,8 @@ struct PaymentStatusView: View {
let text = "Tournoi offert (\(remaining) restant\(end))"
ImageInfoView(systemImage: "gift.fill", text: text, tip: FreeTournamentTip())
case nil:
ImageInfoView(systemImage: "exclamationmark.bubble.fill", text: "Veuillez souscrire à une offre pour convoquer ou entrer un résultat", textColor: .white, backgroundColor: .logoRed, tip: NoPaymentTip())
var text = noOfferMessage ?? "Veuillez souscrire à une offre pour entrer un résultat"
ImageInfoView(systemImage: "exclamationmark.bubble.fill", text: text, textColor: .white, backgroundColor: .logoRed, tip: NoPaymentTip())
default:
EmptyView()
}
@ -77,7 +80,7 @@ struct PaymentStatusView: View {
struct FreeTournamentTip: Tip {
var title: Text {
return Text("Nous vous offrons vos 3 premiers tournois ! Convoquez les équipes, créez les poules, le tableau comme vous le souhaitez. \nEnregistrez les résultats de chaque équipes et diffusez les scores en temps réel sur les écrans de votre club !\n\n Votre tournoi est décompté lorsque vous convoquez ou que vous rentrez un résultat.")
return Text("Nous vous offrons vos 3 premiers tournois ! Convoquez les équipes, créez les poules, le tableau comme vous le souhaitez. \nEnregistrez les résultats de chaque équipes et diffusez les scores en temps réel sur les écrans de votre club !\n\n Votre tournoi est décompté lorsque vous rentrez un résultat.")
}
var image: Image? {
@ -88,7 +91,7 @@ struct FreeTournamentTip: Tip {
struct NoPaymentTip: Tip {
var title: Text {
return Text("Vous ne disposez plus d'une offre vous permettant de convoquer les joueurs et de rentrer les résultats des matchs. Nous vous invitons à consulter les offres dans l'onglet JA.").foregroundStyle(.white)
return Text("Vous ne disposez plus d'une offre vous permettant de rentrer les résultats des matchs. Nous vous invitons à consulter les offres dans l'onglet JA.").foregroundStyle(.white)
}
var image: Image? {

@ -168,7 +168,13 @@ struct TournamentView: View {
case .print:
PrintSettingsView(tournament: tournament)
case .share:
ShareModelView(instance: tournament)
ShareModelView(instance: tournament, handler: { users in
if users.count > 0 {
Task {
try? await self.tournament.payIfNecessary()
}
}
})
case .restingTime:
TeamRestingView()
case .stateSettings:

@ -10,16 +10,22 @@ import LeStorage
import SwiftUI
import PadelClubData
typealias UsersClosure = (([String]) -> ())
struct ShareModelView<T: SyncedStorable> : View {
@StateObject private var viewModel = UserSearchViewModel()
let instance: T
@State var payment: TournamentPayment? = nil
var handler: UsersClosure? = nil
var body: some View {
List {
if T.self is Tournament.Type {
Section {
PaymentStatusView(noOfferMessage: "Veuillez souscrire à une offre afin de payer le tournoi")
}
}
if !self.viewModel.availableUsers.isEmpty {
ForEach(self.viewModel.availableUsers, id: \.id) { user in
let isSelected = viewModel.contains(user.id)
@ -50,9 +56,10 @@ struct ShareModelView<T: SyncedStorable> : View {
.toolbarBackground(.visible, for: .navigationBar)
.onAppear {
self.viewModel.selectedUsers = StoreCenter.main.authorizedUsers(for: self.instance.stringId)
}.onDisappear {
if let handler {
handler(self.viewModel.selectedUsers)
}
.task {
self.payment = await Guard.main.paymentForNewTournament()
}
}

Loading…
Cancel
Save