// // Queries.swift // TournamentStats // // Created by Laurent Morvillier on 03/06/2019. // Copyright © 2019 Stax River. All rights reserved. // import Foundation import RealmSwift import Realm class Queries { static func biggestWinners(realm: Realm) -> [CumulatedResults] { let players = realm.objects(Player.self) var crArray: [CumulatedResults] = [] for player in players { crArray.append(CumulatedResults(player: player)) } return crArray.sorted(by: { (cr1, cr2) -> Bool in return cr1.total > cr2.total }) } static func mostCashes(realm: Realm) -> [CumulatedResults] { let players = realm.objects(Player.self) var crArray: [CumulatedResults] = [] for player in players { 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 }) } static func allWinners(realm: Realm, date: Date? = nil) -> [TournamentWinner] { let winners: Results if let day = date { winners = realm.objects(Result.self).filter("rank == 1 && ANY tournaments.date IN %@", [day]) } else { winners = realm.objects(Result.self).filter("rank == 1") } var tws: [TournamentWinner] = [] for w in winners { let tw = TournamentWinner(tournament: w.tournaments.first!, result: w) tws.append(tw) } tws.sort { (tw1, tw2) -> Bool in tw1.tournament.number < tw2.tournament.number } return tws } static func notableCashes(realm: Realm, date: Date) -> [PlayerResult] { let notableCashes: Results = realm.objects(Result.self).filter("player.notable = true && ANY tournaments.date IN %@", [date]) var prs: [PlayerResult] = [] for nc in notableCashes { let pr = PlayerResult(tournament: nc.tournaments.first!, result: nc) prs.append(pr) } prs.sort { (pr1, pr2) -> Bool in if pr1.result.rank == pr2.result.rank { return pr1.result.earnings > pr2.result.earnings } return pr1.result.rank < pr2.result.rank } return prs } }