public ActionResult IssueBill(int id, IssueBillModel model) { if (!User.IsInRole("buildingmanager")) { return new HttpUnauthorizedResult(); } LegalPerson legalPerson = personsRepository.GetLegalPersonByUsername(User.Identity.Name); var building = buildingsRepository.GetById(id); if (building == null) { return HttpNotFound(); } if (!building.BuildingManager.LegalPerson.Equals(legalPerson)) { return new HttpUnauthorizedResult(); } if (ModelState.IsValid) { try { var bill = new Bill(legalPerson, building.Reserve, model.PaymentDescription, 23) { ReferenceNumber = string.Format("{0}-{1}-{2}", building.Id, building.BuildingManager.Id, DateTime.Now.ToString("yyyy-MM-dd")) }; foreach (var billItemModel in model.BillItems) { var billItem = new BillItem(billItemModel.Quantity, billItemModel.Price, billItemModel.Description); bill.AddBillItem(billItem); } billsRepository.SaveOrUpdate(bill); var url = Url.Action("bill", "buildingmanager", new {Id = bill.Id}, "http"); emailNotifier.NotifyOfBilling(bill, url); return RedirectToAction("bills"); } catch (BusinessRulesException ex) { ex.CopyTo(ModelState); } } model.Roles = Roles.GetRolesForUser(); model.Building = Mapper.Map<Building, BuildingListModel>(building); return View(model); }
/// <summary> /// Brisanje stavke racuna /// </summary> /// <param name="billItem">stavka racuna koja se brise</param> public virtual void RemoveBillItem(BillItem billItem) { billItems.Remove(billItem); }
/// <summary> /// Izadaje racun za pricuvu /// </summary> /// <param name="partitionSpace">stan za kojieg se izdaje racun za placanje pricuve</param> /// <param name="tax">porez</param> /// <returns>racun za pricuvu</returns> public virtual void IssueReserveBillFor(IPartitionSpace partitionSpace, short tax) { if (partitionSpace.Owner == null) { throw new BusinessRulesException("Owner doesn't exist."); } if(!building.LandRegistry.PartitionSpaces.Contains(partitionSpace)) { throw new BusinessRulesException("Etaža ne pripada ovoj zgradi, onodno pričuvi."); } StringBuilder paymentDescriptionSb = new StringBuilder(); paymentDescriptionSb.AppendLine(string.Format("Račun mjesečne pričuve za zgradu {0}.", building.Address)); paymentDescriptionSb.AppendLine(string.Format("Temeljem stana broj uloška: {0}", partitionSpace.RegistryNumber)); paymentDescriptionSb.AppendLine(string.Format("Površine {0}, i koeficijenta pričuve {1}.", partitionSpace.SurfaceArea, building.ReserveCoefficient)); Bill bill = new Bill(this, partitionSpace.Owner, paymentDescriptionSb.ToString(), tax); decimal price = building.ReserveCoefficient * partitionSpace.SurfaceArea; BillItem billItem = new BillItem(1, price, "Mjesečna naknada za pričuvu"); bill.AddBillItem(billItem); bill.ReferenceNumber = string.Format("{0}-{1}-{2}", REFERENCE_NUMBER_PREFIX, partitionSpace.Id, bill.DateTimeIssued.ToString("yyyy-MM-dd")); reserveBills.Add(bill); }
/// <summary> /// Dodavanje stavke racuna /// </summary> /// <param name="billItem">stavka racuna koja se dodaje</param> public virtual void AddBillItem(BillItem billItem) { billItems.Add(billItem); }
public ActionResult IssueBill(IssueBillModel model) { if (!User.IsInRole("contractor")) { return new HttpUnauthorizedResult(); } LegalPerson legalPerson = personsRepository.GetLegalPersonByUsername(User.Identity.Name); if(ModelState.IsValid) { var maintenance = maintenancesRepository.GetById(model.UnbilledMaintance); if(maintenance != null) { try { var bill = new Bill(legalPerson, maintenance.Building.Reserve, model.PaymentDescription, 23) { ReferenceNumber = string.Format("{0}-{1}-{2}", maintenance.Building.Id, maintenance.Id, DateTime.Now.ToString("yyyy-MM-dd")) }; foreach (var billItemModel in model.BillItems) { var billItem = new BillItem(billItemModel.Quantity, billItemModel.Price, billItemModel.Description); bill.AddBillItem(billItem); } maintenance.SetBill(bill); billsRepository.SaveOrUpdate(bill); var url = Url.Action("bill", "contractor", new {Id = bill.Id}, "http"); emailNotifier.NotifyOfBilling(bill, url); return RedirectToAction("bills"); } catch(BusinessRulesException ex) { ex.CopyTo(ModelState); } } else { ModelState.AddModelError("UnbilledMaintance", "Odabrali ste ne postojeće održavanje/popravak."); } } var maintenances = maintenancesRepository.GetAllMaintenancesWithNoBillByContractor(legalPerson); var mappedMaintenances = Mapper.Map<IEnumerable<Maintenance>, IEnumerable<MaintenanceDetailModel>>(maintenances); model.UnbilledMaintances = new SelectList(mappedMaintenances, "Id", "MaintenanceRequest.Subject"); model.Roles = Roles.GetRolesForUser(); return View(model); }