Exemple #1
0
 public static int DaysSince(this DateTime d, DateTime since)
 {
     int days = 0;
     if (d.HasValue() && since.HasValue()) 
     {
         days = int.Parse(Math.Ceiling(d.DayEnd().Subtract(since.DayStart()).TotalDays).ToString());
     }
     return days;
 }
Exemple #2
0
		public async Task<TripDistanceStats> GetStats (DateTime now)
		{
			using (var connection = await GrabConnection ().ConfigureAwait (false)) {
				if (!connection.Table<BikeTrip> ().Any ())
					return new TripDistanceStats ();

				return await Task.Run (() => new TripDistanceStats {
					Daily = FetchStatsFromDate (connection, now.DayStart ()),
					Weekly = FetchStatsFromDate (connection, now.WeekStart ()),
					Monthly = FetchStatsFromDate (connection, now.MonthStart ()),
					PrevDay = FetchStatsBetweenDates (connection, now.DayStart ().PreviousDay (), now.DayStart ()),
					PrevWeek = FetchStatsBetweenDates (connection, now.WeekStart ().PreviousWeek (), now.WeekStart ()),
					PrevMonth = FetchStatsBetweenDates (connection, now.MonthStart ().PreviousMonth (), now.MonthStart ()),
				}).ConfigureAwait (false);
			}
		}
Exemple #3
0
 public static bool IsBetween(this DateTime d, DateTime start, DateTime end)
 {
     return d >= start.DayStart() && d <= end.DayEnd();
 }
Exemple #4
0
		public async Task<Dictionary<AggregatedStatsKey, double>> GetAggregatedStats (DateTime now)
		{
			var result = new Dictionary<AggregatedStatsKey, double> ();
			using (var connection = await GrabConnection ().ConfigureAwait (false)) {
				if (!connection.Table<BikeTrip> ().Any ())
					return result;

				var dayStart = now.DayStart ().ToUniversalTime ();
				var weekStart = now.WeekStart ().ToUniversalTime ();
				var monthStart = now.MonthStart ().ToUniversalTime ();
				now = now.ToUniversalTime ();

				await Task.Run (() => {
					result[AggregatedStatsKey.DailyThisWeek] =
						connection.ExecuteScalar<double> (DayAverageQuery, weekStart, now, (int)(now - weekStart).TotalDays + 1);
					result[AggregatedStatsKey.DailyThisMonth] =
						connection.ExecuteScalar<double> (DayAverageQuery, monthStart, now, (int)(now - monthStart).TotalDays + 1);
					result[AggregatedStatsKey.BestTripToday] =
						connection.ExecuteScalar<double> (BestTripQuery, dayStart, now);
					result[AggregatedStatsKey.BestTripInWeek] =
						connection.ExecuteScalar<double> (BestTripQuery, weekStart, now);
					result[AggregatedStatsKey.BestTripInMonth] =
						connection.ExecuteScalar<double> (BestTripQuery, monthStart, now);
					result[AggregatedStatsKey.MeanTripToday] =
						connection.ExecuteScalar<double> (BestTripQuery, dayStart, now);
					result[AggregatedStatsKey.MeanTripInWeek] =
						connection.ExecuteScalar<double> (BestTripQuery, weekStart, now);
					result[AggregatedStatsKey.MeanTripInMonth] =
						connection.ExecuteScalar<double> (BestTripQuery, monthStart, now);
				}).ConfigureAwait (false);

				return result;
			}
		}