internal static void SaveSleepData(SleepData sleepData, DateTimeOffset day) { if (sleepData.Sleep.Count > 0) { SleepSummary summary = sleepData.Summary; string query = String.Empty; DateTime insert = DateTime.Now; query += String.Format(UPDATE_SLEEP_SUMMARY_QUERY, "'" + insert.ToString(Settings.FORMAT_DAY_AND_TIME) + "'", "'" + sleepData.Sleep[0].DateOfSleep.ToString(Settings.FORMAT_DAY) + "'", summary.TotalMinutesAsleep, summary.TotalSleepRecords, summary.TotalTimeInBed); Database.GetInstance().ExecuteDefaultQuery(query); query = String.Empty; query += String.Format(INSERT_OR_IGNORE_SLEEP_SUMMARY_QUERY, "'" + insert.ToString(Settings.FORMAT_DAY_AND_TIME) + "'", "'" + sleepData.Sleep[0].DateOfSleep.ToString(Settings.FORMAT_DAY) + "'", summary.TotalMinutesAsleep, summary.TotalSleepRecords, summary.TotalTimeInBed); Database.GetInstance().ExecuteDefaultQuery(query); //GET ID of previous insert string idquery = "SELECT * FROM " + Settings.SLEEP_SUMMARY_TABLE_NAME + " WHERE " + SAVE_TIME + " = '" + insert.ToString(Settings.FORMAT_DAY_AND_TIME) + "';"; var table = Database.GetInstance().ExecuteReadQuery(idquery); string id = ""; if (table.Rows.Count > 0) { id = (table.Rows[0][0]).ToString(); } foreach (SleepLog log in sleepData.Sleep) { if (!DoesSleepLogAlreadyExists(log.LogID)) { string sleepQuery = String.Empty; sleepQuery += String.Format(INSERT_SLEEP_QUERY, id, "'" + DateTime.Now.ToString(Settings.FORMAT_DAY_AND_TIME) + "'", log.AwakeCount, log.AwakeDuration, "'" + log.DateOfSleep.ToString(Settings.FORMAT_DAY) + "'", log.Duration, log.Efficiency, log.IsMainSleep ? 1 : 0, log.LogID, log.MinutesAfterWakeup, log.MinutesAsleep, log.MinutesAwake, ReplaceNaNValues(log.MinutesToFallAsleep), log.RestlessCount, log.RestlessDuration, "'" + log.StartTime.ToString(Settings.FORMAT_DAY_AND_TIME) + "'", log.TimeInBed); Database.GetInstance().ExecuteDefaultQuery(sleepQuery); } if (Settings.IsDetailedCollectionEnabled) { InsertSleepIntradayData(log, day); } } } }
public async Task ShouldUpdateSleepSummary() { var existingSleepSummmary = new SleepSummary() { DateOfSleep = new DateTime(2017, 1, 1), MinutesAsleep = 1234 }; _fakeLocalContext.SleepSummaries.Add(existingSleepSummmary); _fakeLocalContext.SaveChanges(); var newSleepSummaries = new List <SleepSummary> { new SleepSummary() { DateOfSleep = new DateTime(2017, 1, 1), MinutesAsleep = 4444 } }; await _healthRepository.UpsertAsync(newSleepSummaries); Assert.Equal(4444, existingSleepSummmary.MinutesAsleep); }
public void ShouldGetLatestSleepSummaryDate() { var firstSleepSummary = new SleepSummary { DateOfSleep = new DateTime(2018, 5, 1), StartTime = new DateTime(2018, 5, 1) }; var secondSleepSummary = new SleepSummary { DateOfSleep = new DateTime(2018, 5, 2), StartTime = new DateTime(2018, 5, 2) }; var thirdSleepSummary = new SleepSummary { DateOfSleep = new DateTime(2018, 5, 3), StartTime = new DateTime(2018, 5, 3) }; _fakeLocalContext.SleepSummaries.Add(firstSleepSummary); _fakeLocalContext.SleepSummaries.Add(secondSleepSummary); _fakeLocalContext.SleepSummaries.Add(thirdSleepSummary); _fakeLocalContext.SaveChanges(); var latestSleepSummaryDate = _healthRepository.GetLatestSleepSummaryDate(); Assert.Equal(thirdSleepSummary.DateOfSleep, latestSleepSummaryDate); }
private void ValidateSleepOld(SleepData sleep) { // general Assert.IsNotNull(sleep); Assert.IsNotNull(sleep.Summary); Assert.IsNotNull(sleep.Sleep); // summary SleepSummary summary = sleep.Summary; Assert.AreEqual(518, summary.TotalMinutesAsleep); Assert.AreEqual(2, summary.TotalSleepRecords); Assert.AreEqual(540, summary.TotalTimeInBed); // logs Assert.AreEqual(2, sleep.Sleep.Count); SleepLog l = sleep.Sleep.First(); Assert.AreEqual(true, l.IsMainSleep); Assert.AreEqual(29744, l.LogId); Assert.AreEqual(98, l.Efficiency); Assert.AreEqual(new DateTime(2011, 6, 16), l.StartTime); Assert.AreEqual(28800000, l.Duration); Assert.AreEqual(0, l.MinutesToFallAsleep); Assert.AreEqual(480, l.MinutesAsleep); Assert.AreEqual(0, l.MinutesAwake); Assert.AreEqual(0, l.MinutesAfterWakeup); // awakenings count - depcrecated Assert.AreEqual(0, l.AwakeCount); Assert.AreEqual(0, l.AwakeDuration); Assert.AreEqual(0, l.RestlessCount); Assert.AreEqual(0, l.RestlessDuration); Assert.AreEqual(480, l.TimeInBed); Assert.AreEqual(3, l.MinuteData.Count); MinuteData min = l.MinuteData.First(); Assert.IsNotNull(min); Assert.AreEqual(new DateTime(1900, 1, 1).TimeOfDay, min.DateTime.TimeOfDay); Assert.AreEqual(3, min.Value); l.MinuteData.Remove(min); min = l.MinuteData.First(); Assert.IsNotNull(min); Assert.AreEqual(new DateTime(1900, 1, 1, 0, 1, 0).TimeOfDay, min.DateTime.TimeOfDay); Assert.AreEqual(2, min.Value); l.MinuteData.Remove(min); min = l.MinuteData.First(); Assert.IsNotNull(min); Assert.AreEqual(new DateTime(1900, 1, 1, 0, 2, 0).TimeOfDay, min.DateTime.TimeOfDay); Assert.AreEqual(1, min.Value); sleep.Sleep.Remove(l); l = sleep.Sleep.First(); Assert.AreEqual(false, l.IsMainSleep); Assert.AreEqual(29745, l.LogId); Assert.AreEqual(93, l.Efficiency); Assert.AreEqual(new DateTime(2011, 6, 16, 14, 0, 0), l.StartTime); Assert.AreEqual(3600000, l.Duration); Assert.AreEqual(20, l.MinutesToFallAsleep); Assert.AreEqual(38, l.MinutesAsleep); Assert.AreEqual(0, l.MinutesAwake); Assert.AreEqual(2, l.MinutesAfterWakeup); // awakenings count - depcrecated Assert.AreEqual(0, l.AwakeCount); Assert.AreEqual(0, l.AwakeDuration); Assert.AreEqual(0, l.RestlessCount); Assert.AreEqual(0, l.RestlessDuration); Assert.AreEqual(60, l.TimeInBed); Assert.AreEqual(1, l.MinuteData.Count); min = l.MinuteData.First(); Assert.IsNotNull(min); Assert.AreEqual(new DateTime(1900, 1, 1, 14, 0, 0).TimeOfDay, min.DateTime.TimeOfDay); Assert.AreEqual(3, min.Value); }
public IList <View.VParamType> OnOperationInvoke(string roleName, String opName, IList <View.VParamType> parameters) { List <View.VParamType> retVals = new List <View.VParamType>(); FitbitClient client = new FitbitClient(consumerKey, consumerSecret, accessToken, accessSecret); switch (opName) { case RoleFitbitUltra.OpGetActiveScoreName: { DateTime activityDate = (DateTime)parameters[0].Value(); ActivitySummary data = client.GetDayActivitySummary(activityDate); int result = data.ActiveScore; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetCaloriesOutName: { DateTime activityDate = (DateTime)parameters[0].Value(); ActivitySummary data = client.GetDayActivitySummary(activityDate); int result = data.CaloriesOut; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetDistanceName: { DateTime activityDate = (DateTime)parameters[0].Value(); ActivitySummary data = client.GetDayActivitySummary(activityDate); float result = data.Distances.Sum(z => z.Distance); retVals.Add(new ParamType(ParamType.SimpleType.binary, "float", result, "result")); } break; case RoleFitbitUltra.OpGetStepsName: { DateTime activityDate = (DateTime)parameters[0].Value(); ActivitySummary data = client.GetDayActivitySummary(activityDate); int result = data.Steps; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetTotalMinutesAsleep: { DateTime activityDate = (DateTime)parameters[0].Value(); SleepSummary data = client.GetDaySleepSummary(activityDate); int result = data.TotalMinutesAsleep; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetTotalSleepRecords: { DateTime activityDate = (DateTime)parameters[0].Value(); SleepSummary data = client.GetDaySleepSummary(activityDate); int result = data.TotalSleepRecords; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetTotalTimeInBed: { DateTime activityDate = (DateTime)parameters[0].Value(); SleepSummary data = client.GetDaySleepSummary(activityDate); int result = data.TotalTimeInBed; retVals.Add(new ParamType(ParamType.SimpleType.integer, "int", result, "result")); } break; case RoleFitbitUltra.OpGetDevicePresence: { List <Fitbit.Models.Device> data = client.GetDevices(); bool result = data.Where(z => z.Type == DeviceType.Tracker).FirstOrDefault().LastSyncTime >= DateTime.Now.AddMinutes(-15); retVals.Add(new ParamType(ParamType.SimpleType.binary, "bool", result, "result")); } break; default: logger.Log("Invalid operation {0}", opName); break; } return(retVals); }