Beispiel #1
0
        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();
        }