You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
PadelClub/PadelClub/Data/Event.swift

77 lines
2.1 KiB

//
// Event_v2.swift
// Padel Tournament
//
// Created by razmig on 10/03/2024.
//
import Foundation
import LeStorage
import SwiftUI
@Observable
class Event: ModelObject, Storable {
static func resourceName() -> String { return "events" }
var id: String = Store.randomId()
var creator: String?
var club: String?
var creationDate: Date = Date()
var name: String?
//var federalTournamentData: Data?
//var courtCount: Int?
var tenupId: String?
// var groupStageFormat: Int?
// var roundFormat: Int?
// var loserRoundFormat: Int?
//var timeslots ?
internal init(creator: String? = nil, club: String? = nil, name: String? = nil, tenupId: String? = nil) {
self.creator = creator
self.club = club
self.name = name
// self.courtCount = courtCount
self.tenupId = tenupId
// self.groupStageFormat = groupStageFormat
// self.roundFormat = roundFormat
// self.loserRoundFormat = loserRoundFormat
}
var clubObject: Club? {
guard let club else { return nil }
return Store.main.findById(club)
}
var tournaments: [Tournament] {
Store.main.filter { $0.event == self.id }
}
func existingBuild(_ build: any TournamentBuildHolder) -> Tournament? {
tournaments.first(where: { $0.isSameBuild(build) })
}
var courtsUnavailability: [DateInterval] {
Store.main.filter(isIncluded: { $0.event == id })
}
override func deleteDependencies() throws {
try Store.main.deleteDependencies(items: self.tournaments)
try Store.main.deleteDependencies(items: self.courtsUnavailability)
}
}
extension Event {
enum CodingKeys: String, CodingKey {
case _id = "id"
case _creator = "creator"
case _club = "club"
case _creationDate = "creationDate"
case _name = "name"
//case _courtCount = "courtCount"
case _tenupId = "tenupId"
// case _groupStageFormat = "groupStageFormat"
// case _roundFormat = "roundFormat"
// case _loserRoundFormat = "loserRoundFormat"
}
}