public ActionResult Edit(int id, ViewModels.Contacts.ContactViewModel viewModel) { Common.Models.Account.Users currentUser = null; Common.Models.Contacts.Contact model, oldModel; using (Data.Transaction trans = Data.Transaction.Create(true)) { try { // When modifying a user, if they have a billing rate then if they are being modified from an employee to not an employee (terminated) // we need to make sure and retain that billing rate - needs to also retain the rate for future edits - basically, once there is a billing rate // there will always be a billing rate currentUser = Data.Account.Users.Get(trans, User.Identity.Name); model = Mapper.Map <Common.Models.Contacts.Contact>(viewModel); oldModel = Data.Contacts.Contact.Get(trans, id); if (oldModel.BillingRate != null && oldModel.BillingRate.Id.HasValue) { model.BillingRate = oldModel.BillingRate; } model = Data.Contacts.Contact.Edit(trans, model, currentUser); trans.Commit(); } catch { trans.Rollback(); } } return(RedirectToAction("Index")); }
public ActionResult Create(ViewModels.Contacts.ContactViewModel viewModel) { string errorListString = ""; List <ViewModels.Billing.BillingRateViewModel> billingRateList; Common.Models.Account.Users currentUser = null; Common.Models.Contacts.Contact model; List <Common.Models.Contacts.Contact> possibleDuplicateList; using (Data.Transaction trans = Data.Transaction.Create(true)) { try { currentUser = Data.Account.Users.Get(trans, User.Identity.Name); model = Mapper.Map <Common.Models.Contacts.Contact>(viewModel); if (Request["OverrideConflict"] != "True") { possibleDuplicateList = Data.Contacts.Contact.ListPossibleDuplicates(trans, model); if (possibleDuplicateList.Count > 0) { billingRateList = new List <ViewModels.Billing.BillingRateViewModel>(); possibleDuplicateList.ForEach(x => { errorListString += "<li><a href=\"/Contacts/Details/" + x.Id.Value + "\">" + x.DisplayName + "</a> [<a href=\"/Contacts/Edit/" + x.Id.Value + "\">edit</a>]</li>"; }); Data.Billing.BillingRate.List(trans).ForEach(x => { ViewModels.Billing.BillingRateViewModel vm = Mapper.Map <ViewModels.Billing.BillingRateViewModel>(x); vm.Title += " (" + vm.PricePerUnit.ToString("C") + ")"; billingRateList.Add(vm); }); ViewBag.ErrorMessage = "Contact possibly conflicts with the following existing contacts:<ul>" + errorListString + "</ul>Click Save again to create the contact anyway."; ViewBag.OverrideConflict = "True"; ViewBag.BillingRateList = billingRateList; return(View(viewModel)); } } model = Data.Contacts.Contact.Create(trans, model, currentUser); trans.Commit(); return(RedirectToAction("Details", new { Id = model.Id.Value })); } catch { trans.Rollback(); } } return(RedirectToAction("Index")); }
public ActionResult Edit(int id, ViewModels.Contacts.ContactViewModel viewModel) { Common.Models.Account.Users currentUser = null; Common.Models.Contacts.Contact model; currentUser = Data.Account.Users.Get(User.Identity.Name); model = Mapper.Map <Common.Models.Contacts.Contact>(viewModel); model = OpenLawOffice.Data.Contacts.Contact.Edit(model, currentUser); return(RedirectToAction("Index")); }