From c70661b3943254f4b35fc960da91a67a01476465 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 16 May 2024 17:26:53 +0200 Subject: [PATCH] fix club stuff --- .../Data/Federal/FederalTournament.swift | 11 +- PadelClub/Data/Tournament.swift | 4 +- PadelClub/Extensions/Date+Extensions.swift | 195 +++++++++--------- PadelClub/Views/Club/ClubSearchView.swift | 17 +- PadelClub/Views/Club/CreateClubView.swift | 7 + .../Views/Navigation/Umpire/UmpireView.swift | 7 + .../Components/TournamentStatusView.swift | 2 + .../Views/Tournament/TournamentView.swift | 3 +- 8 files changed, 133 insertions(+), 113 deletions(-) diff --git a/PadelClub/Data/Federal/FederalTournament.swift b/PadelClub/Data/Federal/FederalTournament.swift index 5437c25..4d142cb 100644 --- a/PadelClub/Data/Federal/FederalTournament.swift +++ b/PadelClub/Data/Federal/FederalTournament.swift @@ -17,16 +17,7 @@ enum DayPeriod { struct FederalTournament: Identifiable, Codable { func getEvent() -> Event { - var club = DataStore.shared.clubs.first(where: { $0.code == codeClub }) - if club == nil { - club = Club.findOrCreate(name: clubLabel(), code: codeClub) - do { - try DataStore.shared.clubs.addOrUpdate(instance: club!) - } catch { - Logger.error(error) - } - } - + let club = DataStore.shared.user.clubsObjects().first(where: { $0.code == codeClub }) var event = DataStore.shared.events.first(where: { $0.tenupId == id.string }) if event == nil { event = Event(creator: DataStore.shared.user.id, club: club?.id, name: libelle, tenupId: id.string) diff --git a/PadelClub/Data/Tournament.swift b/PadelClub/Data/Tournament.swift index f39e06c..cff8a4e 100644 --- a/PadelClub/Data/Tournament.swift +++ b/PadelClub/Data/Tournament.swift @@ -306,7 +306,7 @@ class Tournament : ModelObject, Storable { } func publishedGroupStagesDate() -> Date? { - if let first = groupStages().flatMap({ $0.playedMatches() }).compactMap({ $0.startDate }).sorted().first?.atNine() { + if let first = groupStages().flatMap({ $0.playedMatches() }).compactMap({ $0.startDate }).sorted().first?.atEightAM() { if first.isEarlierThan(startDate) { return startDate } else { @@ -327,7 +327,7 @@ class Tournament : ModelObject, Storable { } func publishedBracketsDate() -> Date? { - if let first = rounds().flatMap({ $0.playedMatches() }).compactMap({ $0.startDate }).sorted().first?.atNine() { + if let first = rounds().flatMap({ $0.playedMatches() }).compactMap({ $0.startDate }).sorted().first?.atEightAM() { if first.isEarlierThan(startDate) { return startDate } else { diff --git a/PadelClub/Extensions/Date+Extensions.swift b/PadelClub/Extensions/Date+Extensions.swift index 15c7272..0c20d51 100644 --- a/PadelClub/Extensions/Date+Extensions.swift +++ b/PadelClub/Extensions/Date+Extensions.swift @@ -81,7 +81,7 @@ extension Date { func get(_ components: Calendar.Component..., calendar: Calendar = Calendar.current) -> DateComponents { return calendar.dateComponents(Set(components), from: self) } - + func get(_ component: Calendar.Component, calendar: Calendar = Calendar.current) -> Int { return calendar.component(component, from: self) } @@ -102,100 +102,100 @@ extension Date { } static var firstDayOfWeek = Calendar.current.firstWeekday - static var capitalizedFirstLettersOfWeekdays: [String] { - let calendar = Calendar.current - // let weekdays = calendar.shortWeekdaySymbols - - // return weekdays.map { weekday in - // guard let firstLetter = weekday.first else { return "" } - // return String(firstLetter).capitalized - // } - // Adjusted for the different weekday starts - var weekdays = calendar.veryShortStandaloneWeekdaySymbols - if firstDayOfWeek > 1 { - for _ in 1..= firstWeekDayBeforeStart && $0 <= endOfMonth }.sorted(by: <) - } - - var monthInt: Int { - Calendar.current.component(.month, from: self) - } - - var yearInt: Int { - Calendar.current.component(.year, from: self) - } - - var dayInt: Int { - Calendar.current.component(.day, from: self) - } - - var startOfDay: Date { - Calendar.current.startOfDay(for: self) - } + static var capitalizedFirstLettersOfWeekdays: [String] { + let calendar = Calendar.current + // let weekdays = calendar.shortWeekdaySymbols + + // return weekdays.map { weekday in + // guard let firstLetter = weekday.first else { return "" } + // return String(firstLetter).capitalized + // } + // Adjusted for the different weekday starts + var weekdays = calendar.veryShortStandaloneWeekdaySymbols + if firstDayOfWeek > 1 { + for _ in 1..= firstWeekDayBeforeStart && $0 <= endOfMonth }.sorted(by: <) + } + + var monthInt: Int { + Calendar.current.component(.month, from: self) + } + + var yearInt: Int { + Calendar.current.component(.year, from: self) + } + + var dayInt: Int { + Calendar.current.component(.day, from: self) + } + + var startOfDay: Date { + Calendar.current.startOfDay(for: self) + } func endOfDay() -> Date { let calendar = Calendar.current @@ -206,6 +206,11 @@ extension Date { let calendar = Calendar.current return calendar.date(bySettingHour: 9, minute: 0, second: 0, of: self)! } + + func atEightAM() -> Date { + let calendar = Calendar.current + return calendar.date(bySettingHour: 8, minute: 0, second: 0, of: self)! + } } extension Date { diff --git a/PadelClub/Views/Club/ClubSearchView.swift b/PadelClub/Views/Club/ClubSearchView.swift index 6d628a6..3956e96 100644 --- a/PadelClub/Views/Club/ClubSearchView.swift +++ b/PadelClub/Views/Club/ClubSearchView.swift @@ -110,6 +110,13 @@ struct ClubSearchView: View { } } } + .task { + do { + try dataStore.clubs.loadDataFromServerIfAllowed() + } catch { + Logger.error(error) + } + } .listStyle(.grouped) .onChange(of: searchPresented) { locationManager.lastError = nil @@ -288,13 +295,13 @@ struct ClubSearchView: View { private func _importClub(clubToEdit: Club, clubMarker: ClubMarker) { if clubToEdit.creator == dataStore.user.id { if clubToEdit.name.isEmpty { - clubToEdit.name = clubMark.nom + clubToEdit.name = clubMarker.nom clubToEdit.acronym = clubToEdit.automaticShortName() } - clubToEdit.code = clubMark.clubID - clubToEdit.latitude = clubMark.lat - clubToEdit.longitude = clubMark.lng - clubToEdit.city = clubMark.ville + clubToEdit.code = clubMarker.clubID + clubToEdit.latitude = clubMarker.lat + clubToEdit.longitude = clubMarker.lng + clubToEdit.city = clubMarker.ville } if displayContext == .addition { diff --git a/PadelClub/Views/Club/CreateClubView.swift b/PadelClub/Views/Club/CreateClubView.swift index 91e2794..608a4ac 100644 --- a/PadelClub/Views/Club/CreateClubView.swift +++ b/PadelClub/Views/Club/CreateClubView.swift @@ -21,6 +21,13 @@ struct CreateClubView: View { var body: some View { NavigationStack { ClubDetailView(club: club, displayContext: .addition) + .task { + do { + try dataStore.clubs.loadDataFromServerIfAllowed() + } catch { + Logger.error(error) + } + } .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Annuler", role: .cancel) { diff --git a/PadelClub/Views/Navigation/Umpire/UmpireView.swift b/PadelClub/Views/Navigation/Umpire/UmpireView.swift index ec62254..adb6738 100644 --- a/PadelClub/Views/Navigation/Umpire/UmpireView.swift +++ b/PadelClub/Views/Navigation/Umpire/UmpireView.swift @@ -172,6 +172,13 @@ struct UmpireView: View { } }) } + .task { + do { + try dataStore.clubs.loadDataFromServerIfAllowed() + } catch { + Logger.error(error) + } + } } } } diff --git a/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift b/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift index bc17610..549a2a0 100644 --- a/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift +++ b/PadelClub/Views/Tournament/Screen/Components/TournamentStatusView.swift @@ -17,10 +17,12 @@ struct TournamentStatusView: View { var body: some View { @Bindable var tournament = tournament Form { + #if DEBUG RowButtonView("debug: Un-delete le tournoi") { tournament.endDate = nil tournament.isDeleted.toggle() } + #endif Section { if tournament.endDate == nil { diff --git a/PadelClub/Views/Tournament/TournamentView.swift b/PadelClub/Views/Tournament/TournamentView.swift index cbc9b51..58c7792 100644 --- a/PadelClub/Views/Tournament/TournamentView.swift +++ b/PadelClub/Views/Tournament/TournamentView.swift @@ -10,6 +10,7 @@ import LeStorage struct TournamentView: View { @EnvironmentObject var dataStore: DataStore + @Environment(NavigationViewModel.self) var navigation: NavigationViewModel @Environment(Tournament.self) var tournament: Tournament var presentationContext: PresentationContext = .agenda @@ -126,7 +127,7 @@ struct TournamentView: View { Menu { if presentationContext == .agenda { Button { - + navigation.openTournamentInOrganizer(tournament) } label: { Label("Voir dans le gestionnaire", systemImage: "line.diagonal.arrow") }