示例#1
0
        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()));
            }
        }
示例#2
0
        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"));
            }
        }