diff --git a/Sources/App/Controllers/StatsController.swift b/Sources/App/Controllers/StatsController.swift index b5cb9cf..5c40400 100644 --- a/Sources/App/Controllers/StatsController.swift +++ b/Sources/App/Controllers/StatsController.swift @@ -7,6 +7,8 @@ struct CODDate { let month:Int let year:Int let day: Int + let hour:Int + let minute:Int } @@ -174,19 +176,19 @@ struct StatsController: RouteCollection { } private func getStartDate() -> Date { - + let calendar = Calendar.current var components = DateComponents() components.timeZone = TimeZone(identifier: "GMT") components.day = 20 components.month = 03 components.year = 2020 - components.hour = 0 + components.hour = 4 components.minute = 0 return calendar.date(from: components)! } - private func createDate(day:Int, month:Int, year:Int) -> Date { + private func createDate(day:Int, month:Int, year:Int, hour:Int, minute:Int) -> Date { let calendar = Calendar.current var components = DateComponents() @@ -194,6 +196,8 @@ struct StatsController: RouteCollection { components.day = day components.month = month components.year = year + components.hour = hour + components.minute = minute return calendar.date(from: components)! } @@ -202,20 +206,16 @@ struct StatsController: RouteCollection { func all(req: Request) throws -> EventLoopFuture { - - - + var date = getStartDate() var previousMonths:[CODDate] = [] repeat { //let stats = getStatsByMonth(year: date.year, month: date.month, req: req) //returns eventloopfuture - previousMonths.append(CODDate(month: date.month, year: date.year, day: 15)) + previousMonths.append(CODDate(month: date.month, year: date.year, day: 15, hour:6, minute: 0)) date = Calendar.current.date(byAdding: .month, value: 1, to: date)! } while (date.month != (Date().month + 1) || date.year != Date().year) - - func getMonthStats (_ remaining: ArraySlice, allMonthlyStats: inout [MonthStats], eventLoop: EventLoop) -> EventLoopFuture<[MonthStats]> { var remaining = remaining if let first = remaining.popLast() { @@ -286,11 +286,9 @@ struct StatsController: RouteCollection { var date = getStartDate() var previousDays:[CODDate] = [] - repeat { - previousDays.append(CODDate(month: date.month, year: date.year, day: date.day)) + previousDays.append(CODDate(month: date.month, year: date.year, day: date.day, hour: date.hour, minute: date.minute)) date = Calendar.current.date(byAdding: .day, value: 1, to: date)! - } while (date < Date()) return previousDays @@ -299,12 +297,8 @@ struct StatsController: RouteCollection { func allDaily(req:Request) -> EventLoopFuture{ - - - let previousDays = getDaysPlayed().reversed() - - + func getDailyStats (_ remaining: ArraySlice, allDailyStats: inout [DailyStats], eventLoop: EventLoop) -> EventLoopFuture<[DailyStats]> { var remaining = remaining if let first = remaining.popLast() { @@ -368,7 +362,8 @@ struct StatsController: RouteCollection { var cumulativeWinLossRatios = cumulativeWinLossRatios if !(stats.totalWins == 0 && stats.totalLosses == 0) { - let date = self.createDate(day: first.day, month: first.month, year: first.year) + let date = self.createDate(day: first.day, month: first.month, year: first.year, hour: first.hour, minute:first.minute) + print ("p \(date.timeIntervalSince1970)") cumulativeWinLossRatios.append(DataPoint(x:date.timeIntervalSince1970*1000 , y: (totalWins/totalLosses).truncate(places: 2))) } allDailyStats.append(DailyStats(day: first.day, month: first.month, year: first.year, stats: stats, cumulativeRatio: self.getRatio(num: totalWins, den: totalLosses))) @@ -401,17 +396,43 @@ extension Double extension Date { var month:Int { - let calanderDate = Calendar.current.dateComponents([.day, .year, .month], from: self) + + var calendar = Calendar.current + calendar.timeZone = TimeZone(identifier: "GMT")! + let calanderDate = calendar.dateComponents([.minute, .month, .year, .hour, .day], from: self) return calanderDate.month ?? 1 } var year:Int { - let calanderDate = Calendar.current.dateComponents([.day, .month, .year], from: self) + + var calendar = Calendar.current + calendar.timeZone = TimeZone(identifier: "GMT")! + let calanderDate = calendar.dateComponents([.minute, .month, .year, .hour, .day], from: self) return calanderDate.year ?? 1 } var day:Int { - let calanderDate = Calendar.current.dateComponents([.day, .month, .year], from: self) + + var calendar = Calendar.current + calendar.timeZone = TimeZone(identifier: "GMT")! + let calanderDate = calendar.dateComponents([.minute, .month, .year, .hour, .day], from: self) return calanderDate.day ?? 1 } + + var hour:Int { + + var calendar = Calendar.current + calendar.timeZone = TimeZone(identifier: "GMT")! + let calanderDate = calendar.dateComponents([.minute, .month, .year, .hour, .day], from: self) + return calanderDate.hour ?? 1 + } + + + var minute:Int { + var calendar = Calendar.current + calendar.timeZone = TimeZone(identifier: "GMT")! + let calanderDate = calendar.dateComponents([.minute, .month, .year, .hour, .day], from: self) + return calanderDate.minute ?? 1 + } + } diff --git a/Sources/App/Migrations/CreateMatch.swift b/Sources/App/Migrations/CreateMatch.swift index 27038b4..613e871 100644 --- a/Sources/App/Migrations/CreateMatch.swift +++ b/Sources/App/Migrations/CreateMatch.swift @@ -6,7 +6,7 @@ struct CreateMatch: Migration { .id() .field("map", .string) .field("win", .bool) - .field("date", .date) + .field("date", .datetime) .field("roundsWon", .int) .field("roundsLost", .int)