From 6c3a2633bdd8de75dd78ba2bfc16997758138601 Mon Sep 17 00:00:00 2001 From: Laurent Date: Sun, 9 Jun 2019 17:10:10 +0200 Subject: [PATCH] updated data + cashes by country --- TournamentStats.xcodeproj/project.pbxproj | 36 +- .../UserInterfaceState.xcuserstate | Bin 74738 -> 90175 bytes TournamentStats/AppDelegate.swift | 16 +- TournamentStats/Events/event14 | 784 +++++++ TournamentStats/Events/event15 | 56 + TournamentStats/Events/event16 | 1911 +++++++++++++++++ TournamentStats/Events/event17 | 700 ++++++ TournamentStats/Events/event4 copie 6 | 0 TournamentStats/Events/event4 copie 7 | 0 TournamentStats/Events/event4 copie 8 | 0 TournamentStats/Events/event4 copie 9 | 0 TournamentStats/NotablePlayers.swift | 4 +- TournamentStats/Seed.swift | 8 +- TournamentStats/UI/MasterViewController.swift | 9 +- TournamentStats/core/Formatters.swift | 13 +- TournamentStats/report/Queries.swift | 20 + TournamentStats/report/ReportGenerator.swift | 16 + .../report/structures/CountryCashes.swift | 40 + 18 files changed, 3580 insertions(+), 33 deletions(-) create mode 100644 TournamentStats/Events/event14 create mode 100644 TournamentStats/Events/event15 create mode 100644 TournamentStats/Events/event16 create mode 100644 TournamentStats/Events/event17 delete mode 100644 TournamentStats/Events/event4 copie 6 delete mode 100644 TournamentStats/Events/event4 copie 7 delete mode 100644 TournamentStats/Events/event4 copie 8 delete mode 100644 TournamentStats/Events/event4 copie 9 create mode 100644 TournamentStats/report/structures/CountryCashes.swift diff --git a/TournamentStats.xcodeproj/project.pbxproj b/TournamentStats.xcodeproj/project.pbxproj index daecf46..0c568bb 100644 --- a/TournamentStats.xcodeproj/project.pbxproj +++ b/TournamentStats.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 4DA5CA1E22AD078A00AC628E /* CountryCashes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */; }; 4DF7608422A3FB96004B0EF1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */; }; 4DF7608622A3FB96004B0EF1 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */; }; 4DF7608822A3FB96004B0EF1 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DF7608722A3FB96004B0EF1 /* DetailViewController.swift */; }; @@ -42,7 +43,7 @@ 4DF7611322A56797004B0EF1 /* event1 copie 7 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760D722A56794004B0EF1 /* event1 copie 7 */; }; 4DF7611422A56797004B0EF1 /* event10 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760D822A56794004B0EF1 /* event10 */; }; 4DF7611522A56797004B0EF1 /* event1 copie 9 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760D922A56794004B0EF1 /* event1 copie 9 */; }; - 4DF7611622A56797004B0EF1 /* event4 copie 7 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760DA22A56794004B0EF1 /* event4 copie 7 */; }; + 4DF7611622A56797004B0EF1 /* event16 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760DA22A56794004B0EF1 /* event16 */; }; 4DF7611722A56797004B0EF1 /* event8 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760DB22A56794004B0EF1 /* event8 */; }; 4DF7611822A56797004B0EF1 /* event2 copie 5 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760DC22A56794004B0EF1 /* event2 copie 5 */; }; 4DF7611922A56797004B0EF1 /* event4 copie 5 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760DD22A56794004B0EF1 /* event4 copie 5 */; }; @@ -59,11 +60,11 @@ 4DF7612422A56797004B0EF1 /* event3 copie 4 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760E822A56795004B0EF1 /* event3 copie 4 */; }; 4DF7612522A56797004B0EF1 /* event3 copie 3 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760E922A56795004B0EF1 /* event3 copie 3 */; }; 4DF7612622A56797004B0EF1 /* event4 copie 4 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EA22A56795004B0EF1 /* event4 copie 4 */; }; - 4DF7612722A56797004B0EF1 /* event4 copie 9 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EB22A56795004B0EF1 /* event4 copie 9 */; }; + 4DF7612722A56797004B0EF1 /* event14 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EB22A56795004B0EF1 /* event14 */; }; 4DF7612822A56797004B0EF1 /* event2 copie 11 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EC22A56795004B0EF1 /* event2 copie 11 */; }; 4DF7612922A56797004B0EF1 /* event3 copie in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760ED22A56795004B0EF1 /* event3 copie */; }; 4DF7612A22A56797004B0EF1 /* event1 copie 8 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EE22A56795004B0EF1 /* event1 copie 8 */; }; - 4DF7612B22A56797004B0EF1 /* event4 copie 8 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EF22A56795004B0EF1 /* event4 copie 8 */; }; + 4DF7612B22A56797004B0EF1 /* event15 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760EF22A56795004B0EF1 /* event15 */; }; 4DF7612C22A56797004B0EF1 /* event5 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760F022A56795004B0EF1 /* event5 */; }; 4DF7612D22A56797004B0EF1 /* event1 copie 11 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760F122A56795004B0EF1 /* event1 copie 11 */; }; 4DF7612E22A56797004B0EF1 /* event12 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760F222A56795004B0EF1 /* event12 */; }; @@ -78,7 +79,7 @@ 4DF7613722A56797004B0EF1 /* event3 copie 11 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FB22A56796004B0EF1 /* event3 copie 11 */; }; 4DF7613822A56797004B0EF1 /* event3 copie 6 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FC22A56796004B0EF1 /* event3 copie 6 */; }; 4DF7613922A56797004B0EF1 /* event1 copie 14 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FD22A56796004B0EF1 /* event1 copie 14 */; }; - 4DF7613A22A56797004B0EF1 /* event4 copie 6 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FE22A56796004B0EF1 /* event4 copie 6 */; }; + 4DF7613A22A56797004B0EF1 /* event17 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FE22A56796004B0EF1 /* event17 */; }; 4DF7613B22A56797004B0EF1 /* event11 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF760FF22A56796004B0EF1 /* event11 */; }; 4DF7613C22A56797004B0EF1 /* event4 copie in Resources */ = {isa = PBXBuildFile; fileRef = 4DF7610022A56796004B0EF1 /* event4 copie */; }; 4DF7613D22A56797004B0EF1 /* event2 copie 12 in Resources */ = {isa = PBXBuildFile; fileRef = 4DF7610122A56796004B0EF1 /* event2 copie 12 */; }; @@ -107,6 +108,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CountryCashes.swift; sourceTree = ""; }; 4DF7608022A3FB96004B0EF1 /* TournamentStats.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TournamentStats.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4DF7608322A3FB96004B0EF1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4DF7608522A3FB96004B0EF1 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = ""; }; @@ -146,7 +148,7 @@ 4DF760D722A56794004B0EF1 /* event1 copie 7 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event1 copie 7"; sourceTree = ""; }; 4DF760D822A56794004B0EF1 /* event10 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event10; sourceTree = ""; }; 4DF760D922A56794004B0EF1 /* event1 copie 9 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event1 copie 9"; sourceTree = ""; }; - 4DF760DA22A56794004B0EF1 /* event4 copie 7 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 7"; sourceTree = ""; }; + 4DF760DA22A56794004B0EF1 /* event16 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event16; sourceTree = ""; }; 4DF760DB22A56794004B0EF1 /* event8 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event8; sourceTree = ""; }; 4DF760DC22A56794004B0EF1 /* event2 copie 5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event2 copie 5"; sourceTree = ""; }; 4DF760DD22A56794004B0EF1 /* event4 copie 5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 5"; sourceTree = ""; }; @@ -163,11 +165,11 @@ 4DF760E822A56795004B0EF1 /* event3 copie 4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event3 copie 4"; sourceTree = ""; }; 4DF760E922A56795004B0EF1 /* event3 copie 3 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event3 copie 3"; sourceTree = ""; }; 4DF760EA22A56795004B0EF1 /* event4 copie 4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 4"; sourceTree = ""; }; - 4DF760EB22A56795004B0EF1 /* event4 copie 9 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 9"; sourceTree = ""; }; + 4DF760EB22A56795004B0EF1 /* event14 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event14; sourceTree = ""; }; 4DF760EC22A56795004B0EF1 /* event2 copie 11 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event2 copie 11"; sourceTree = ""; }; 4DF760ED22A56795004B0EF1 /* event3 copie */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event3 copie"; sourceTree = ""; }; 4DF760EE22A56795004B0EF1 /* event1 copie 8 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event1 copie 8"; sourceTree = ""; }; - 4DF760EF22A56795004B0EF1 /* event4 copie 8 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 8"; sourceTree = ""; }; + 4DF760EF22A56795004B0EF1 /* event15 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event15; sourceTree = ""; }; 4DF760F022A56795004B0EF1 /* event5 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event5; sourceTree = ""; }; 4DF760F122A56795004B0EF1 /* event1 copie 11 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event1 copie 11"; sourceTree = ""; }; 4DF760F222A56795004B0EF1 /* event12 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event12; sourceTree = ""; }; @@ -182,7 +184,7 @@ 4DF760FB22A56796004B0EF1 /* event3 copie 11 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event3 copie 11"; sourceTree = ""; }; 4DF760FC22A56796004B0EF1 /* event3 copie 6 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event3 copie 6"; sourceTree = ""; }; 4DF760FD22A56796004B0EF1 /* event1 copie 14 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event1 copie 14"; sourceTree = ""; }; - 4DF760FE22A56796004B0EF1 /* event4 copie 6 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie 6"; sourceTree = ""; }; + 4DF760FE22A56796004B0EF1 /* event17 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event17; sourceTree = ""; }; 4DF760FF22A56796004B0EF1 /* event11 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = event11; sourceTree = ""; }; 4DF7610022A56796004B0EF1 /* event4 copie */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event4 copie"; sourceTree = ""; }; 4DF7610122A56796004B0EF1 /* event2 copie 12 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "event2 copie 12"; sourceTree = ""; }; @@ -349,10 +351,10 @@ 4DF760DF22A56794004B0EF1 /* event4 copie 3 */, 4DF760EA22A56795004B0EF1 /* event4 copie 4 */, 4DF760DD22A56794004B0EF1 /* event4 copie 5 */, - 4DF760FE22A56796004B0EF1 /* event4 copie 6 */, - 4DF760DA22A56794004B0EF1 /* event4 copie 7 */, - 4DF760EF22A56795004B0EF1 /* event4 copie 8 */, - 4DF760EB22A56795004B0EF1 /* event4 copie 9 */, + 4DF760FE22A56796004B0EF1 /* event17 */, + 4DF760DA22A56794004B0EF1 /* event16 */, + 4DF760EF22A56795004B0EF1 /* event15 */, + 4DF760EB22A56795004B0EF1 /* event14 */, 4DF760F022A56795004B0EF1 /* event5 */, 4DF7610322A56797004B0EF1 /* event6 */, 4DF760D022A56793004B0EF1 /* event7 */, @@ -401,6 +403,7 @@ 4DF7614922A66675004B0EF1 /* TournamentWinner.swift */, 4DF7614E22A6CF93004B0EF1 /* PlayerResult.swift */, 4DF7615022A7AECA004B0EF1 /* TournamentRepresentable.swift */, + 4DA5CA1D22AD078A00AC628E /* CountryCashes.swift */, ); path = structures; sourceTree = ""; @@ -495,11 +498,11 @@ 4DF7613F22A56797004B0EF1 /* event6 in Resources */, 4DF7613022A56797004B0EF1 /* event2 copie 10 in Resources */, 4DF7609022A3FB98004B0EF1 /* LaunchScreen.storyboard in Resources */, - 4DF7612B22A56797004B0EF1 /* event4 copie 8 in Resources */, + 4DF7612B22A56797004B0EF1 /* event15 in Resources */, 4DF7608D22A3FB98004B0EF1 /* Assets.xcassets in Resources */, 4DF7613722A56797004B0EF1 /* event3 copie 11 in Resources */, 4DF7611922A56797004B0EF1 /* event4 copie 5 in Resources */, - 4DF7612722A56797004B0EF1 /* event4 copie 9 in Resources */, + 4DF7612722A56797004B0EF1 /* event14 in Resources */, 4DF760B522A47F6D004B0EF1 /* event2 in Resources */, 4DF7614222A56797004B0EF1 /* event3 copie 5 in Resources */, 4DF7613B22A56797004B0EF1 /* event11 in Resources */, @@ -513,7 +516,7 @@ 4DF7610C22A56797004B0EF1 /* event7 in Resources */, 4DF7613122A56797004B0EF1 /* event1 copie 4 in Resources */, 4DF7610E22A56797004B0EF1 /* event2 copie 14 in Resources */, - 4DF7611622A56797004B0EF1 /* event4 copie 7 in Resources */, + 4DF7611622A56797004B0EF1 /* event16 in Resources */, 4DF7611C22A56797004B0EF1 /* event3 copie 7 in Resources */, 4DF7611022A56797004B0EF1 /* event9 in Resources */, 4DF7613E22A56797004B0EF1 /* event1 copie 5 in Resources */, @@ -539,7 +542,7 @@ 4DF7612E22A56797004B0EF1 /* event12 in Resources */, 4DF7612222A56797004B0EF1 /* event1 copie 13 in Resources */, 4DF7611122A56797004B0EF1 /* event3 copie 12 in Resources */, - 4DF7613A22A56797004B0EF1 /* event4 copie 6 in Resources */, + 4DF7613A22A56797004B0EF1 /* event17 in Resources */, 4DF7612022A56797004B0EF1 /* event3 copie 14 in Resources */, 4DF7614122A56797004B0EF1 /* event2 copie 9 in Resources */, 4DF7613D22A56797004B0EF1 /* event2 copie 12 in Resources */, @@ -606,6 +609,7 @@ 4DF7614F22A6CF93004B0EF1 /* PlayerResult.swift in Sources */, 4DF7614622A59407004B0EF1 /* CumulatedResults.swift in Sources */, 4DF760BF22A560AA004B0EF1 /* FileWriter.swift in Sources */, + 4DA5CA1E22AD078A00AC628E /* CountryCashes.swift in Sources */, 4DF760BC22A5270E004B0EF1 /* Queries.swift in Sources */, 4DF760BA22A524F4004B0EF1 /* Formatters.swift in Sources */, 4DF7614D22A6CC0D004B0EF1 /* NotablePlayers.swift in Sources */, diff --git a/TournamentStats.xcodeproj/project.xcworkspace/xcuserdata/laurent.xcuserdatad/UserInterfaceState.xcuserstate b/TournamentStats.xcodeproj/project.xcworkspace/xcuserdata/laurent.xcuserdatad/UserInterfaceState.xcuserstate index b3f91778d14d65f814809529e035da5308913e0c..dd146dee29e361a76bb5031d779b71c0e40758eb 100644 GIT binary patch literal 90175 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 O+yArI|EQ_yaQz=)PHP1K diff --git a/TournamentStats/AppDelegate.swift b/TournamentStats/AppDelegate.swift index 9f2c4a7..f9901c7 100644 --- a/TournamentStats/AppDelegate.swift +++ b/TournamentStats/AppDelegate.swift @@ -31,16 +31,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele var config = Realm.Configuration() config.deleteRealmIfMigrationNeeded = true - Realm.Configuration.defaultConfiguration = config + Realm.Configuration.defaultConfiguration = config - let realm = try! Realm() - try! realm.write { - realm.deleteAll() - } - - Seed.createTournaments() - Importer.start() - ReportGenerator.create() +// let map = NSLocale.isoCountryCodes.map { (cc) -> (String, String) in +// return (cc, NSLocale.current.localizedString(forRegionCode: cc)!) +// } +// print("cc = \(map)") + + ReportGenerator.go() return true } diff --git a/TournamentStats/Events/event14 b/TournamentStats/Events/event14 new file mode 100644 index 0000000..be32a97 --- /dev/null +++ b/TournamentStats/Events/event14 @@ -0,0 +1,784 @@ +1 +BrazilMurilo Figueredo +$207,003 +1,001.7 +Penha +- +Brazil +2 +United StatesJason Stockfish +$127,932 +500.9 +Las Vegas +NV +United States +3 +United StatesGary Kosakowski +$89,730 +450.8 +Newark +NJ +United States +4 +United StatesPhillip Hui +$63,860 +400.7 +San Antonio +TX +United States +5 +United StatesChris Klodnicki +$46,127 +375.7 +Philadelphia +PA +United States +6 +UkraineAlex Dovzhenko +$33,822 +350.6 +Kiev +- +Ukraine +7 +United StatesJoe Aronesty +$25,181 +300.5 +Miami Beach +FL +United States +8 +United StatesDanny Woolard +$19,040 +275.5 +Ventura +CA +United States +9 +United StatesJason Acosta +$14,625 +250.4 +Little Ferry +NJ +United States +10 +United StatesKeith Sexton +$14,625 +200.3 +Henderson +NV +United States +11 +AustraliaAshish Gupta +$11,415 +200.3 +Melbourne +- +Australia +12 +BelgiumLaurent Manderlier +$11,415 +200.3 +- +- +Belgium +13 +Russian FederationSergey Altbregin +$9,056 +200.3 +St Petersburg +- +Russian Federation +14 +United StatesMark Gregorich +$9,056 +200.3 +Las Vegas +NV +United States +15 +ChinaYueqi Zhu +$7,303 +200.3 +Benxi +- +China +16 +United StatesRon Ware +$7,303 +200.3 +Las Vegas +NV +United States +17 +United StatesAndre Ching +$5,990 +200.3 +Las Vegas +NV +United States +18 +CanadaBradley Smith +$5,990 +200.3 +Thornhill +ON +Canada +19 +United StatesValentin Vornicu +$5,990 +200.3 +San Diego +CA +United States +20 +United StatesTony Ma +$5,990 +200.3 +South El Monte +CA +United States +21 +United StatesDavid Brown +$5,990 +200.3 +Jackson +TN +United States +22 +United StatesMichael Gamerman +$5,990 +200.3 +Foxborough +MA +United States +23 +SpainRaul Paez +$5,990 +200.3 +Barbara Del Valle +- +Spain +24 +United StatesDaniel Brecht-Haddad +$5,990 +200.3 +Seattle +WA +United States +25 +United StatesCarlos Chadha-Villamarin +$4,997 +200.3 +Lexington +KY +United States +26 +BrazilAndre Akkari +$4,997 +200.3 +Sao Paulo +- +Brazil +27 +United StatesAlex Ferrari +$4,997 +200.3 +Los Angeles +CA +United States +28 +United StatesTimothy Raines +$4,997 +200.3 +Montague +MA +United States +29 +United StatesAnthony Zinno +$4,997 +200.3 +Boston +MA +United States +30 +United StatesTed Woolridge +$4,997 +200.3 +San Diego +CA +United States +31 +United StatesDJ Buckley +$4,997 +100.2 +Eden Prairie +MN +United States +32 +United StatesThomas Walter +$4,997 +100.2 +Hallandale Beach +FL +United States +33 +United StatesChris Tryba +$4,242 +100.2 +Evergreen +CO +United States +34 +United StatesOliver Vereschagin +$4,242 +100.2 +West Hollywood +CA +United States +35 +JapanTamon Nakamura +$4,242 +100.2 +Tokyo +- +Japan +36 +United StatesHrair Danielyan +$4,242 +100.2 +Sunland +CA +United States +37 +United StatesRalph Perry +$4,242 +100.2 +Las Vegas +NV +United States +38 +United StatesKevin Gerhart +$4,242 +100.2 +Las Vegas +NV +United States +39 +United StatesDavid Bach +$4,242 +100.2 +Athens +GA +United States +40 +United StatesBarry Levy +$4,242 +100.2 +Brooklyn +NY +United States +41 +United StatesDavid Brookshire +$3,666 +100.2 +Baltimore +MD +United States +42 +FranceDamien Rivier +$3,666 +100.2 +St Denis De L Hotel +- +France +43 +United StatesWalter Twardus +$3,666 +100.2 +Newark +DE +United States +44 +United StatesRolando Lozano +$3,666 +100.2 +Channelview +TX +United States +45 +United StatesJeffrey Foreman +$3,666 +100.2 +Albuquerque +NM +United States +46 +United StatesShane Douglas +$3,666 +100.2 +Priest River +ID +United States +47 +United StatesDaniel Zack +$3,666 +100.2 +Princeton +NJ +United States +48 +United StatesRichard Bai +$3,666 +100.2 +Schaumburg +IL +United States +49 +United StatesJeffrey Mitseff +$3,225 +100.2 +Portland +OR +United States +50 +United StatesGregory Smith +$3,225 +100.2 +Everett +WA +United States +51 +United StatesDaniel Ratigan +$3,225 +100.2 +Seattle +WA +United States +52 +United StatesMike Epstein +$3,225 +100.2 +Las Vegas +NV +United States +53 +United StatesRussell Fox +$3,225 +100.2 +Irvine +CA +United States +54 +CanadaJason Bigelow +$3,225 +100.2 +St Johns +NL +Canada +55 +United StatesJim Collopy +$3,225 +100.2 +Washington +MD +United States +56 +United StatesJean Gaspard +$3,225 +100.2 +Evanston +IL +United States +57 +BrazilMarcos Rogerio De Siqueira +$2,889 +100.2 +- +- +Brazil +58 +BrazilManoel Filho +$2,889 +100.2 +Rio De Janeiro +- +Brazil +59 +United StatesMatt Savage +$2,889 +100.2 +South San Francisco +CA +United States +60 +United StatesBill Tracy +$2,889 +100.2 +East Meadow +NY +United States +61 +United StatesDavid Prager +$2,889 +100.2 +New York +NY +United States +62 +United StatesColin Mchugh +$2,889 +50.1 +Las Vegas +NV +United States +63 +United StatesEdward Nassif +$2,889 +50.1 +Ames +IA +United States +64 +United StatesDouglas Redmann +$2,889 +50.1 +N Barrington +IL +United States +65 +United StatesBentley Roberts +$2,638 +50.1 +Lexington +KY +United States +66 +United StatesJonathan Miller +$2,638 +50.1 +Collingswood +NJ +United States +67 +United StatesArata Ogawa +$2,638 +50.1 +- +- +United States +68 +AustriaIvo Donev +$2,638 +50.1 +Lochau +- +Austria +69 +United StatesKenneth Po +$2,638 +50.1 +Seven Hills +OH +United States +70 +United StatesMichael Moore +$2,638 +50.1 +Agar +SD +United States +71 +United StatesBlake Cahail +$2,638 +50.1 +Kansas City +MO +United States +72 +United StatesMark Castagnini +$2,638 +50.1 +Walnut Creek +CA +United States +73 +United StatesTodd Ickow +$2,454 +50.1 +Valparaiso +IN +United States +74 +United StatesAaron Klausman +$2,454 +50.1 +Birmingham +AL +United States +75 +United StatesChris Wallace +$2,454 +50.1 +Saint Paul +MN +United States +76 +United StatesDoug Saab +$2,454 +50.1 +Trussville +AL +United States +77 +United StatesRyan Beckwith +$2,454 +50.1 +Stoughton +WI +United States +78 +United StatesAlan Leach +$2,454 +50.1 +Fort Worth +TX +United States +79 +United StatesKevin Johnson +$2,454 +50.1 +Bartlett +TN +United States +80 +United StatesJames Pritchard +$2,454 +50.1 +Dacula +GA +United States +81 +United StatesDavid Olson +$2,328 +50.1 +Dallas +TX +United States +82 +United StatesMatt Grapenthien +$2,328 +50.1 +Chicago +IL +United States +83 +United StatesGeorge Fountoulakis +$2,328 +50.1 +Stuart +FL +United States +84 +United StatesCarol Fuchs +$2,328 +50.1 +Los Angeles +CA +United States +85 +United StatesWilliam Anderson +$2,328 +50.1 +Missoula +MT +United States +86 +United StatesLena Wang +$2,328 +50.1 +Foster City +CA +United States +87 +United StatesDavid "ODB" Baker +$2,328 +50.1 +Sahuarita +AZ +United States +88 +United StatesWilliam Shelton +$2,328 +50.1 +Gilbert +AZ +United States +89 +United StatesAnthony Mender +$2,328 +50.1 +Las Vegas +NV +United States +90 +United StatesDon Zewin +$2,328 +50.1 +Las Vegas +NV +United States +91 +United StatesRafael Concepcion +$2,328 +50.1 +Las Vegas +- +United States +92 +United StatesChris Ferguson +$2,328 +50.1 +Las Vegas +NV +United States +93 +United StatesAdam Friedman +$2,328 +50.1 +Gahanna +OH +United States +94 +AustriaAlexander Freund +$2,328 +50.1 +- +- +Austria +95 +United StatesHernan Salazar +$2,328 +50.1 +Las Vegas +NV +United States +96 +United StatesScott Bohlman +$2,328 +50.1 +Lemont +IL +United States +97 +United StatesJimmy Fricke +$2,253 +50.1 +Las Vegas +NV +United States +98 +CanadaRonny Der +$2,253 +50.1 +Edmonton +AB +Canada +99 +United StatesNicolas Milgrom +$2,253 +50.1 +Woodland Hills +CA +United States +100 +United StatesDaniel Spear +$2,253 +50.1 +Newtown Sq +PA +United States +101 +United StatesCarol Kline +$2,253 +50.1 +Las Vegas +NV +United States +102 +United StatesAshton Berner +$2,253 +50.1 +Henderson +NV +United States +103 +United StatesJay Johnson +$2,253 +50.1 +San Bernardino +CA +United States +104 +United StatesEdwin Eng +$2,253 +50.1 +Boulder +CO +United States +105 +United StatesBrian Tamplen +$2,253 +50.1 +Houston +TX +United States +106 +United StatesBrian Ballentine +$2,253 +50.1 +Liverpool +NY +United States +107 +BrazilJose Arenstein +$2,253 +50.1 +Sao Paulo +- +Brazil +108 +United StatesNorman Graves +$2,253 +50.1 +Houston +TX +United States +109 +United StatesJohn Evans +$2,253 +50.1 +Granbury +TX +United States +110 +United StatesBradley Helm +$2,253 +50.1 +Scottsdale +AZ +United States +111 +SwedenMikael Gronvik +$2,253 +50.1 +Ekero +- +Sweden +112 +United StatesDavid Jacobs +$2,253 +50.1 +Boynton Beach +FL +United States diff --git a/TournamentStats/Events/event15 b/TournamentStats/Events/event15 new file mode 100644 index 0000000..24e13c0 --- /dev/null +++ b/TournamentStats/Events/event15 @@ -0,0 +1,56 @@ +1 +United StatesSean Swingruber +$186,356 +1,006.5 +Venice +CA +United States +2 +United StatesBen Yu +$115,174 +503.2 +Las Vegas +NV +United States +3 +United StatesCord Garcia +$73,333 +427.7 +Houston +TX +United States +4 +United StatesKeith Lehr +$73,333 +427.7 +Bossier City +LA +United States +5 +United StatesJimmy D'Ambrosio +$31,151 +327.1 +Mundelein +IL +United States +6 +United StatesJake Schindler +$31,151 +327.1 +Philadelphia +PA +United States +7 +CanadaKristen Bicknell +$31,151 +327.1 +Nepean +ON +Canada +8 +AustriaMatthias Eibinger +$31,151 +327.1 +Graz +- +Austria diff --git a/TournamentStats/Events/event16 b/TournamentStats/Events/event16 new file mode 100644 index 0000000..b23fe51 --- /dev/null +++ b/TournamentStats/Events/event16 @@ -0,0 +1,1911 @@ +1 +United StatesIsaac Baron +$407,739 +1,119.8 +Menlo Park +CA +United States +2 +SingaporeOng Dingxiang +$251,937 +559.9 +Singapore +- +Singapore +3 +United StatesStephen Graner +$177,085 +503.9 +Henderson +NV +United States +4 +United StatesJames Hughes +$126,011 +447.9 +Miami +FL +United States +5 +United KingdomRichard Hasnip +$90,791 +419.9 +- +- +United Kingdom +6 +United StatesCameron Marshall +$66,243 +391.9 +Port Orange +FL +United States +7 +United StatesPierce Mckellar +$48,954 +336.0 +Phoenix +AZ +United States +8 +FranceNicolas Careme +$48,954 +308.0 +Auxerre +- +France +9 +FranceRomain Nussmann +$36,647 +280.0 +Saint Martian Re Vimoux +- +France +10 +United StatesHenry Lu +$36,647 +224.0 +Brooklyn +NY +United States +11 +United StatesRyan Brown +$27,796 +224.0 +Woodstock +GA +United States +12 +United StatesNicholas Dolen +$27,796 +224.0 +San Francisco +CA +United States +13 +United StatesDane Tallen +$21,364 +224.0 +Wallsend +- +United States +14 +ChinaLinglin Zeng +$21,364 +224.0 +- +- +China +15 +UkraineVadim Shlez +$21,364 +224.0 +- +- +Ukraine +16 +United StatesKainalu Mccue-Unciano +$21,364 +224.0 +Las Vegas +NV +United States +17 +United StatesMarc Robinson +$21,364 +224.0 +Los Angeles +CA +United States +18 +DenmarkRonni Borg +$21,364 +224.0 +Silkeborg +- +Denmark +19 +United StatesMichael Gagliano +$16,643 +224.0 +Rockaway +NJ +United States +20 +GermanyHans Joachim Hein +$16,643 +224.0 +Sehnde +- +Germany +21 +United StatesThomas Fuller +$16,643 +224.0 +Boulder +CO +United States +22 +United StatesErkut Yilmaz +$16,643 +224.0 +Fair Oaks +CA +United States +23 +United StatesDaniel Podheiser +$16,643 +224.0 +Brighton +MA +United States +24 +HungaryMarton Czuczor +$16,643 +224.0 +Budapest +- +Hungary +25 +UkrainePavlo Veksler +$13,143 +224.0 +Kiev +- +Ukraine +26 +CanadaStuart Taylor +$13,143 +224.0 +- +QC +Canada +27 +SlovakiaRobert Baluska +$13,143 +224.0 +Trnava +- +Slovakia +28 +United StatesMark Morris +$13,143 +224.0 +Spring Lake +MI +United States +29 +United StatesArkadi Onikoul +$13,143 +224.0 +Woodland Hills +CA +United States +30 +United StatesRoman Valerstein +$13,143 +224.0 +Newtown +PA +United States +31 +United StatesDanny Illingworth +$10,523 +224.0 +Carlsbad +CA +United States +32 +FranceJohan Guilbert +$10,523 +224.0 +Sarreguemines +- +France +33 +United StatesMichael Sneideman +$10,523 +224.0 +Oceanside +CA +United States +34 +SingaporeAlex Lee Xiang Wei +$10,523 +224.0 +Singapore +- +Singapore +35 +United StatesWilliam Derrick +$10,523 +224.0 +Tucson +AZ +United States +36 +United StatesJames Romero +$10,523 +224.0 +Las Vegas +NV +United States +37 +United StatesLachezar Petkov +$8,545 +224.0 +- +- +United States +38 +United StatesAndrew Moreno +$8,545 +224.0 +Las Vegas +NV +United States +39 +United KingdomDaniel Wendorf +$8,545 +224.0 +- +- +United Kingdom +40 +MexicoVictor Suarez +$8,545 +224.0 +Zapopan Jalisco +- +Mexico +41 +United StatesMichael Rossitto +$8,545 +224.0 +Brooklyn +NY +United States +42 +United StatesTaylor Pollard +$8,545 +224.0 +Concord +CA +United States +43 +United StatesJeremy Menard +$7,037 +224.0 +Raleigh +NC +United States +44 +CanadaChanracy Khun +$7,037 +224.0 +Laval +QC +Canada +45 +IsraelUri Reichenstein +$7,037 +224.0 +Tel Aviv +- +Israel +46 +Russian FederationDmitry Yurasov +$7,037 +224.0 +Moscow +- +Russian Federation +47 +United StatesTyler Cornell +$7,037 +224.0 +San Clemente +CA +United States +48 +United StatesMarcello Azevedo +$7,037 +224.0 +Las Vegas +NV +United States +49 +MacauIan Waldron +$5,880 +224.0 +Macau +- +Macau +50 +United StatesNathan Pitts +$5,880 +224.0 +Woodstock +GA +United States +51 +SpainAdrian Mateos +$5,880 +224.0 +Madrid +- +Spain +52 +United StatesAndrew Ostapchenko +$5,880 +224.0 +Carlsbad +CA +United States +53 +United StatesZachary Humphrey +$5,880 +224.0 +Kirkland +WA +United States +54 +GreeceAlexandros Theologis +$5,880 +224.0 +Thessaloniki +- +Greece +55 +United StatesJavier Icaza +$4,985 +224.0 +Truesdale +MO +United States +56 +United StatesChris Johnson +$4,985 +224.0 +Las Vegas +NV +United States +57 +PhilippinesMike Takayama +$4,985 +224.0 +Mandalvyn +- +Philippines +58 +United StatesBrady Osterman +$4,985 +224.0 +Mesa +AZ +United States +59 +United StatesDoug Morgan +$4,985 +224.0 +Pinole +CA +United States +60 +HungaryParis Bence +$4,985 +224.0 +Budapest +- +Hungary +61 +South KoreaYohwan Lim +$4,985 +224.0 +- +- +South Korea +62 +ArgentinaMaximiliano Gallardo +$4,985 +224.0 +- +- +Argentina +63 +United StatesEric Christensen +$4,985 +224.0 +State College +PA +United States +64 +United StatesJustin Adams +$4,985 +112.0 +Fairfield +CT +United States +65 +FranceGeoffrey Tisserand +$4,985 +112.0 +- +- +France +66 +United StatesMans Montgomery +$4,985 +112.0 +Boise +ID +United States +67 +United StatesKyle Shigano +$4,290 +112.0 +Pearl City +HI +United States +68 +United StatesEugene Tung +$4,290 +112.0 +Camden Point +MO +United States +69 +United StatesJoshua Atkinson +$4,290 +112.0 +Mc Bee +SC +United States +70 +United StatesJames Duke +$4,290 +112.0 +Houston +TX +United States +71 +GermanyWojciech Barzantny +$4,290 +112.0 +Kaiserslautern +- +Germany +72 +ChinaQuan Zhou +$4,290 +112.0 +- +- +China +73 +United StatesJohn Amato +$4,290 +112.0 +Houston +TX +United States +74 +United StatesBlake Boris-Schacter +$4,290 +112.0 +Newton Center +MA +United States +75 +United StatesAsher Conniff +$4,290 +112.0 +Brooklyn +NY +United States +76 +United StatesJason Brauda +$4,290 +112.0 +Matthews +NC +United States +77 +United StatesMorgan Machina +$4,290 +112.0 +Mission Viejo +CA +United States +78 +United StatesNipun Java +$4,290 +112.0 +Northridge +CA +United States +79 +United StatesGutierrez Zachary +$3,748 +112.0 +Denver +CO +United States +80 +United StatesBrian Yoon +$3,748 +112.0 +Las Vegas +NV +United States +81 +United StatesAllen Chang +$3,748 +112.0 +Brooklyn +NY +United States +82 +United StatesAnna Antimony +$3,748 +112.0 +Fort Lee +NJ +United States +83 +United StatesJonathan Borenstein +$3,748 +112.0 +Teaneck +NJ +United States +84 +United StatesRittie Chuaprasert +$3,748 +112.0 +Portland +OR +United States +85 +United StatesArkan Dawoud +$3,748 +112.0 +Brooklyn +NY +United States +86 +United StatesBenjamin Zamani +$3,748 +112.0 +Boca Raton +FL +United States +87 +CanadaSammy Lafleur +$3,748 +112.0 +Shawinigan +QB +Canada +88 +United StatesGerald Tejada +$3,748 +112.0 +Los Angeles +CA +United States +89 +United StatesGreg Dyer +$3,748 +112.0 +Minneapolis +MN +United States +90 +United StatesRaymond Henson +$3,748 +112.0 +Spring +TX +United States +91 +United KingdomPablo Fernandez Campo +$3,325 +112.0 +London +- +United Kingdom +92 +IrelandAidan Hynes +$3,325 +112.0 +- +- +Ireland +93 +United StatesAdam Brant +$3,325 +112.0 +Bend +OR +United States +94 +BelgiumWim Ben Verhaegen +$3,325 +112.0 +Mechelen +- +Belgium +95 +United StatesVincent Moscati +$3,325 +112.0 +Verplanck +NY +United States +96 +United StatesTyler Huculak +$3,325 +112.0 +Mission Viejo +CA +United States +97 +United KingdomBen Farrell +$3,325 +112.0 +- +- +United Kingdom +98 +FranceArthur Conan +$3,325 +112.0 +Painpol +- +France +99 +United StatesPunal Patel +$3,325 +112.0 +San Jose +CA +United States +100 +United StatesMike Linster +$3,325 +112.0 +Island Park +NY +United States +101 +United StatesJacob Powers +$3,325 +112.0 +Brigham City +UT +United States +102 +TaiwanTerry Fan +$3,325 +112.0 +Taipei +- +Taiwan +103 +United StatesJose Pena +$3,325 +112.0 +Methuen +MA +United States +104 +United StatesJordan Cristos +$3,325 +112.0 +Palmdale +CA +United States +105 +ChinaJia Tang +$3,325 +112.0 +Cheng Du +- +China +106 +United StatesJames Edminister +$3,325 +112.0 +Fairlawn +OH +United States +107 +United StatesAmir Mirrasouli +$3,325 +112.0 +Santa Ana +CA +United States +108 +United StatesDavid Mowery +$3,325 +112.0 +Delavan +WI +United States +109 +United StatesVictor Figueroa +$2,995 +112.0 +Miami Beach +FL +United States +110 +United StatesMichael Mccarthy +$2,995 +112.0 +Levittown +NY +United States +111 +United StatesTimothy Morrin +$2,995 +112.0 +Toledo +OH +United States +112 +United StatesPaul Strohm +$2,995 +112.0 +Kansas City +MO +United States +113 +United StatesPatrick Mitchell +$2,995 +112.0 +Carlsbad +CA +United States +114 +United StatesRobert Defabrizio +$2,995 +112.0 +Mesa +AZ +United States +115 +AustraliaMartin Kozlov +$2,995 +112.0 +Lysterfield +- +Australia +116 +United StatesHunter Cichy +$2,995 +112.0 +Coon Rapids +MN +United States +117 +United StatesHunter Frey +$2,995 +112.0 +Houston +TX +United States +118 +United StatesAnatoly Filatov +$2,995 +112.0 +Blue Point +NY +United States +119 +United StatesFarhad Davoudzadeh +$2,995 +112.0 +Palmdale +CA +United States +120 +GermanyDaniel Melten +$2,995 +112.0 +Brighton +- +Germany +121 +United StatesAlex Queen +$2,995 +112.0 +Bethlehem +PA +United States +122 +FranceGuy Pariente +$2,995 +112.0 +- +- +France +123 +United StatesRalph Wong +$2,995 +112.0 +West Chester +PA +United States +124 +United StatesKunuk Shin +$2,995 +112.0 +Saratoga +CA +United States +125 +United StatesBlaine Statham +$2,995 +112.0 +Sunnyvale +TX +United States +126 +FranceGregory Guagnini +$2,995 +112.0 +Brussels +- +France +127 +United StatesIbrahim Naim +$2,742 +112.0 +Simi Valley +CA +United States +128 +AustriaPatrick Berger +$2,742 +112.0 +Austria +- +Austria +129 +ChinaWeiyi Zhang +$2,742 +112.0 +Chengdu +- +China +130 +United StatesVahan Sudzhyan +$2,742 +112.0 +Los Angeles +CA +United States +131 +United StatesMarquis Mccain +$2,742 +112.0 +Tyler +TX +United States +132 +United StatesTimothy Miles +$2,742 +112.0 +Miami Beach +FL +United States +133 +United StatesStuart Robinson +$2,742 +112.0 +Los Angeles +CA +United States +134 +United StatesChristopher Brewer +$2,742 +112.0 +Eugene +OR +United States +135 +United StatesMatthew Gloier +$2,742 +112.0 +Santa Clara +CA +United States +136 +CanadaStephen Cartner +$2,742 +112.0 +Whistler +BC +Canada +137 +AustraliaHeidi May +$2,742 +112.0 +Hobart +- +Australia +138 +Czech RepublicJiri Kocab +$2,742 +112.0 +- +- +Czech Republic +139 +United KingdomAndrew Wilson +$2,742 +112.0 +Bolton +- +United Kingdom +140 +United StatesKelly Wolfe +$2,742 +112.0 +Cincinnati +OH +United States +141 +BulgariaMartin Stoyanov +$2,742 +112.0 +Pernik +- +Bulgaria +142 +IndiaAshish Ahuja +$2,742 +112.0 +Chandigarm +- +India +143 +United StatesMetin Aksoy +$2,742 +56.0 +Brooklyn +NY +United States +144 +DenmarkMorten Mortensen +$2,742 +56.0 +Copenhagen +- +Denmark +145 +PortugalGiovani Torre +$2,550 +56.0 +Funchal +- +Portugal +146 +United StatesGabriel Luchetta +$2,550 +56.0 +Golden +CO +United States +147 +TurkeyOnur Unsal +$2,550 +56.0 +Cyprus +- +Turkey +148 +ArgentinaLeonardo Daviglus +$2,550 +56.0 +- +- +Argentina +150 +AustriaAdrian Apmann +$2,550 +56.0 +Vienna +- +Austria +151 +United StatesAlan Bittikofer +$2,550 +56.0 +Dublin +CA +United States +152 +ItalyDario Sammartino +$2,550 +56.0 +Nova Gorica +- +Italy +153 +United StatesBenjamin Ledesma +$2,550 +56.0 +Pasco +WA +United States +154 +United StatesAlberto Hooker +$2,550 +56.0 +Sylva +NC +United States +155 +United StatesDavid Laufer +$2,550 +56.0 +Saylorsburg +PA +United States +156 +United StatesJoe Kuether +$2,550 +56.0 +Elm Grove +WI +United States +157 +United StatesJerry Payne +$2,550 +56.0 +Centerville +OH +United States +158 +United StatesDavid Dibernardi +$2,550 +56.0 +Tampa +FL +United States +159 +FranceIvan Deyra +$2,550 +56.0 +Le Teich +- +France +160 +United StatesSteven Harper +$2,550 +56.0 +Portland +OR +United States +161 +NetherlandsTobias Peters +$2,550 +56.0 +Alkmaar +- +Netherlands +162 +United StatesBruce Uselman +$2,550 +56.0 +Wadena +MN +United States +163 +United StatesJeffrey Williams +$2,550 +56.0 +Dallas +TX +United States +164 +Czech RepublicJan Bednar +$2,550 +56.0 +- +- +Czech Republic +165 +United StatesLanny Levine +$2,550 +56.0 +Frisco +TX +United States +166 +United StatesLuigi Santoro +$2,550 +56.0 +Lansdale +PA +United States +167 +United StatesAnkush Mandavia +$2,550 +56.0 +Kennesaw +GA +United States +168 +ItalyDenis Conte +$2,550 +56.0 +- +- +Italy +169 +United StatesHaixia Zhang +$2,411 +56.0 +Los Gatos +CA +United States +170 +United StatesJames Iglinsky +$2,411 +56.0 +Sugar Land +TX +United States +171 +United StatesJulio Novo +$2,411 +56.0 +Tampa +FL +United States +172 +United StatesMatthew Volosevich +$2,411 +56.0 +Richmond +VA +United States +173 +United StatesTony Miles +$2,411 +56.0 +Ormond Beach +FL +United States +174 +United StatesNabil Mohamed Abdien +$2,411 +56.0 +- +- +United States +175 +United StatesBrady Lu +$2,411 +56.0 +Plano +TX +United States +176 +CanadaScott Davies +$2,411 +56.0 +Vancouver +BC +Canada +177 +United StatesChance Kornuth +$2,411 +56.0 +Las Vegas +NV +United States +178 +United StatesJeff Madsen +$2,411 +56.0 +Los Angeles +CA +United States +179 +United StatesJack Norris +$2,411 +56.0 +Saint Louis +MO +United States +180 +United StatesRyan Leng +$2,411 +56.0 +Wheeling +IL +United States +181 +United StatesFrank DeGeorge +$2,411 +56.0 +Las Vegas +NV +United States +182 +United StatesMichael Trivett +$2,411 +56.0 +Las Vegas +NV +United States +183 +United StatesAndy Spears +$2,411 +56.0 +Buffalo +NY +United States +184 +United StatesAlex Rocha +$2,411 +56.0 +Flagler Beach +FL +United States +185 +United StatesMichael Stecker +$2,411 +56.0 +Granite Bay +CA +United States +186 +United StatesTaylor Black +$2,411 +56.0 +Santa Cruz +CA +United States +187 +United StatesAnthony Calabrese +$2,411 +56.0 +Munster +IN +United States +188 +United StatesPeter Klevin +$2,411 +56.0 +Schaumburg +IL +United States +189 +United StatesVenkat Chivukula +$2,411 +56.0 +Houston +TX +United States +190 +United StatesHuy Nguyen +$2,411 +56.0 +Scottsdale +AZ +United States +191 +AustriaOswin Ziegelbecker +$2,411 +56.0 +Vienna +- +Austria +192 +United StatesSusan Sawyersmith +$2,411 +56.0 +Northville +MI +United States +193 +CanadaMathew Stewart +$2,317 +56.0 +Campbell River +BC +Canada +194 +GermanyChristopher Ahrens +$2,317 +56.0 +Malkenbach +- +Germany +195 +United StatesScott Griffiths +$2,317 +56.0 +Kingwood +TX +United States +196 +United StatesRyan Franklin +$2,317 +56.0 +Winston +NV +United States +197 +CanadaKarim Chatur +$2,317 +56.0 +Calgary +- +Canada +198 +United StatesLorinda Lisitza +$2,317 +56.0 +New York +NY +United States +199 +United StatesIsrael Hoke +$2,317 +56.0 +Xenia +OH +United States +200 +United StatesMichael Abratique +$2,317 +56.0 +Fairfield +CA +United States +201 +United StatesJ R +$2,317 +56.0 +Las Vegas +NV +United States +202 +United StatesPat Lyons +$2,317 +56.0 +San Mateo +CA +United States +203 +United StatesFrank Funaro +$2,317 +56.0 +Sewell +NJ +United States +204 +CubaCarlos Garcia +$2,317 +56.0 +Bogota +- +Cuba +205 +TaiwanHung-Sheng Lin +$2,317 +56.0 +Taipei +- +Taiwan +206 +United StatesJoshua Hersch +$2,317 +56.0 +Saint Paul +MN +United States +207 +CanadaYirui Zhang +$2,317 +56.0 +Edmonton +AB +Canada +208 +United StatesAmit Makhija +$2,317 +56.0 +Brookfield +WI +United States +209 +United StatesNick Palma +$2,317 +56.0 +Bronx +NY +United States +210 +United StatesIvan Sergeyev +$2,317 +56.0 +Nazareth +MI +United States +212 +FranceIdris Ambraisse +$2,317 +56.0 +Paris +- +France +213 +United StatesGary Smith +$2,317 +56.0 +Las Vegas +NV +United States +214 +United StatesMichael Cantrell +$2,317 +56.0 +Bentonville +AR +United States +215 +United StatesMichael Katz +$2,317 +56.0 +Manalapan +NJ +United States +216 +United StatesFrank Williams +$2,317 +56.0 +Derby +KS +United States +217 +LithuaniaVincas Tamasauskas +$2,317 +56.0 +Vilnius +- +Lithuania +218 +United StatesDamon Tucker +$2,317 +56.0 +Forest +MS +United States +219 +BrazilMarcelo Giordano Mendes +$2,317 +56.0 +Brazil +- +Brazil +220 +United StatesDash Dudley +$2,317 +56.0 +Lansing +MI +United States +221 +United StatesDalton Brinker +$2,317 +56.0 +Union +MO +United States +222 +United StatesBlaise Hom +$2,317 +56.0 +Rosemead +CA +United States +223 +United KingdomElliott Peterman +$2,265 +56.0 +Herts +- +United Kingdom +224 +CanadaForouzan Sotoudeh +$2,265 +56.0 +West Vancouver +BC +Canada +225 +United StatesBenjamin Primus +$2,265 +56.0 +Center Moriches +NY +United States +226 +United StatesAlbert Yzaguirre +$2,265 +56.0 +San Gabriel +CA +United States +227 +IsraelTimur Margolin +$2,265 +56.0 +Ramla +- +Israel +228 +United StatesIan Steinman +$2,265 +56.0 +Mountain View +CA +United States +229 +UruguayJorge Cuello +$2,265 +56.0 +- +- +Uruguay +230 +United StatesDavid Benyamine +$2,265 +56.0 +Henderson +NV +United States +231 +United StatesWilliam Firebaugh +$2,265 +56.0 +Indianapolis +IN +United States +232 +United StatesSteven Grybas +$2,265 +56.0 +Las Vegas +NV +United States +233 +ChinaRaymond Wang +$2,265 +56.0 +- +- +China +234 +UkraineArtem Metalidi +$2,265 +56.0 +Kiev +- +Ukraine +235 +United StatesShon Yamashita +$2,265 +56.0 +Honolulu +HI +United States +236 +IndiaSiddharth Mundada +$2,265 +56.0 +Onl Signup-No City +- +India +237 +United StatesNikolai Sears +$2,265 +56.0 +Davisburg +MI +United States +238 +United StatesJordan Young +$2,265 +56.0 +Las Vegas +NV +United States +239 +IndiaSriharsha Doddapaneni +$2,265 +56.0 +New Dehli +- +India +240 +United StatesCraig Hartman +$2,265 +56.0 +Syracuse +IN +United States +241 +United StatesAlan Snow +$2,265 +56.0 +Lynnwood +WA +United States +242 +United StatesStanley Lee +$2,265 +56.0 +West Hartford +CT +United States +243 +United StatesMatthew Marcou +$2,265 +56.0 +Orlando +FL +United States +244 +United StatesMichael Scoma +$2,265 +56.0 +Clermont +FL +United States +245 +United StatesJared Griener +$2,265 +56.0 +Santa Ana +CA +United States +246 +South KoreaJeonggyu Cho +$2,265 +56.0 +Seoul +- +South Korea +247 +United StatesJames Burns +$2,265 +56.0 +Smyrna +TN +United States +248 +GermanySamir Abid +$2,265 +56.0 +Donaustauf +- +Germany +249 +United StatesMike Dentale +$2,265 +56.0 +Brooklyn +NY +United States +250 +CanadaBrian Boyle +$2,265 +56.0 +Montreal +QC +Canada +251 +CanadaPablo Mariz +$2,265 +56.0 +Saint-Hubert +QC +Canada +252 +United StatesAmnon Filippi +$2,265 +56.0 +New York +NY +United States +253 +United StatesWeicheng Lee +$2,265 +56.0 +Los Altos Hills +CA +United States +254 +United StatesXiaoqiong Liu +$2,265 +56.0 +New York +NY +United States +255 +PortugalFernando Brito +$2,265 +56.0 +- +- +Portugal +256 +United StatesKevon Bakhtiari +$2,265 +56.0 +Laguna Niguel +CA +United States +257 +GermanyJan Christoph Von Halle +$2,265 +56.0 +Hamburg +- +Germany +258 +United StatesEmil Gramatikov +$2,265 +56.0 +Varna +BG +United States +259 +United StatesMuhammad Abdel Rahim +$2,252 +56.0 +Derry +NH +United States +260 +Russian FederationKaren Sarkisyan +$2,252 +56.0 +Moscow +- +Russian Federation +261 +United StatesJames Clifford +$2,252 +56.0 +Las Vegas +NV +United States +262 +United StatesArash Ghaneian +$2,252 +56.0 +- +- +United States +263 +SpainPaulo Villena +$2,252 +56.0 +Valencia +- +Spain +264 +United StatesConnor Drinan +$2,252 +56.0 +Arlington Heights +IL +United States +265 +LuxembourgJeremy Baldisseri +$2,252 +56.0 +Luxembourg +- +Luxembourg +266 +ChinaVincent Li +$2,252 +56.0 +Sunchuen +- +China +267 +LithuaniaTomas Geleziunas +$2,252 +56.0 +- +- +Lithuania +268 +United StatesDhillon Rahulinder +$2,252 +56.0 +Columbus +OH +United States +269 +United StatesJosh King +$2,252 +56.0 +Austin +TX +United States +270 +United StatesNan Li +$2,252 +56.0 +Palo Alto +CA +United States +271 +United StatesJamie Armstrong +$2,252 +56.0 +Irvine +CA +United States +272 +United StatesBrook Whisenant +$2,252 +56.0 +Mckinney +TX +United States +273 +SwitzerlandElias Gutierrez +$2,252 +56.0 +Georgia +- +Switzerland +274 +United StatesCameron Walker +$2,252 +56.0 +New Bedford +MA +United States +275 +United StatesMen Nguyen +$2,252 +56.0 +Bell Gardens +CA +United States diff --git a/TournamentStats/Events/event17 b/TournamentStats/Events/event17 new file mode 100644 index 0000000..c914ad7 --- /dev/null +++ b/TournamentStats/Events/event17 @@ -0,0 +1,700 @@ +1 +United StatesBrett Apter +$238,824 +1000 +Arlington +VA +United States +2 +Russian FederationAnatolii Zyrin +$147,594 +1000 +Lesnoy Gorodok +- +Russian Federation +3 +CanadaTommy Nguyen +$106,351 +462.2 +Oakville +ON +Canada +4 +United StatesAdrian Scarpa +$77,591 +410.8 +Manchester +CT +United States +5 +PortugalManuel Afonso Soares Ruivo +$57,326 +385.1 +Coimbra +- +Portugal +6 +United StatesCary Katz +$42,897 +359.5 +Las Vegas +NV +United States +7 +JapanShintaro Baba +$32,517 +308.1 +Hakataku +- +Japan +8 +United StatesMichael O'Grady +$24,973 +282.4 +Wilton +CT +United States +9 +United StatesKenna James +$19,436 +256.8 +Las Vegas +NV +United States +10 +SloveniaMarko Maher +$15,331 +205.4 +Ljubljana +- +Slovenia +11 +United StatesJason Johnson +$5,279 +97.6 +Pontiac +MI +United States +12 +United StatesMichael Ciaravino +$5,279 +97.6 +Plant City +FL +United States +13 +United StatesQuinn Bruno +$5,279 +97.6 +Boynton Beach +FL +United States +14 +United StatesGeorge Alex +$5,279 +97.6 +Boston +MA +United States +15 +United StatesAlan Thompson +$5,279 +97.6 +Bismarck +ND +United States +16 +United StatesJason Shinbaum +$5,279 +97.6 +St Augustine +FL +United States +17 +United StatesRobert Mitchell +$5,279 +97.6 +Henderson +NV +United States +18 +PolandMichal Lubas +$5,279 +97.6 +Zielona Gora +- +Poland +19 +SpainOscar Lima +$5,279 +97.6 +- +- +Spain +20 +United StatesAaron Pinson +$5,279 +97.6 +Baltimore +MD +United States +21 +United StatesCody Wiegmann +$5,279 +97.6 +San Jose +CA +United States +22 +United StatesBeau Winn +$5,279 +97.6 +Los Angeles +CA +United States +23 +South KoreaSteve Yea +$5,279 +97.6 +Seoul +- +South Korea +24 +CanadaLinyang Song +$5,279 +97.6 +Richmond +BC +Canada +25 +United StatesAthanasios Polychronopoulos +$5,279 +97.6 +Springs +NY +United States +26 +United StatesJoe Cada +$5,279 +97.6 +Shelby Township +MI +United States +27 +United StatesErik Seidel +$5,279 +97.6 +Henderson +NV +United States +28 +DenmarkSebastian Percysmith +$5,279 +97.6 +Copenhagen +- +Denmark +29 +United StatesChristopher Godfrey +$5,279 +97.6 +Fremont +CA +United States +30 +United StatesAdam Walton +$5,279 +97.6 +Thousand Oaks +CA +United States +31 +United StatesDillon Ott +$5,279 +97.6 +Altoona +PA +United States +32 +CanadaPlamen Markov +$5,279 +97.6 +North York +- +Canada +33 +United StatesAlexander Gambino +$5,279 +97.6 +Royersford +PA +United States +34 +United StatesAdam Volen +$5,279 +97.6 +Fullerton +CA +United States +35 +United StatesUpeshka De Silva +$5,279 +97.6 +Katy +TX +United States +36 +United StatesDaniel Ott +$5,279 +97.6 +Altoona +PA +United States +37 +United KingdomJonathan Proudfoot +$5,279 +97.6 +- +- +United Kingdom +38 +United StatesNicolas Manion +$5,279 +97.6 +Muskegon +MI +United States +39 +United StatesCasey Coughlan +$5,279 +97.6 +San Diego +CA +United States +40 +United StatesQui Nguyen +$5,279 +97.6 +Las Vegas +NV +United States +41 +United StatesVince Benvenuto +$5,279 +97.6 +Onl Signup-No City +NY +United States +42 +United StatesKane Kalas +$5,279 +97.6 +Philadelphia +PA +United States +43 +BulgariaIvan Zhechev +$5,279 +97.6 +- +- +Bulgaria +44 +United StatesNicholas Verderamo +$5,279 +97.6 +Baltimore +MD +United States +45 +United StatesCaleb King +$5,279 +97.6 +Springfield +OH +United States +46 +United StatesJames Little +$5,279 +97.6 +San Francisco +CA +United States +47 +United KingdomFlorian Duta +$5,279 +97.6 +Birmingham +- +United Kingdom +48 +United StatesIbrahim Ghazal +$5,279 +97.6 +Las Vegas +NV +United States +49 +ChadMengqi Chen +$5,279 +97.6 +Hai Kou +- +Chad +50 +CanadaDustin Born +$5,279 +97.6 +Abbotsford +BC +Canada +51 +United StatesJohn Murphy +$5,279 +97.6 +Seattle +WA +United States +52 +BrazilGil Morgensztern +$5,279 +97.6 +Sao Paulo +- +Brazil +53 +United StatesStephen Song +$5,279 +97.6 +Greenwich +CT +United States +54 +United StatesCharles Furey +$5,279 +97.6 +Atlantic City +NJ +United States +55 +United KingdomDragos Trofimov +$5,279 +97.6 +Waringstown +- +United Kingdom +56 +BrazilFelipe Ramos +$5,279 +97.6 +- +- +Brazil +57 +GermanyTonio Roder +$5,279 +97.6 +Ruesselsheim +- +Germany +58 +United StatesJorge Gomez +$5,279 +97.6 +Houston +TX +United States +59 +United KingdomYiannis Liperis +$5,279 +97.6 +- +- +United Kingdom +60 +United StatesSam Abueid +$5,279 +97.6 +Chicago +IL +United States +61 +United StatesRobert Salaburu +$5,279 +97.6 +San Antonio +TX +United States +62 +United StatesRaymond Ho +$5,279 +97.6 +Cerritos +CA +United States +63 +United StatesBob Shao +$5,279 +97.6 +Las Vegas +NV +United States +64 +AustraliaDaniel Neilson +$5,279 +97.6 +Sydney +- +Australia +65 +United StatesLouise Francoeur +$5,279 +97.6 +Las Vegas +NV +United States +66 +United StatesDavid Worden +$5,279 +97.6 +N Ridgeville +OH +United States +67 +United StatesJames Gilbert +$5,279 +97.6 +Bensalem +PA +United States +68 +United StatesJoshua Hillock +$5,279 +97.6 +Coconut Creek +FL +United States +69 +United StatesWilliam Klein +$5,279 +97.6 +Laguna Hills +CA +United States +70 +United StatesBenjamin Ector +$5,279 +97.6 +Marietta +GA +United States +71 +United StatesIdo Ashkenazi +$5,279 +97.6 +Davie +FL +United States +72 +United StatesKelly Minkin +$5,279 +97.6 +Tucson +AZ +United States +73 +United StatesBrad Albrinck +$5,279 +97.6 +Cincinnati +OH +United States +74 +United StatesJason Daly +$5,279 +97.6 +Houston +TX +United States +75 +CanadaTyler Walker +$5,279 +97.6 +Langley +- +Canada +76 +United StatesLoni Harwood +$5,279 +97.6 +Staten Island +NY +United States +77 +Russian FederationDenis Timofeev +$5,279 +97.6 +- +- +Russian Federation +78 +United StatesRyan Olisar +$5,279 +97.6 +Naperville +IL +United States +79 +United StatesRoger Tung +$5,279 +97.6 +Moraga +CA +United States +80 +United StatesJay Weil +$5,279 +97.6 +Hillsboro +OR +United States +81 +United StatesKevin Andriamahefa +$5,279 +97.6 +Chicago +IL +United States +82 +United StatesEric Bunch +$5,279 +97.6 +Tulsa +OK +United States +83 +CanadaAlexander Villa +$5,279 +97.6 +Ottawa +- +Canada +84 +United StatesChristopher Farmer +$5,279 +97.6 +Poway +CA +United States +85 +AustriaSeverin Schleser +$5,279 +97.6 +Wien +- +Austria +86 +CanadaDavid Guay +$5,279 +97.6 +St-Hubert +QC +Canada +87 +United StatesJeffrey Griffiths +$5,279 +97.6 +Pacifica +CA +United States +88 +United StatesArish Nat +$5,279 +97.6 +Elk Grove +CA +United States +89 +United KingdomBrandon Sheils +$5,279 +97.6 +Birmingham +- +United Kingdom +90 +United StatesDavid Mock +$5,279 +97.6 +Medford +MA +United States +91 +CanadaGreg Mueller +$5,279 +97.6 +Vancouver +BC +Canada +92 +United StatesMaurice Hawkins +$5,279 +97.6 +West Palm Beach +FL +United States +93 +AustriaMario Mosbock +$5,279 +97.6 +St Polten +- +Austria +94 +United StatesBrett Feder +$5,279 +97.6 +Lexington +SC +United States +95 +United StatesKyle Montgomery +$5,279 +97.6 +Fishers +IN +United States +96 +United StatesJennifer Tilly +$5,279 +97.6 +Sherman Oaks +CA +United States +97 +United StatesEric Holt +$5,279 +97.6 +Medina +OH +United States +98 +United StatesShiraz Lall +$5,279 +97.6 +Teaneck +NJ +United States +99 +United StatesMichael Uzala +$5,279 +97.6 +Las Vegas +NV +United States +100 +Trinidad And TobagoRyan Goindoo +$5,279 +97.6 +Port Of Spain +- +Trinidad And Tobago diff --git a/TournamentStats/Events/event4 copie 6 b/TournamentStats/Events/event4 copie 6 deleted file mode 100644 index e69de29..0000000 diff --git a/TournamentStats/Events/event4 copie 7 b/TournamentStats/Events/event4 copie 7 deleted file mode 100644 index e69de29..0000000 diff --git a/TournamentStats/Events/event4 copie 8 b/TournamentStats/Events/event4 copie 8 deleted file mode 100644 index e69de29..0000000 diff --git a/TournamentStats/Events/event4 copie 9 b/TournamentStats/Events/event4 copie 9 deleted file mode 100644 index e69de29..0000000 diff --git a/TournamentStats/NotablePlayers.swift b/TournamentStats/NotablePlayers.swift index 4927059..1fa3df3 100644 --- a/TournamentStats/NotablePlayers.swift +++ b/TournamentStats/NotablePlayers.swift @@ -48,8 +48,8 @@ class NotablePlayers { "Frank Kassela", "Maria Ho", "Allen Cunningham", -// "", -// "", +// "David Benyamine", +// "Mike Matusow", // "", // "", // "", diff --git a/TournamentStats/Seed.swift b/TournamentStats/Seed.swift index 89372c0..a3824d7 100644 --- a/TournamentStats/Seed.swift +++ b/TournamentStats/Seed.swift @@ -36,11 +36,11 @@ class Seed { TD(date: "07/06/2019", name: "No-Limit Hold'em", number: 11, buyin: 5000, entries: 400, prizePool: 1860000), TD(date: "06/06/2019", name: "No-Limit Hold'em Super Turbo Bounty", number: 12, buyin: 1000, entries: 2452, prizePool: 1471200), TD(date: "07/06/2019", name: "No-Limit 2-7 Lowball Draw", number: 13, buyin: 1500, entries: 296, prizePool: 399600), - TD(date: "08/06/2019", name: "HORSE", number: 14, buyin: 1500, entries: 751, prizePool: 1013850), + TD(date: "09/06/2019", name: "HORSE", number: 14, buyin: 1500, entries: 751, prizePool: 1013850), TD(date: "09/06/2019", name: "Heads-Up No-Limit Hold'em", number: 15, buyin: 10000, entries: 112, prizePool: 1052800), - TD(date: "08/06/2019", name: "No-Limit Hold'em 6-Handed", number: 16, buyin: 1500, entries: 1832, prizePool: 2473200), -// TD(date: "08/06/2019", name: "No-Limit Hold'em Shootout", number: 17, buyin: 1500, entries: 917, prizePool: 1237950), -// TD(date: "08/06/2019", name: "Omaha Hi-Lo 8 or Better", number: 18, buyin: 10000, entries: 1832, prizePool: 2473200), + TD(date: "09/06/2019", name: "No-Limit Hold'em 6-Handed", number: 16, buyin: 1500, entries: 1832, prizePool: 2473200), + TD(date: "09/06/2019", name: "No-Limit Hold'em Shootout", number: 17, buyin: 1500, entries: 917, prizePool: 1237950), +// TD(date: "08/06/2019", name: "Omaha Hi-Lo 8 or Better", number: 18, buyin: 10000, entries: 183, prizePool: 1720 200), // TD(date: "08/06/2019", name: "Millionaire Maker - No-Limit Hold'em", number: 19, buyin: 1500, entries: 1832, prizePool: 2473200), // TD(date: "08/06/2019", name: "Seven-Card Stud", number: 20, buyin: 1500, entries: 285, prizePool: 384750), diff --git a/TournamentStats/UI/MasterViewController.swift b/TournamentStats/UI/MasterViewController.swift index ee1c5af..b1759bd 100644 --- a/TournamentStats/UI/MasterViewController.swift +++ b/TournamentStats/UI/MasterViewController.swift @@ -19,7 +19,7 @@ class MasterViewController: UITableViewController { // Do any additional setup after loading the view. navigationItem.leftBarButtonItem = editButtonItem - let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(insertNewObject(_:))) + let addButton = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: #selector(generate(_:))) navigationItem.rightBarButtonItem = addButton if let split = splitViewController { let controllers = split.viewControllers @@ -32,6 +32,13 @@ class MasterViewController: UITableViewController { super.viewWillAppear(animated) } + @objc + func generate(_ sender: Any) { + + ReportGenerator.go() + + } + @objc func insertNewObject(_ sender: Any) { reports.insert(NSDate(), at: 0) diff --git a/TournamentStats/core/Formatters.swift b/TournamentStats/core/Formatters.swift index e0d546d..4d3a22f 100644 --- a/TournamentStats/core/Formatters.swift +++ b/TournamentStats/core/Formatters.swift @@ -18,7 +18,18 @@ extension Locale { } func flagoji(from countryName: String) -> String? { - if let countryCode = self.countryCode(from: countryName) { + + var adaptedCountryName = countryName + switch countryName { + case "Russian Federation": + adaptedCountryName = "Russia" + case "China": + adaptedCountryName = "China mainland" + default: + break + } + + if let countryCode = self.countryCode(from: adaptedCountryName) { let base : UInt32 = 127397 var s = "" for v in countryCode.uppercased().unicodeScalars { diff --git a/TournamentStats/report/Queries.swift b/TournamentStats/report/Queries.swift index 48381f0..d6ff467 100644 --- a/TournamentStats/report/Queries.swift +++ b/TournamentStats/report/Queries.swift @@ -96,4 +96,24 @@ class Queries { return trs } + static func cashesByCountry(realm: Realm) -> [CountryCashes] { + let playerDistinctCountries = realm.objects(Player.self).distinct(by: ["country"]) + var countryCashes: [CountryCashes] = [] + + for player in playerDistinctCountries { + let country = player.country + let resultsByCountry = realm.objects(Result.self).filter("player.country == %@", country) + + let cc = CountryCashes(country: country, cashes: resultsByCountry.count) + countryCashes.append(cc) + + } + + countryCashes.sort { (cc1, cc2) -> Bool in + return cc1.cashes > cc2.cashes + } + + return countryCashes + } + } diff --git a/TournamentStats/report/ReportGenerator.swift b/TournamentStats/report/ReportGenerator.swift index 327515b..cdd224b 100644 --- a/TournamentStats/report/ReportGenerator.swift +++ b/TournamentStats/report/ReportGenerator.swift @@ -14,6 +14,19 @@ 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 @@ -68,6 +81,9 @@ class ReportGenerator { tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool.html", limit: nil) tourniesByPrizepool.writeHTML(fileName: "reports/tourniesByPrizepool_top5.html", limit: 5) + let countryCashes = Queries.cashesByCountry(realm: realm) + countryCashes.writeHTML(fileName: "reports/countryCashes.html") + } } diff --git a/TournamentStats/report/structures/CountryCashes.swift b/TournamentStats/report/structures/CountryCashes.swift new file mode 100644 index 0000000..11098fc --- /dev/null +++ b/TournamentStats/report/structures/CountryCashes.swift @@ -0,0 +1,40 @@ +// +// CountryCashes.swift +// TournamentStats +// +// Created by Laurent Morvillier on 09/06/2019. +// Copyright © 2019 Stax River. All rights reserved. +// + +import Foundation + +struct CountryCashes : HTMLRepresentable { + + var country: String + var cashes: Int + + static func htmlHeaders() -> String { + var strings: [String] = [] + strings.append("Country") + strings.append("Cashes") + let all = strings.joined(separator: "") + return "\(all)" + } + + func html() -> String { + + let formattedCountry: String + if let flagoji = Locale.current.flagoji(from: self.country) { + formattedCountry = "\(flagoji) \(self.country)" + } else { + formattedCountry = self.country + } + + var strings: [String] = [] + strings.append(formattedCountry) + strings.append("\(cashes)") + let all = strings.joined(separator: "") + return "\(all)" + } + +}