clubs update with reset

club_update
Raz 1 year ago
parent 0f6e41773c
commit 057efee144
  1. 8
      PadelClub/Data/Federal/FederalTournament.swift
  2. 10
      PadelClub/Views/Cashier/Event/EventCreationView.swift
  3. 28
      PadelClub/Views/Club/ClubSearchView.swift
  4. 1
      PadelClub/Views/Club/CreateClubView.swift
  5. 1
      PadelClub/Views/Navigation/MainView.swift
  6. 75
      PadelClub/Views/Navigation/Umpire/UmpireView.swift
  7. 10
      PadelClub/Views/Tournament/Screen/Components/EventClubSettingsView.swift

@ -27,6 +27,14 @@ struct FederalTournament: Identifiable, Codable {
Logger.error(error)
}
}
if let club, club.creator == nil {
club.creator = StoreCenter.main.userId
do {
try DataStore.shared.clubs.addOrUpdate(instance: club)
} catch {
Logger.error(error)
}
}
return event!
}

@ -131,7 +131,15 @@ struct EventCreationView: View {
private func _validate() {
let event = Event(creator: StoreCenter.main.userId, name: eventName)
event.club = selectedClub?.id
if let selectedClub, selectedClub.creator == nil {
selectedClub.creator = StoreCenter.main.userId
do {
try dataStore.clubs.addOrUpdate(instance: selectedClub)
} catch {
Logger.error(error)
}
}
do {
try dataStore.events.addOrUpdate(instance: event)
} catch {

@ -28,6 +28,7 @@ struct ClubSearchView: View {
@State private var showingSettingsAlert = false
@State private var newClub: Club?
@State private var error: Error?
@State private var selectedClubId: String?
var presentClubCreationView: Binding<Bool> { Binding(
get: { newClub != nil },
@ -90,8 +91,18 @@ struct ClubSearchView: View {
Section {
ForEach(_filteredClubs()) { clubMark in
Button {
let clubToEdit = club ?? Club.findOrCreate(name: clubMark.nom, code: clubMark.clubID)
_importClub(clubToEdit: clubToEdit, clubMarker: clubMark)
Task {
selectedClubId = clubMark.id
do {
dataStore.clubs.reset()
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)
}
let clubToEdit = club ?? Club.findOrCreate(name: clubMark.nom, code: clubMark.clubID)
_importClub(clubToEdit: clubToEdit, clubMarker: clubMark)
selectedClubId = nil
}
} label: {
clubView(clubMark)
.contentShape(Rectangle())
@ -118,13 +129,6 @@ struct ClubSearchView: View {
}
}
}
.task {
do {
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)
}
}
.listStyle(.grouped)
.onChange(of: searchPresented) {
locationManager.lastError = nil
@ -386,7 +390,11 @@ struct ClubSearchView: View {
@ViewBuilder
private func clubView(_ club: ClubMarker) -> some View {
LabeledContent {
Text(club.distance(from: locationManager.location))
if club.id == selectedClubId {
ProgressView()
} else {
Text(club.distance(from: locationManager.location))
}
} label: {
Text(club.nom)
Text(club.ville).font(.caption)

@ -44,6 +44,7 @@ struct CreateClubView: View {
if validationInProgress {
Task {
do {
dataStore.clubs.reset()
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)

@ -94,6 +94,7 @@ struct MainView: View {
//await self._checkSourceFileAvailability()
if StoreCenter.main.hasToken() {
do {
dataStore.clubs.reset()
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)

@ -16,6 +16,7 @@ struct UmpireView: View {
@State private var presentSearchView: Bool = false
@State private var showSubscriptions: Bool = false
@State private var isImporting: Bool = false
// @State var isConnected: Bool = false
@ -54,17 +55,25 @@ struct UmpireView: View {
let currentPlayerData = dataStore.user.currentPlayerData()
Section {
if let currentPlayerData {
//todo palmares
ImportedPlayerView(player: currentPlayerData)
// NavigationLink {
//
// } label: {
// ImportedPlayerView(player: currentPlayerData)
// }
if isImporting {
LabeledContent {
ProgressView()
} label: {
Text("Importation de vos données")
}
} else {
RowButtonView("Ma fiche joueur", systemImage: "person.bust") {
presentSearchView = true
if let currentPlayerData {
//todo palmares
ImportedPlayerView(player: currentPlayerData)
// NavigationLink {
//
// } label: {
// ImportedPlayerView(player: currentPlayerData)
// }
} else {
RowButtonView("Ma fiche joueur", systemImage: "person.bust") {
presentSearchView = true
}
}
}
} footer: {
@ -166,29 +175,12 @@ struct UmpireView: View {
NavigationStack {
SelectablePlayerListView(allowSelection: 1, searchField: user.firstName + " " + user.lastName, playerSelectionAction: { players in
if let player = players.first {
user.licenceId = player.license
if user.clubsObjects().contains(where: { $0.code == player.clubCode }) == false {
let userClub = Club.findOrCreate(name: player.clubName!, code: player.clubCode)
if userClub.hasBeenCreated(by: StoreCenter.main.userId) {
do {
try dataStore.clubs.addOrUpdate(instance: userClub)
} catch {
Logger.error(error)
}
}
user.setUserClub(userClub)
Task {
await _importUmpireData(fromPlayer: player)
}
self.dataStore.saveUser()
}
})
}
.task {
do {
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)
}
}
}
.navigationDestination(for: UmpireScreen.self) { screen in
switch screen {
@ -199,6 +191,31 @@ struct UmpireView: View {
}
}
private func _importUmpireData(fromPlayer player: ImportedPlayer) async {
isImporting = true
do {
dataStore.clubs.reset()
try await dataStore.clubs.loadDataFromServerIfAllowed()
} catch {
Logger.error(error)
}
let user = dataStore.user
user.licenceId = player.license
if user.clubsObjects().contains(where: { $0.code == player.clubCode }) == false {
let userClub = Club.findOrCreate(name: player.clubName!, code: player.clubCode)
if userClub.hasBeenCreated(by: StoreCenter.main.userId) {
do {
try dataStore.clubs.addOrUpdate(instance: userClub)
} catch {
Logger.error(error)
}
}
user.setUserClub(userClub)
}
self.dataStore.saveUser()
isImporting = false
}
fileprivate func _isConnected() -> Bool {
return dataStore.user.username.count > 0 && StoreCenter.main.hasToken()
}

@ -67,6 +67,16 @@ struct EventClubSettingsView: View {
private func _setClub(club: Club) {
event.club = club.id
if club.creator == nil {
club.creator = StoreCenter.main.userId
do {
try dataStore.clubs.addOrUpdate(instance: club)
} catch {
Logger.error(error)
}
}
do {
try dataStore.events.addOrUpdate(instance: event)
} catch {

Loading…
Cancel
Save