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"));
        }
Пример #3
0
        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"));
        }