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.
89 lines
3.5 KiB
89 lines
3.5 KiB
//
|
|
// ReportGenerator.swift
|
|
// TournamentStats
|
|
//
|
|
// Created by Laurent Morvillier on 03/06/2019.
|
|
// Copyright © 2019 Stax River. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import RealmSwift
|
|
import Realm
|
|
|
|
class ReportGenerator {
|
|
|
|
static private let winnersDirectoryName: String = "reports/winners"
|
|
|
|
static func go() {
|
|
|
|
let realm = try! Realm()
|
|
try! realm.write {
|
|
realm.deleteAll()
|
|
}
|
|
|
|
Seed.createTournaments()
|
|
Importer.start()
|
|
ReportGenerator.create()
|
|
|
|
}
|
|
|
|
static func createDirectories() {
|
|
|
|
// Create winners directory if necessary
|
|
if let docDirectory = FileUtils.documentsDirectoryPath {
|
|
let winnersDirectory = docDirectory.appendingPathComponent(winnersDirectoryName)
|
|
var isDir: ObjCBool = true
|
|
if !FileManager.default.fileExists(atPath: winnersDirectory.absoluteString, isDirectory: &isDir) {
|
|
do {
|
|
try FileManager.default.createDirectory(at: winnersDirectory, withIntermediateDirectories: true, attributes: nil)
|
|
} catch {
|
|
print(error)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
static func create() {
|
|
|
|
self.createDirectories()
|
|
|
|
let realm = try! Realm()
|
|
|
|
Queries.biggestWinners(realm: realm).writeHTML(fileName: "reports/earningsLeaderboard.html")
|
|
Queries.mostCashes(realm: realm).writeHTML(fileName: "reports/mostCashes.html", limit: 25)
|
|
|
|
let tournamentWinners = Queries.allWinnersSortedByEvent(realm: realm)
|
|
tournamentWinners.writeHTML(fileName: "reports/allWinners.html", limit: nil)
|
|
tournamentWinners.writeHTML(fileName: "reports/allWinners_top10.html", limit: 10)
|
|
|
|
let tourniesDate = realm.objects(Tournament.self).distinct(by: ["date"])
|
|
|
|
// Individual days
|
|
for tourny in tourniesDate {
|
|
let date = tourny.date
|
|
let fileDate = Formatter.fileDate.string(from: date)
|
|
|
|
let dayWinners = Queries.allWinnersSortedByEvent(realm: realm, date: date)
|
|
dayWinners.writeHTML(fileName: "reports/winners/bracelets_\(fileDate).html")
|
|
|
|
let notableCashes = Queries.notableCashes(realm: realm, date: date)
|
|
notableCashes.writeHTML(fileName: "reports/winners/notables_\(fileDate).html")
|
|
}
|
|
|
|
let tourniesByEntries = Queries.sortedEvents(realm: realm, fieldName: "entries", ascending: false)
|
|
tourniesByEntries.writeHTML(fileName: "reports/tourniesByEntries.html", limit: nil)
|
|
tourniesByEntries.writeHTML(fileName: "reports/tourniesByEntries_top5.html", limit: 5)
|
|
let tourniesByPrizepool = Queries.sortedEvents(realm: realm, fieldName: "prizepool", ascending: false)
|
|
tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool.html", limit: nil)
|
|
tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool_top5.html", limit: 5)
|
|
|
|
Queries.winsByCountry(realm: realm).writeHTML(fileName: "reports/countryWins.html")
|
|
Queries.cashesByCountry(realm: realm).writeHTML(fileName: "reports/countryCashes.html")
|
|
Queries.averageEvent(realm: realm).writeHTML(fileName: "reports/averageEvent.html")
|
|
Queries.mostCashes(realm: realm, notable: true).writeHTML(fileName: "reports/notablesMostCashes.html", limit: nil)
|
|
Queries.averageCash(realm: realm).writeHTML(fileName: "reports/averageCashes.html", limit: 5)
|
|
|
|
}
|
|
|
|
}
|
|
|