From 4225a3b3cb517dcdd7fd0dd1c97426231674165e Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 5 Aug 2019 13:54:27 +0200 Subject: [PATCH] Added most wins --- TournamentStats/report/Queries.swift | 30 ++++++++++++++----- TournamentStats/report/ReportGenerator.swift | 3 +- .../report/structures/CumulatedResults.swift | 4 +++ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/TournamentStats/report/Queries.swift b/TournamentStats/report/Queries.swift index e874ab4..449aabf 100644 --- a/TournamentStats/report/Queries.swift +++ b/TournamentStats/report/Queries.swift @@ -40,7 +40,12 @@ class Queries { }) } - static func mostCashes(realm: Realm, notable: Bool = false) -> [CumulatedResults] { + enum SortBy { + case cashes + case wins + } + + static func mostCashes(realm: Realm, notable: Bool = false, sort: SortBy = .cashes) -> [CumulatedResults] { var players = realm.objects(Player.self) if (notable) { @@ -52,12 +57,22 @@ class Queries { crArray.append(CumulatedResults(player: player)) } - return crArray.sorted(by: { (cr1, cr2) -> Bool in - if cr1.numberOfCashes == cr2.numberOfCashes { - return cr1.total > cr2.total - } - return cr1.numberOfCashes > cr2.numberOfCashes - }) + switch sort { + case .cashes: + return crArray.sorted(by: { (cr1, cr2) -> Bool in + if cr1.numberOfCashes == cr2.numberOfCashes { + return cr1.total > cr2.total + } + return cr1.numberOfCashes > cr2.numberOfCashes + }) + case .wins: + return crArray.sorted(by: { (cr1, cr2) -> Bool in + if cr1.winsCount == cr2.winsCount { + return cr1.numberOfCashes > cr2.numberOfCashes + } + return cr1.winsCount > cr2.winsCount + }) + } } static func allWinnersSortedByEvent(realm: Realm, date: Date? = nil) -> [TournamentWinner] { @@ -261,5 +276,4 @@ class Queries { return games } - } diff --git a/TournamentStats/report/ReportGenerator.swift b/TournamentStats/report/ReportGenerator.swift index 6c3b4a2..6ce24f5 100644 --- a/TournamentStats/report/ReportGenerator.swift +++ b/TournamentStats/report/ReportGenerator.swift @@ -46,6 +46,7 @@ class ReportGenerator { } fileprivate var _biggestWinners: [CumulatedResults] = [] + fileprivate var _mostWins: [CumulatedResults] = [] fileprivate var _mostCashes: [CumulatedResults] = [] fileprivate var _tournamentWinners: [TournamentWinner] = [] fileprivate var _tourniesByEntries: [TournamentRepresentable] = [] @@ -67,6 +68,7 @@ class ReportGenerator { let realm = try! Realm() self._biggestWinners = Queries.biggestWinners(realm: realm) + self._mostWins = Queries.mostCashes(realm: realm, sort: .wins) self._mostCashes = Queries.mostCashes(realm: realm) self._tournamentWinners = Queries.allWinnersSortedByEvent(realm: realm) self._tourniesByEntries = Queries.sortedEvents(realm: realm, fieldName: "entries", ascending: false) @@ -94,7 +96,6 @@ class ReportGenerator { let notableCashes = Queries.notableCashes(realm: realm, date: date) notableCashes.writeHTML(fileName: "reports/winners/notables_\(fileDate).html") } - print("total player count = \(realm.objects(Player.self).count)") // 16203, 16129 diff --git a/TournamentStats/report/structures/CumulatedResults.swift b/TournamentStats/report/structures/CumulatedResults.swift index 82db2be..498cd1d 100644 --- a/TournamentStats/report/structures/CumulatedResults.swift +++ b/TournamentStats/report/structures/CumulatedResults.swift @@ -20,6 +20,7 @@ class CumulatedResults : HTMLRepresentable, ColumnRepresentable { var total: Double = 0.0 var numberOfCashes: Int = 0 var results: [Result] = [] + var winsCount: Int = 0 init(player: Player, average: Bool = false) { self.player = player @@ -36,6 +37,9 @@ class CumulatedResults : HTMLRepresentable, ColumnRepresentable { self.total += result.earnings self.numberOfCashes += 1 self.results.append(result) + if result.rank == 1 { + self.winsCount += 1 + } } static func headers() -> [String] {