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); }
public ActionResult IssueBill() { if (!User.IsInRole("contractor")) { return new HttpUnauthorizedResult(); } LegalPerson legalPerson = personsRepository.GetLegalPersonByUsername(User.Identity.Name); var maintenances = maintenancesRepository.GetAllMaintenancesWithNoBillByContractor(legalPerson); var mappedMaintenances = Mapper.Map<IEnumerable<Maintenance>, IEnumerable<MaintenanceDetailModel>>(maintenances); var model = new IssueBillModel { UnbilledMaintances = new SelectList(mappedMaintenances, "Id", "MaintenanceRequest.Subject"), Roles = Roles.GetRolesForUser() }; return View(model); }