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) 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! return event!
} }

@ -131,7 +131,15 @@ struct EventCreationView: View {
private func _validate() { private func _validate() {
let event = Event(creator: StoreCenter.main.userId, name: eventName) let event = Event(creator: StoreCenter.main.userId, name: eventName)
event.club = selectedClub?.id 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 { do {
try dataStore.events.addOrUpdate(instance: event) try dataStore.events.addOrUpdate(instance: event)
} catch { } catch {

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

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

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

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

@ -67,6 +67,16 @@ struct EventClubSettingsView: View {
private func _setClub(club: Club) { private func _setClub(club: Club) {
event.club = club.id 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 { do {
try dataStore.events.addOrUpdate(instance: event) try dataStore.events.addOrUpdate(instance: event)
} catch { } catch {

Loading…
Cancel
Save