// Корректная регистрация водяного счетчика public void AddMeterTestSuccess() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация новом дома var newHouse = new House { Address = "Lenina 1" }; monitor.AddBuilding(newHouse); // Регистрация водяного счетчика в новом доме var newWaterMeter = new WaterMeter { BuildingId = newHouse.Id, Id = 1, Value = 1 }; monitor.AddMeter(newWaterMeter); // Получение полной информации о новом доме var house = monitor.GetBuilding(h => h.Id == newWaterMeter.BuildingId, w => w.WaterMeter); // В доме устновлен водяной счетчик Assert.NotNull(house.WaterMeter); // У этого счетчика правильные показатели Assert.Equal(house.WaterMeter.Id, newWaterMeter.Id); // У этого счетчика правильные показатели Assert.Equal(house.WaterMeter.Value, newWaterMeter.Value); } }
public async Task <IActionResult> Create(WaterMeterViewModel model) { if (ModelState.IsValid) { var user = await _userHelper.GetUserByIdAsync(model.UserId); var city = await _cityRepository.GetByIdAsync(model.CityId); var waterMeter = new WaterMeter { Address = model.Address, CityId = model.CityId, MeterState = model.MeterState, TotalConsumption = 0, ZipCode = model.ZipCode, CreationDate = DateTime.UtcNow, User = user }; await _waterMeterRepository.CreateAsync(waterMeter); return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Edit(int id, WaterMeterViewModel model) { if (id != model.MeterId) { return(NotFound()); } if (ModelState.IsValid) { try { var waterMeter = new WaterMeter { Id = model.MeterId, Address = model.Address, TotalConsumption = model.TotalConsumption, MeterState = model.MeterState, CityId = model.CityId, ZipCode = model.ZipCode, CreationDate = model.CreationDate }; _context.Update(waterMeter); await _context.SaveChangesAsync(); } catch { return(NotFound()); } return(RedirectToAction(nameof(Index))); } return(View(model)); }
public ActionResult DeleteConfirmed(long id) { WaterMeter waterMeter = db.WaterMeters.Find(id); db.WaterMeters.Remove(waterMeter); db.SaveChanges(); return(RedirectToAction("Index")); }
public async Task <WaterMeter> Add(WaterMeter model) { var entry = await _context.WaterMeters.AddAsync(model); await _context.SaveChangesAsync(); return(entry.Entity); }
public ActionResult Edit([Bind(Include = "MeterID,MeterNo,Meter_Status,BillName,Brand,MeterOwner,Ward,Street,Arrears,Meter_Account_No")] WaterMeter waterMeter, string payout) { if (ModelState.IsValid) { string billStatus; //Get building owner number PersonTable payer = db.PersonTables.Where(v => v.PersonID.Equals(waterMeter.MeterOwner)).First(); TempData["CheckOutID"] = "ws_CO_DMZ_52859272_19072018112557828"; //Register Payment Payment newPayment = new Payment { PaymentMade = decimal.Parse(payout), PermitType = 5, PaymentDate = DateTime.Now, PersonID = waterMeter.MeterOwner }; db.Payments.Add(newPayment); //Update Wallet PersonWallet currentWallet = db.PersonWallets.Where(v => v.PersonTable.PersonID.Equals(waterMeter.MeterOwner)).First(); currentWallet.CurrentAmount = currentWallet.CurrentAmount - decimal.Parse(payout); currentWallet.LastUpdate = DateTime.Now; //Update Building data waterMeter.Arrears = waterMeter.Arrears - decimal.Parse(payout); if (waterMeter.Arrears <= 0) { billStatus = "Paid"; } else { billStatus = "Unpaid"; } //Update GIS Result final = GetWithParams(usename, pasword, waterMeter.Arrears.ToString(), payout, billStatus, waterMeter.MeterNo.ToString()); if (final.resultCode.Equals("Result Code: 0000")) { //Update DB db.Entry(waterMeter).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("MeterPaymentConfirmation", "Intermediate")); } else { return(RedirectToAction("Edit")); } /*db.Entry(waterMeter).State = EntityState.Modified; * db.SaveChanges(); * return RedirectToAction("Index");*/ } ViewBag.MeterOwner = new SelectList(db.PersonTables, "PersonID", "Person_Name", waterMeter.MeterOwner); return(View(waterMeter)); }
public IActionResult Create([FromBody] WaterMeter waterMeter) { if (ModelState.IsValid) { _monitor.AddMeter(waterMeter); return(CreatedAtAction(nameof(Get), new { id = waterMeter.Id }, waterMeter)); } return(BadRequest()); }
public ActionResult Create([Bind(Include = "MeterID,MeterNo,Meter_Status,BillName,Brand,MeterOwner,Ward,Street,Arrears,Meter_Account_No")] WaterMeter waterMeter) { if (ModelState.IsValid) { db.WaterMeters.Add(waterMeter); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.MeterOwner = new SelectList(db.PersonTables, "PersonID", "Person_Name", waterMeter.MeterOwner); return(View(waterMeter)); }
public ActionResult WaterMeterDetails(int id) { WaterMeter waterMeter = WaterMeter.GetByID(id); if (waterMeter != null) { return(View("WaterMeterDetails", waterMeter)); } else { return(Redirect("Index")); } }
// GET: WaterMeters/Details/5 public ActionResult Details(long?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WaterMeter waterMeter = db.WaterMeters.Find(id); if (waterMeter == null) { return(HttpNotFound()); } return(View(waterMeter)); }
// GET: WaterMeters/Edit/5 public ActionResult Edit(long?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WaterMeter waterMeter = db.WaterMeters.Find(id); if (waterMeter == null) { return(HttpNotFound()); } ViewBag.MeterOwner = new SelectList(db.PersonTables, "PersonID", "Person_Name", waterMeter.MeterOwner); return(View(waterMeter)); }
public List <ChartDataViewModel> ProcessChartData(WaterMeter waterMeter) { List <ChartDataViewModel> chartData = new List <ChartDataViewModel>(); List <Bill> list = waterMeter.Bills.OrderByDescending(b => b.MonthYear).Take(12).ToList(); list = list.OrderBy(b => b.MonthYear).ToList(); for (int i = 0; i < list.Count; i++) { chartData.Add(new ChartDataViewModel { xValue = list[i].MonthYear.ToString("MM-yyyy"), yValue = Convert.ToDouble(list[i].Consumption) }); } return(chartData); }
// Start is called before the first frame update void Start() { _initialScale = Water.transform.localScale.y; var pipe = GameObject.Find("PipeManager"); if (pipe != null) { pipe.GetComponent <PipesManager>().BrokenPipesUpdated += OnLeakingUpdate; } var slider = GameObject.Find("WaterSlider"); if (slider != null) { _slider = slider.GetComponent <WaterMeter>(); } }
public async Task <IActionResult> Create([Bind(ATTRIBUTES_TO_BIND)] ContractVM UpdateVm) { Person person = await _personRepository.GetById(UpdateVm.PersonId); Estate estate = await _estateRepository.GetById(UpdateVm.EstateId); WaterMeter meter = await _waterMeterRepository.GetById(UpdateVm.MeterId); ContractType contractType = await _contractTypeRepository.GetById(UpdateVm.ContractTypeId); Contract localContract = Contract.Create(contractType: contractType, personsByEstate: PersonsByEstate.Create(person, estate), waterMeter: meter, initialMeterRead: UpdateVm.InitialMeterRead, doubleBasicCharge: UpdateVm.DoubleBasicCharge, isActive: UpdateVm.IsActive); return(await ConfirmSaveConcrete(UpdateVm, localContract)); }
// Регистрация счетчиков с одним номером в разных строениях public void AddMeterTestDuplicate() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация новых домов var newHouse1 = new House { Address = "Lenina 1" }; var newHouse2 = new House { Address = "Lenina 2" }; monitor.AddBuilding(newHouse1); monitor.AddBuilding(newHouse2); // Регистрация водяных счетчиков с одинаковыми номерами в новых домах var newWaterMeter1 = new WaterMeter { BuildingId = newHouse1.Id, Id = 1, Value = 1 }; var newWaterMeter2 = new WaterMeter { BuildingId = newHouse2.Id, Id = 1, Value = 1 }; monitor.AddMeter(newWaterMeter1); // Исключение, одинаковые номера счетчиков в разных домах Assert.Throws <InvalidOperationException>(() => monitor.AddMeter(newWaterMeter2)); // Первый счетчик зарегистрировался Assert.NotNull(monitor.GetMeter(newWaterMeter1.Id)); // Первый счетчик зарегистрировался с первым строением Assert.NotNull(monitor.GetBuilding(b => b.Id == newWaterMeter1.BuildingId, w => w.WaterMeter) .WaterMeter); // Второго счетчик не зарегистрировася со вторым строением Assert.Null(monitor.GetBuilding(b => b.Id == newWaterMeter2.BuildingId, w => w.WaterMeter).WaterMeter); } }
public async Task <ActionResult> RegisterCustomer(RegisterCustomerViewModel model) { if (ModelState.IsValid) { var user = new CustomerUser { Id = Guid.NewGuid(), UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, CustomerNumber = model.CustomerNumber }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await this.UserManager.AddToRoleAsync(user.Id, "Customer"); // Add default water meter. // NOTE: This is for demonstration purposes only! In the actual application, water meters would not be addef from the customer portal. WaterMeter waterMeter = new WaterMeter() { CustomerUserGuid = user.Id, Id = "123456789", }; using (VesiPortalDbContext context = new VesiPortalDbContext()) { WaterMeter.Add(context, waterMeter); } await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); TempData[StaticMembers.MESSAGE] = Resources.Messages.Messages.RegisterSuccess; return(RedirectToAction("Index", "Home")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public async Task AfterAccountReceivedAsync(IDialogContext context, IAwaitable <AccountDetails> result) { try { this.accountDetails = await result; this.accountDetails.WaterMeters = new List <WaterMeter>(); this.currentMeterCount = 1; var waterMeter = new WaterMeter(); var waterMeterDialog = new FormDialog <WaterMeter>(waterMeter, WaterMeter.BuildWaterMeterForm, FormOptions.PromptInStart); context.Call(waterMeterDialog, this.AfterWaterMeterReceivedAsync); } catch (OperationCanceledException) { await context.PostAsync("Вы отменили ввод данных."); context.Wait(MessageReceivedAsync); } }
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 void AddMeterTestNotFoundBuilding() { using (var monitor = new WaterMonitor(new UnitOfWorkEF(new MonitoringContextEF(CreateNewContextOptions())))) { // Регистрация водяного счетчика в доме var newWaterMeter = new WaterMeter { BuildingId = 1, Id = 1, Value = 1 }; // Убеждаемся что строение в котором региструем счетчик не существует Assert.Null(monitor.GetBuilding(newWaterMeter.BuildingId)); // Исключение, дом в котором региструется счетчик не найден Assert.Throws <NotFoundException>(() => monitor.AddMeter(newWaterMeter)); // Счетчик с несуществующим зданием не создается Assert.Null(monitor.GetMeter(newWaterMeter.Id)); // Строение не создается Assert.Null(monitor.GetBuilding(newWaterMeter.BuildingId)); } }
public async Task <IActionResult> Edit(int id, [Bind(ATTRIBUTES_TO_BIND)] ContractVM UpdateVm) { WaterMeter meter = await _waterMeterRepository.GetById(UpdateVm.MeterId); ContractType contractType = await _contractTypeRepository.GetById(UpdateVm.ContractTypeId); var MaybePersonByState = await _personsByEstateRepository.GetDataByIdentifier(UpdateVm.PersonId, UpdateVm.EstateId); if (MaybePersonByState.HasNoValue) { ModelState.AddModelError(string.Empty, "No se encontró el contrato"); return(View(UpdateVm)); } Contract localContract = Contract.Create(contractType: contractType, personsByEstate: MaybePersonByState.Value, waterMeter: meter, initialMeterRead: UpdateVm.InitialMeterRead, doubleBasicCharge: UpdateVm.DoubleBasicCharge, isActive: UpdateVm.IsActive); return(await ConfirmUpdateConcrete(id, localContract, UpdateVm)); }
public HttpResponseMessage AddWaterMeterByHouseID(long houseId, [FromBody] WaterMeter wm) { if (wm == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var response = Request.CreateResponse <WaterMeter>(HttpStatusCode.Created, wm); try { var updated = m_houseRepository.AddWaterMeterByHouseID(houseId, wm); if (updated == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } } catch (DbEntityValidationException ex) { response.Content = new StringContent(GetErrorLog(ex)); } response.Headers.Location = GetHouseLocation(wm.WM_id); return(response); }
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")); } }
// View for Water public PartialViewResult WaterMeterView() { return(PartialView("WaterMeter", WaterMeter.GetAll())); }
/// <summary> /// BsonDocument转实体对象 /// </summary> /// <param name="doc">Bson文档</param> /// <returns></returns> protected override ExpenseAccount DocToEntity(BsonDocument doc) { ExpenseAccount entity = new ExpenseAccount(); entity.Id = doc["_id"].ToString(); entity.Name = doc["name"].ToString(); entity.ShortName = doc["shortName"].ToString(); entity.ModelType = doc["modelType"].ToString(); entity.Remark = doc["remark"].ToString(); entity.Status = doc["status"].ToInt32(); if (doc.Contains("parentId")) { entity.ParentId = doc["parentId"].ToString(); } entity.EnergyType = new List <int>(); if (doc.Contains("energyType")) { BsonArray array = doc["energyType"].AsBsonArray; foreach (var item in array) { entity.EnergyType.Add(item.ToInt32()); } } entity.ElectricMeters = new List <ElectricMeter>(); if (doc.Contains("electricMeters")) { BsonArray array = doc["electricMeters"].AsBsonArray; foreach (BsonDocument item in array) { ElectricMeter meter = new ElectricMeter(); meter.Name = item["name"].ToString(); meter.Number = item["number"].ToString(); meter.SectionNumber = item["sectionNumber"].ToString(); meter.AccountName = item["accountName"].ToString(); meter.Address = item["address"].ToString(); meter.Multiple = item["multiple"].ToDecimal(); meter.Remark = item["remark"].ToString(); meter.Status = item["status"].ToInt32(); entity.ElectricMeters.Add(meter); } } entity.WaterMeters = new List <WaterMeter>(); if (doc.Contains("waterMeters")) { BsonArray array = doc["waterMeters"].AsBsonArray; foreach (BsonDocument item in array) { WaterMeter meter = new WaterMeter(); meter.Name = item["name"].ToString(); meter.Number = item["number"].ToString(); meter.AccountName = item["accountName"].ToString(); meter.Address = item["address"].ToString(); meter.Remark = item["remark"].ToString(); meter.Status = item["status"].ToInt32(); entity.WaterMeters.Add(meter); } } return(entity); }
/// <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")); } }