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.
99 lines
3.0 KiB
99 lines
3.0 KiB
//
|
|
// 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 allWinnersSortedByEvent(realm: Realm, date: Date? = nil) -> [TournamentWinner] {
|
|
|
|
let winners: Results<Result>
|
|
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<Result> = 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
|
|
}
|
|
|
|
static func sortedEvents(realm: Realm, fieldName: String, ascending: Bool) -> [TournamentRepresentable] {
|
|
let tournies = realm.objects(Tournament.self).sorted(byKeyPath: fieldName, ascending: ascending)
|
|
var trs: [TournamentRepresentable] = []
|
|
for tourny in tournies {
|
|
trs.append(TournamentRepresentable(tournament: tourny))
|
|
}
|
|
return trs
|
|
}
|
|
|
|
}
|
|
|