public ViewResult AddUpdateSupplier(AddUpdateSupplierModel model)
        {
            string   errorMessage;
            Supplier supplierToUpdate = null;

            try
            {
                if (model.IsValid(out errorMessage))
                {
                    // If we're updating a supplier
                    if (model.SupplierID.HasValue)
                    {
                        using (ProductListContext productContext = new ProductListContext())
                        {
                            supplierToUpdate = productContext.Suppliers.FirstOrDefault(s => s.SupplierID == model.SupplierID);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                errorMessage = Errors.GenericMVCInternalError;
                ErrorLog.LogError(e);
            }

            ViewResult viewResult;

            if (errorMessage != null)
            {
                // Error, show the message
                ProductListViewModel viewModel;
                using (ProductListContext productContext = new ProductListContext())
                {
                    viewModel = ProductListViewModel.GetModel(productContext, errorMessage: errorMessage);
                }

                viewResult = View("Index", viewModel);
            }
            else
            {
                // Load the Add/Update view
                AddUpdateSupplierViewModel viewModel = null;

                viewModel  = AddUpdateSupplierViewModel.GetModel(supplierToUpdate);
                viewResult = View(viewModel);
            }

            return(viewResult);
        }
        public ActionResult UpdateSupplier(UpdateSupplierModel model)
        {
            bool     updatedSupplier;
            string   errorMessage;
            Supplier formSupplierData = null;

            try
            {
                if (model.IsValid(out errorMessage))
                {
                    using (ProductListContext productContext = new ProductListContext())
                    {
                        // update the supplier
                        productContext.UpdateSupplier(model.SupplierID,
                                                      model.Name,
                                                      model.PhoneNumber);

                        productContext.SaveChanges();
                    }

                    updatedSupplier = true;
                }
                else
                {
                    // save form data for when we return
                    formSupplierData = new Supplier
                    {
                        SupplierID  = model.SupplierID,
                        Name        = model.Name,
                        PhoneNumber = model.PhoneNumber
                    };

                    updatedSupplier = false;
                }
            }
            catch (Exception e)
            {
                updatedSupplier = false;
                errorMessage    = Errors.GenericMVCInternalError;
                ErrorLog.LogError(e);
            }

            ActionResult result;

            if (updatedSupplier)
            {
                // Updated product, return to list
                ProductListModel viewModel = new ProductListModel
                {
                    AddedOrUpdatedProduct = true
                };

                result = RedirectToAction("Index", viewModel);
            }
            else
            {
                // Error, show message
                AddUpdateSupplierViewModel viewModel = AddUpdateSupplierViewModel.GetModel(formSupplierData, errorMessage);
                result = View("AddUpdateSupplier", viewModel);
            }

            return(result);
        }