// // 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() } 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 tableSize: Int = 0 @objc dynamic var name: String = "" let results = List() @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, 53, 57, 81, 87: return [.rank, .player, .earnings, .city, .state, .country] default: return Tournament.defaultColumns } } var formatted: String { return "\(self.buyin.currencyFormatted) \(self.name) (#\(self.number))" } } 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: ",") } }