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.
53 lines
1.8 KiB
53 lines
1.8 KiB
//
|
|
// MonthData.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 18/04/2024.
|
|
//
|
|
|
|
import Foundation
|
|
import SwiftUI
|
|
import LeStorage
|
|
|
|
@Observable
|
|
class MonthData : ModelObject, Storable {
|
|
|
|
static func resourceName() -> String { return "month-data" }
|
|
|
|
private(set) var id: String = Store.randomId()
|
|
private(set) var monthKey: String
|
|
private(set) var creationDate: Date
|
|
|
|
var maleUnrankedValue: Int? = nil
|
|
var femaleUnrankedValue: Int? = nil
|
|
|
|
init(monthKey: String) {
|
|
self.monthKey = monthKey
|
|
self.creationDate = Date()
|
|
}
|
|
|
|
static func calculateCurrentUnrankedValues(mostRecentDateAvailable: Date) async {
|
|
let lastDataSourceMaleUnranked = await FederalPlayer.lastRank(mostRecentDateAvailable: mostRecentDateAvailable, man: true)
|
|
let lastDataSourceFemaleUnranked = await FederalPlayer.lastRank(mostRecentDateAvailable: mostRecentDateAvailable, man: false)
|
|
|
|
await MainActor.run {
|
|
if let lastDataSource = DataStore.shared.appSettings.lastDataSource {
|
|
let currentMonthData : MonthData = Store.main.filter(isIncluded: { $0.monthKey == lastDataSource }).first ?? MonthData(monthKey: lastDataSource)
|
|
currentMonthData.maleUnrankedValue = lastDataSourceMaleUnranked
|
|
currentMonthData.femaleUnrankedValue = lastDataSourceFemaleUnranked
|
|
try? DataStore.shared.monthData.addOrUpdate(instance: currentMonthData)
|
|
}
|
|
}
|
|
}
|
|
|
|
override func deleteDependencies() throws {
|
|
}
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case _id = "id"
|
|
case _monthKey = "monthKey"
|
|
case _creationDate = "creationDate"
|
|
case _maleUnrankedValue = "maleUnrankedValue"
|
|
case _femaleUnrankedValue = "femaleUnrankedValue"
|
|
}
|
|
}
|
|
|