parent
3ea327cad2
commit
629dfe5120
@ -0,0 +1,89 @@ |
||||
// |
||||
// OnlineWaitingListFaqSheetView.swift |
||||
// PadelClub |
||||
// |
||||
// Created by razmig on 10/04/2025. |
||||
// |
||||
|
||||
import SwiftUI |
||||
|
||||
struct OnlineWaitingListFaqSheetView: View { |
||||
@Environment(\.dismiss) private var dismiss |
||||
let faqText: String = |
||||
""" |
||||
FAQ pour les Arbitres - Confirmation des Équipes |
||||
|
||||
Comment fonctionne le délai de confirmation pour les équipes ? |
||||
|
||||
Notre système calcule automatiquement un délai de confirmation adapté pour les équipes en fonction de trois facteurs principaux : |
||||
- Proximité du tournoi : Plus le tournoi est proche, plus le délai est court |
||||
- Pression de la liste d'attente : Plus il y a d'équipes en attente, plus le délai est court |
||||
- Heures ouvrables : Les délais respectent généralement les heures ouvrables (8h-21h) |
||||
|
||||
Quels sont les délais typiques de confirmation ? |
||||
- Tournoi dans moins de 24h → 30 minutes |
||||
- Tournoi dans moins de 48h → 60 minutes (1 heure) |
||||
- Tournoi dans moins de 72h → 120 minutes (2 heures) |
||||
- Tournoi dans plus de 72h → 240 minutes (4 heures) |
||||
|
||||
Ces délais peuvent être raccourcis en fonction du nombre d'équipes en liste d'attente : |
||||
- 30+ équipes en attente → 30 minutes |
||||
- 20+ équipes en attente → 60 minutes (1 heure) |
||||
- 10+ équipes en attente → 120 minutes (2 heures) |
||||
|
||||
Y a-t-il des exceptions à ces règles ? |
||||
|
||||
Oui, dans les situations urgentes : |
||||
- Si le tournoi commence dans moins de 24h, les restrictions d'heures ouvrables sont ignorées |
||||
- Si le tournoi commence dans moins de 12h, toutes les restrictions sont assouplies avec un minimum de 30 minutes de délai |
||||
|
||||
Comment les délais sont-ils arrondis ? |
||||
|
||||
Les délais sont toujours arrondis à la demi-heure supérieure pour plus de simplicité. |
||||
|
||||
Que se passe-t-il si le délai tombe en dehors des heures ouvrables ? |
||||
|
||||
Si le délai calculé tombe en dehors des heures ouvrables (avant 8h ou après 21h), il est automatiquement reporté au jour ouvrable suivant à 8h du matin. |
||||
""" |
||||
var body: some View { |
||||
NavigationView { |
||||
ScrollView { |
||||
VStack(alignment: .leading, spacing: 20) { |
||||
// Content sections |
||||
ForEach(faqText.components(separatedBy: "\n\n"), id: \.self) { section in |
||||
if !section.isEmpty { |
||||
VStack(alignment: .leading, spacing: 10) { |
||||
if section.contains(":") { |
||||
Text(section.components(separatedBy: ":")[0]) |
||||
.font(.headline) |
||||
.foregroundColor(.primary) |
||||
|
||||
let bulletPoints = section.components(separatedBy: "\n-") |
||||
if bulletPoints.count > 1 { |
||||
ForEach(bulletPoints.dropFirst(), id: \.self) { point in |
||||
HStack(alignment: .top) { |
||||
Text("•") |
||||
.padding(.trailing, 5) |
||||
Text(point) |
||||
.fixedSize(horizontal: false, vertical: true) |
||||
} |
||||
} |
||||
} |
||||
} else { |
||||
Text(section) |
||||
} |
||||
} |
||||
.padding(.bottom, 10) |
||||
} |
||||
} |
||||
} |
||||
.padding() |
||||
} |
||||
.navigationBarItems(trailing: Button("Fermer") { |
||||
dismiss() |
||||
}) |
||||
.toolbarBackground(.visible, for: .navigationBar) |
||||
.navigationTitle("FAQ - Liste d'attente") |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,90 @@ |
||||
// |
||||
// PaymentInfoSheetView.swift |
||||
// PadelClub |
||||
// |
||||
// Created by razmig on 15/01/2025. |
||||
// |
||||
|
||||
import SwiftUI |
||||
|
||||
struct PaymentInfoSheetView: View { |
||||
@Environment(\.dismiss) private var dismiss |
||||
let paymentInfoText: String = |
||||
""" |
||||
Comment fonctionnent les paiements en ligne ? |
||||
|
||||
Les paiements en ligne permettent aux joueurs de régler les frais de tournoi directement via la plateforme. Voici les informations importantes à connaître : |
||||
|
||||
Options de paiement : |
||||
- Le paiement en ligne est activé à la discrétion de l'organisateur |
||||
- L'organisateur peut rendre le paiement en ligne obligatoire ou optionnel |
||||
- Si le paiement n'est pas obligatoire, il est possible de s'inscrire sans payer immédiatement |
||||
- Tous les paiements sont traités via Stripe, une plateforme sécurisée de paiement en ligne |
||||
|
||||
Remboursements : |
||||
- Les remboursements peuvent être activés ou désactivés par l'organisateur |
||||
- Si activés, une date limite de remboursement peut être définie |
||||
- Aucun remboursement n'est possible après cette date limite |
||||
- Les remboursements sont automatiquement traités via la même méthode de paiement utilisée |
||||
|
||||
Commissions et frais : |
||||
- Padel Club prélève une commission de 0,75% sur chaque transaction |
||||
- Cette commission couvre les frais de service et de maintenance de la plateforme |
||||
- Des frais supplémentaires de Stripe peuvent s'appliquer (environ 1,4% + 0,25€ par transaction) |
||||
- Le montant total des frais est indiqué clairement avant validation du paiement |
||||
|
||||
Exigences pour les organisateurs : |
||||
- L'organisateur doit avoir un compte Stripe valide pour recevoir les paiements |
||||
- Le compte Stripe doit être vérifié et connecté à Padel Club |
||||
- Sans compte Stripe connecté, l'option de paiement en ligne ne peut pas être activée |
||||
- Les fonds sont directement versés sur le compte bancaire associé au compte Stripe de l'organisateur |
||||
|
||||
Sécurité : |
||||
- Toutes les transactions sont sécurisées et chiffrées |
||||
- Padel Club ne stocke pas les informations de carte bancaire |
||||
- La conformité RGPD et PCI-DSS est assurée par Stripe |
||||
|
||||
En cas de problème avec un paiement, veuillez contacter l'organisateur du tournoi ou le support Padel Club. |
||||
""" |
||||
var body: some View { |
||||
NavigationView { |
||||
ScrollView { |
||||
VStack(alignment: .leading, spacing: 20) { |
||||
// Content sections |
||||
ForEach(paymentInfoText.components(separatedBy: "\n\n"), id: \.self) { section in |
||||
if !section.isEmpty { |
||||
VStack(alignment: .leading, spacing: 10) { |
||||
if section.contains(":") { |
||||
Text(section.components(separatedBy: ":")[0]) |
||||
.font(.headline) |
||||
.foregroundColor(.primary) |
||||
|
||||
let bulletPoints = section.components(separatedBy: "\n-") |
||||
if bulletPoints.count > 1 { |
||||
ForEach(bulletPoints.dropFirst(), id: \.self) { point in |
||||
HStack(alignment: .top) { |
||||
Text("•") |
||||
.padding(.trailing, 5) |
||||
Text(point) |
||||
.fixedSize(horizontal: false, vertical: true) |
||||
} |
||||
} |
||||
} |
||||
} else { |
||||
Text(section) |
||||
} |
||||
} |
||||
.padding(.bottom, 10) |
||||
} |
||||
} |
||||
} |
||||
.padding() |
||||
} |
||||
.navigationBarItems(trailing: Button("Fermer") { |
||||
dismiss() |
||||
}) |
||||
.toolbarBackground(.visible, for: .navigationBar) |
||||
.navigationTitle("Paiement en ligne") |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue