Example #1
0
 public JsonResult AddRegisteredReading(RegisteredWaterMeterReadingViewModel viewModel)
 {
     try
     {
         using (VesiPortalDbContext context = new VesiPortalDbContext())
         {
             RegisteredWaterMeterReading registeredWaterMeterReading = new RegisteredWaterMeterReading
             {
                 Guid           = Guid.NewGuid(),
                 WaterMeterGuid = viewModel.WaterMeterGuid,
                 Reading        = viewModel.Reading,
                 ReadingDate    = viewModel.ReadingDate
             };
             WaterMeterReading.Add(context, registeredWaterMeterReading);
         }
         return(Json(data: new { Valid = true, Message = Messages.WaterMeterReadingAdded },
                     behavior: JsonRequestBehavior.AllowGet));
     }
     catch (Exception)
     {
         return(Json(data: new
         {
             Valid = false,
             ErrorMessage = ErrorMessages.WaterMeterReadingAddError
         },
                     behavior: JsonRequestBehavior.AllowGet));
     }
 }
Example #2
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()));
            }
        }
Example #3
0
        /// <summary>
        /// Show the view for adding a new reading for registered customer
        /// </summary>
        /// <returns>View</returns>
        public ActionResult ShowNewRegisteredReading()
        {
            RegisteredWaterMeterReadingViewModel registeredWaterMeterReadingViewModel =
                new RegisteredWaterMeterReadingViewModel();
            WaterMeter defaultMeter = null;

            try
            {
                if (User.IsInRole("Customer"))
                {
                    var          guid = User.Identity.GetUserId();
                    CustomerUser user = (CustomerUser)UserManager.FindById(Guid.Parse(guid));

                    if (user == null)
                    {
                        throw new Exception(ErrorMessages.UserNotFound);
                    }

                    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
                        };
                        registeredWaterMeterReadingViewModel.SelectWaterMeters.Add(selectListItem);

                        if (i == 0)
                        {
                            // Set the first meter as default choice
                            registeredWaterMeterReadingViewModel.SelectWaterMeters[i].Selected = true;
                            defaultMeter = waterMeters[i];
                        }
                    }

                    if (defaultMeter != null)
                    {
                        // Get previous reading info for the default water meter
                        RegisteredWaterMeterReading previousReading = defaultMeter.WaterMeterReadings
                                                                      .OrderByDescending(x => x.ReadingDate)
                                                                      .ThenByDescending(x => x.Timestamp)
                                                                      .FirstOrDefault();

                        if (previousReading != null)
                        {
                            registeredWaterMeterReadingViewModel.PreviousReading     = previousReading.Reading;
                            registeredWaterMeterReadingViewModel.PreviousReadingDate = previousReading.ReadingDate;
                        }
                    }
                }
                return(View("RegisteredWaterMeterReadingAddView", registeredWaterMeterReadingViewModel));
            }
            catch (Exception e)
            {
                TempData[StaticMembers.ERROR_MSG] = e.Message;
                return(RedirectToAction("Index", "Home"));
            }
        }