// // 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) } }