public ActionResult GetConsumptionChart(ConsumptionHistoryViewModel viewModel) { CustomerUser user = null; ConsumptionHistoryChartViewModel consumptionHistoryChartViewModel = new ConsumptionHistoryChartViewModel(); try { using (VesiPortalDbContext context = new VesiPortalDbContext()) { var guid = User.Identity.GetUserId(); user = (CustomerUser)UserManager.FindById(Guid.Parse(guid)); WaterMeter waterMeter = WaterMeter.Get(context, viewModel.WaterMeterGuid); if (waterMeter == null) { throw new Exception(ErrorMessages.WaterMeterNotFound); } List <RegisteredWaterMeterReading> registeredWaterMeterReadings = RegisteredWaterMeterReading.GetRegisteredWaterMeterReadings(context, waterMeter, viewModel.StartDate, viewModel.EndDate) .ToList(); if (registeredWaterMeterReadings.Count > 0) { consumptionHistoryChartViewModel.ConsumptionAmounts = registeredWaterMeterReadings.OrderBy(x => x.ReadingDate).Select(x => x.DailyConsumption).ToList(); consumptionHistoryChartViewModel.ConsumptionDates = registeredWaterMeterReadings.OrderBy(x => x.ReadingDate).Select(x => x.ReadingDate).ToList(); DateTime minDate = viewModel.StartDate.HasValue ? viewModel.StartDate.Value : registeredWaterMeterReadings.Min(x => x.ReadingDate); DateTime maxDate = viewModel.EndDate.HasValue ? viewModel.EndDate.Value :registeredWaterMeterReadings.Max(x => x.ReadingDate); consumptionHistoryChartViewModel.StartDate = minDate; consumptionHistoryChartViewModel.EndDate = maxDate; } consumptionHistoryChartViewModel.FileName = user.Id.GetHashCode().ToString() + ".png"; return(PartialView("_ConsumptionHistoryChart", consumptionHistoryChartViewModel)); } } catch { return(PartialView("_ConsumptionHistoryChart", new ConsumptionHistoryChartViewModel())); } }
public ActionResult ShowConsumptionHistory(ConsumptionHistoryViewModel viewModel) { CustomerUser user = null; WaterMeter defaultMeter = null; try { if (User.IsInRole("Customer")) { var guid = User.Identity.GetUserId(); user = (CustomerUser)UserManager.FindById(Guid.Parse(guid)); if (user == null) { throw new Exception(ErrorMessages.UserNotFound); } viewModel.CustomerUserGuid = user.Id; List <WaterMeter> waterMeters = user.WaterMeters.ToList(); if (waterMeters.Count <= 0) { throw new Exception(ErrorMessages.UserHasNoWaterMeters); } for (int i = 0; i < waterMeters.Count; i++) { // Add select list item for each water meter SelectListItem selectListItem = new SelectListItem() { Value = waterMeters[i].Guid.ToString(), Text = waterMeters[i].Id }; viewModel.SelectWaterMeters.Add(selectListItem); if (i == 0) { // Set the first meter as default choice viewModel.SelectWaterMeters[i].Selected = true; viewModel.WaterMeterGuid = waterMeters[i].Guid; defaultMeter = waterMeters[i]; } } } if (defaultMeter != null) { List <RegisteredWaterMeterReading> waterMeterReadings = defaultMeter.WaterMeterReadings.ToList(); viewModel.Chart.ConsumptionAmounts = waterMeterReadings.OrderBy(x => x.ReadingDate).Select(x => x.DailyConsumption).ToList(); viewModel.Chart.ConsumptionDates = waterMeterReadings.OrderBy(x => x.ReadingDate).Select(x => x.ReadingDate).ToList(); DateTime minDate = waterMeterReadings.Min(x => x.ReadingDate); DateTime maxDate = waterMeterReadings.Max(x => x.ReadingDate); viewModel.StartDate = viewModel.Chart.StartDate = minDate; viewModel.EndDate = viewModel.Chart.EndDate = maxDate; viewModel.Chart.FileName = user.Id.GetHashCode().ToString() + ".png"; } return(View("ConsumptionHistoryView", viewModel)); } catch (Exception e) { TempData[StaticMembers.ERROR_MSG] = e.Message; return(RedirectToAction("Index", "Home")); } }