public void Fitbit_TimeToBed() { Assert.AreEqual(FitbitConversion.InvalidValue, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, ""), "No Value"); Assert.AreEqual(FitbitConversion.InvalidValue, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "0115"), "Invalid Format"); Assert.AreEqual(FitbitConversion.InvalidValue, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "24:00"), "Invalid Hours"); Assert.AreEqual(FitbitConversion.InvalidValue, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "01:60"), "Invalid Minutes"); Assert.AreEqual(FitbitConversion.InvalidValue, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "01:-1"), "Negative Minutes"); Assert.AreEqual(0M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "00:00")); Assert.AreEqual(1M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "00:01")); Assert.AreEqual(60M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "01:00")); Assert.AreEqual(60M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "01:00")); Assert.AreEqual(1439M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "23:59")); Assert.AreEqual(720M, FitbitConversion.ConvertFitbitValue(TimeSeriesResourceType.TimeEnteredBed, "12:00")); }
private void SaveSeries(TimeSeriesResourceType type, TimeSeriesDataList fitbitData) { var metricType = MetricTypeConversion.FromFitBitType(type); List <Metric> currentlyStoredMetrics = _unitOfWork.CRUDRepository.GetByUserId <Metric>(_userId) .Where(m => m.MetricType == metricType) .ToList(); foreach (Fitbit.Models.TimeSeriesDataList.Data item in fitbitData.DataList) { // no value so ignore if (string.IsNullOrEmpty(item.Value)) { continue; } decimal convertedValue = FitbitConversion.ConvertFitbitValue(type, item.Value); // 0 = no value for the type/date so ignore if (convertedValue == FitbitConversion.InvalidValue) { continue; } // check if we already have a metric for the given date. var existingMetric = currentlyStoredMetrics.Where(m => m.Recorded == item.DateTime).FirstOrDefault(); if (existingMetric == null) { // add metric _unitOfWork.Metrics.AddMetric(Metric.CreateMetric(_userId, metricType, item.DateTime, convertedValue, false)); } else { // don't overwrite any manually entered metrics. if (!existingMetric.IsManual) { existingMetric.Value = convertedValue; _unitOfWork.Metrics.UpdateMetric(existingMetric); } } } _unitOfWork.Complete(); }