Example #1
0
        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);
        }
Example #4
0
        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);
        }