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.
94 lines
2.5 KiB
94 lines
2.5 KiB
//
|
|
// Model.swift
|
|
// TournamentStats
|
|
//
|
|
// Created by Laurent Morvillier on 02/06/2019.
|
|
// Copyright © 2019 Stax River. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import RealmSwift
|
|
import Realm
|
|
|
|
class Festival : Object, Named {
|
|
|
|
@objc dynamic var name: String = ""
|
|
let tournaments = List<Tournament>()
|
|
|
|
}
|
|
|
|
class Tournament : Object, Named {
|
|
|
|
@objc dynamic var date: Date = Date()
|
|
@objc dynamic var number: Int = 0
|
|
@objc dynamic var buyin: Int = 0
|
|
@objc dynamic var name: String = ""
|
|
let results = List<Result>()
|
|
|
|
@objc dynamic var prizepool: Double = 0.0
|
|
@objc dynamic var entries: Int = 0
|
|
|
|
static var defaultColumns: [Columns] = [.rank, .player, .earnings, .poy, .city, .state, .country]
|
|
|
|
var rows: [Columns] {
|
|
switch self.number {
|
|
case 1, 10, 32, 39, 47, 55, 53, 57, 68, 81: return [.rank, .player, .earnings, .city, .state, .country]
|
|
default: return Tournament.defaultColumns
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
class Player : Object, Named {
|
|
|
|
@objc dynamic var name: String = ""
|
|
@objc dynamic var city: String?
|
|
@objc dynamic var state: String?
|
|
@objc dynamic var country: String = ""
|
|
@objc dynamic var notable: Bool = false
|
|
|
|
var formattedName: String {
|
|
if let flagoji = Locale.current.flagoji(from: self.country) {
|
|
return "\(flagoji) \(self.name)"
|
|
} else {
|
|
return self.name
|
|
}
|
|
}
|
|
|
|
let results = LinkingObjects(fromType: Result.self, property: "player")
|
|
|
|
}
|
|
|
|
class Result : Object, CSVRepresentable {
|
|
|
|
@objc dynamic var rank: Int = 0
|
|
@objc dynamic var player: Player?
|
|
@objc dynamic var earnings: Double = 0.0
|
|
@objc dynamic var poyPoints: Double = 0.0
|
|
|
|
let tournaments = LinkingObjects(fromType: Tournament.self, property: "results")
|
|
|
|
static func csvHeaders() -> String {
|
|
var strings: [String] = []
|
|
strings.append("Name")
|
|
strings.append("Earnings")
|
|
strings.append("POY Points")
|
|
return strings.joined(separator: ",")
|
|
}
|
|
|
|
func csv() -> String {
|
|
var strings: [String] = []
|
|
|
|
if let name = player?.name {
|
|
strings.append(name)
|
|
}
|
|
if let earnings = Formatter.currency.string(from: NSNumber(value: self.earnings)) {
|
|
strings.append(earnings)
|
|
}
|
|
if let poy = Formatter.currency.string(from: NSNumber(value: self.poyPoints)) {
|
|
strings.append(poy)
|
|
}
|
|
return strings.joined(separator: ",")
|
|
}
|
|
|
|
}
|
|
|