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(); }
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)); }