Esempio n. 1
0
        public SleepStatsViewModel()
        {
            LoginCommand      = new Command(Login);
            ViewChild         = Constants.DefaultChildId;
            UserInfo          = OfflineDefaultData.DefaultUserInfo;
            ProgenyCollection = new ObservableCollection <Progeny>();
            SleepItems        = new ObservableRangeCollection <Sleep>();
            SleepStats        = new SleepStatsModel();
            _lastDate         = _todayDate = DateTime.Now;
            _firstDate        = _startDate = DateTime.Now - TimeSpan.FromDays(30);
            _endDate          = DateTime.Now;
            _maxValue         = 24;
            _minValue         = 0;

            _chartTypeList = new List <string>();
            var ci = CrossMultilingual.Current.CurrentCultureInfo.TwoLetterISOLanguageName;

            if (ci == "da")
            {
                _chartTypeList.Add("Linjediagram");
                _chartTypeList.Add("Trappetrinsdiagram");
                _chartTypeList.Add("Stammediagram");
            }
            else
            {
                if (ci == "de")
                {
                    _chartTypeList.Add("Liniendiagramm");
                    _chartTypeList.Add("Treppenstufen-Diagramm");
                    _chartTypeList.Add("Stammdiagramm");
                }
                else
                {
                    _chartTypeList.Add("Line Chart");
                    _chartTypeList.Add("Stair Steps Chart");
                    _chartTypeList.Add("Stem Chart");
                }
            }


            SleepPlotModel = new PlotModel();
        }
Esempio n. 2
0
        public async Task <IActionResult> GetSleepStatsMobile(int progenyId, int accessLevel)
        {
            string          userTimeZone = Constants.DefaultTimezone;
            SleepStatsModel model        = new SleepStatsModel();

            model.SleepTotal     = TimeSpan.Zero;
            model.SleepLastYear  = TimeSpan.Zero;
            model.SleepLastMonth = TimeSpan.Zero;
            List <Sleep> sList = await _dataService.GetSleepList(Constants.DefaultChildId); // _context.SleepDb.Where(s => s.ProgenyId == Constants.DefaultChildId).ToListAsync();

            List <Sleep> sleepList = new List <Sleep>();
            DateTime     yearAgo   = new DateTime(DateTime.UtcNow.Year - 1, DateTime.UtcNow.Month, DateTime.UtcNow.Day, DateTime.UtcNow.Hour, DateTime.UtcNow.Minute, 0);
            DateTime     monthAgo  = DateTime.UtcNow - TimeSpan.FromDays(30);

            if (sList.Count != 0)
            {
                foreach (Sleep s in sList)
                {
                    bool isLessThanYear  = s.SleepEnd > yearAgo;
                    bool isLessThanMonth = s.SleepEnd > monthAgo;
                    s.SleepStart = TimeZoneInfo.ConvertTimeFromUtc(s.SleepStart,
                                                                   TimeZoneInfo.FindSystemTimeZoneById(userTimeZone));
                    s.SleepEnd = TimeZoneInfo.ConvertTimeFromUtc(s.SleepEnd,
                                                                 TimeZoneInfo.FindSystemTimeZoneById(userTimeZone));
                    DateTimeOffset sOffset = new DateTimeOffset(s.SleepStart,
                                                                TimeZoneInfo.FindSystemTimeZoneById(userTimeZone).GetUtcOffset(s.SleepStart));
                    DateTimeOffset eOffset = new DateTimeOffset(s.SleepEnd,
                                                                TimeZoneInfo.FindSystemTimeZoneById(userTimeZone).GetUtcOffset(s.SleepEnd));
                    s.SleepDuration = eOffset - sOffset;

                    model.SleepTotal = model.SleepTotal + s.SleepDuration;
                    if (isLessThanYear)
                    {
                        model.SleepLastYear = model.SleepLastYear + s.SleepDuration;
                    }

                    if (isLessThanMonth)
                    {
                        model.SleepLastMonth = model.SleepLastMonth + s.SleepDuration;
                    }

                    if (s.AccessLevel >= accessLevel)
                    {
                        sleepList.Add(s);
                    }
                }
                sleepList = sleepList.OrderBy(s => s.SleepStart).ToList();

                model.TotalAverage     = model.SleepTotal / (DateTime.UtcNow - sleepList.First().SleepStart).TotalDays;
                model.LastYearAverage  = model.SleepLastYear / (DateTime.UtcNow - yearAgo).TotalDays;
                model.LastMonthAverage = model.SleepLastMonth / 30;
            }
            else
            {
                model.TotalAverage     = TimeSpan.Zero;
                model.LastYearAverage  = TimeSpan.Zero;
                model.LastMonthAverage = TimeSpan.Zero;
            }

            return(Ok(model));
        }