private IEnumerable <UsersByDateSeriesResponse> GetUserStatsFromYear() { var created = _uow.UserRepository.GetAll().Where(u => u.Status == StatusEnum.PENDING && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var active = _uow.UserRepository.GetAll().Where(u => u.Status == StatusEnum.ACTIVE && u.ActivatedAt.HasValue && u.ActivatedAt.Value.Date.Year == DateTime.UtcNow.Date.Year); var disabled = _uow.UserRepository.GetAll().Where(u => u.Status == StatusEnum.INACTIVE && u.DisabledAt.HasValue && u.DisabledAt.Value.Date.Year == DateTime.UtcNow.Date.Year); var creGrouped = created.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var actGrouped = active.AsEnumerable().GroupBy(c => c.ActivatedAt?.Month); var disGrouped = disabled.AsEnumerable().GroupBy(c => c.DisabledAt?.Month); var seriesToReturn = new List <UsersByDateSeriesResponse>(); for (int i = 1; i <= 12; i++) { var serieResponse = new UsersByDateSeriesResponse(); string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(i); serieResponse.Name = monthName; var series = new List <BasicSerieResponse>(); var act = actGrouped.Where(ag => ag.Key.HasValue && ag.Key.Value == i).FirstOrDefault(); if (act != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Activo"; simpleSerie.Value = act.Count(); if (act.Count() > 0) { series.Add(simpleSerie); } } var pend = creGrouped.Where(ag => ag.Key == i).FirstOrDefault(); if (pend != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Por Activar"; simpleSerie.Value = pend.Count(); if (pend.Count() > 0) { series.Add(simpleSerie); } } var dis = disGrouped.Where(ag => ag.Key.HasValue && ag.Key.Value == i).FirstOrDefault(); if (dis != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Deshabilitado"; simpleSerie.Value = dis.Count(); if (dis.Count() > 0) { series.Add(simpleSerie); } } if (series.Count > 0) { serieResponse.Series = series; seriesToReturn.Add(serieResponse); } } return(seriesToReturn); }
private IEnumerable <EatsByDateSeriesResponse> GetEatsStatsFromYear() { var breakfast = _uow.EatRepository.GetAll().Where(u => u.EatType == EatTypeEnum.BREAKFAST && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var snack1 = _uow.EatRepository.GetAll().Where(u => u.EatType == EatTypeEnum.SNACK1 && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var lunch = _uow.EatRepository.GetAll().Where(u => u.EatType == EatTypeEnum.LUNCH && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var snack2 = _uow.EatRepository.GetAll().Where(u => u.EatType == EatTypeEnum.SNACK2 && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var dinner = _uow.EatRepository.GetAll().Where(u => u.EatType == EatTypeEnum.DINNER && u.CreatedAt.Date.Year == DateTime.UtcNow.Date.Year); var breakGrouped = breakfast.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var snackGrouped = snack1.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var lunchGrouped = lunch.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var snack2Grouped = snack2.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var dinnerGrouped = dinner.AsEnumerable().GroupBy(c => c.CreatedAt.Month); var seriesToReturn = new List <EatsByDateSeriesResponse>(); for (int i = 1; i <= 12; i++) { var serieResponse = new EatsByDateSeriesResponse(); string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(i); serieResponse.Name = monthName; var series = new List <BasicSerieResponse>(); var bre = breakGrouped.Where(ag => ag.Key == i).FirstOrDefault(); if (bre != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Desayuno"; simpleSerie.Value = bre.Count(); if (bre.Count() > 0) { series.Add(simpleSerie); } } var sn1 = snackGrouped.Where(ag => ag.Key == i).FirstOrDefault(); if (sn1 != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Merienda 1"; simpleSerie.Value = sn1.Count(); if (sn1.Count() > 0) { series.Add(simpleSerie); } } var lun = lunchGrouped.Where(ag => ag.Key == i).FirstOrDefault(); if (lun != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Almuerzo"; simpleSerie.Value = lun.Count(); if (lun.Count() > 0) { series.Add(simpleSerie); } } var sn2 = snack2Grouped.Where(ag => ag.Key == i).FirstOrDefault(); if (sn2 != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Merienda 2"; simpleSerie.Value = sn2.Count(); if (sn2.Count() > 0) { series.Add(simpleSerie); } } var din = dinnerGrouped.Where(ag => ag.Key == i).FirstOrDefault(); if (din != null) { var simpleSerie = new BasicSerieResponse(); simpleSerie.Name = "Cena"; simpleSerie.Value = din.Count(); if (din.Count() > 0) { series.Add(simpleSerie); } } if (series.Count > 0) { serieResponse.Series = series; seriesToReturn.Add(serieResponse); } } return(seriesToReturn); }