public ActionResult UpdateAgreements([Bind(Include = "ProductIDs")] SupplierUpdateAgreementViewModel model)
        {
            if (model.ProductIDs.Length == 0)
            {
                return(RedirectToAction("Index", "Manage"));
            }
            SupplierWithAgreements supplier = null;

            try
            {
                DataObjects.User usr = _userManager.RetrieveUserByUserName(User.Identity.Name);
                supplier = _supplierManager.RetrieveSupplierWithAgreementsByUserId(usr.UserId);
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable, ex.Message));
                }
                else
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable, ex.Message + "\n" + ex.InnerException.Message));
                }
            }

            if (null == supplier)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Unable to find supplier"));
            }

            try
            {
                foreach (int id in model.ProductIDs)
                {
                    Product product = _productManager.RetrieveProductById(id);
                    _agreementManager.CreateAgreementsForSupplier(supplier, product, null, false);
                }
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable, ex.Message));
                }
                else
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable, ex.Message + "\n" + ex.InnerException.Message));
                }
            }

            return(RedirectToAction("Index", "Manage", new { Message = MVCPresentationLayer.Controllers.ManageController.ManageMessageId.AppliedSuccess }));
        }
        public ActionResult UpdateAgreements(int?supplierId)
        {
            if (null == supplierId)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            try
            {
                SupplierWithAgreements supplier = _supplierManager.RetrieveSupplierWithAgreementsBySupplierId((int)supplierId);
                if (null == supplier)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                if (null != supplier.Agreements)
                {
                    supplier.Agreements.RemoveAll(a => a.IsApproved == false);
                }


                SupplierUpdateAgreementViewModel model = new SupplierUpdateAgreementViewModel()
                {
                    SupplierId         = (int)supplierId,
                    ApprovedAgreements = supplier.Agreements,
                    ProductsToSelect   = _productManager.RetrieveProducts()
                };

                if (model.ApprovedAgreements != null)
                {
                    foreach (AgreementWithProductName a in model.ApprovedAgreements)
                    {
                        model.ProductsToSelect.RemoveAll(p => p.ProductId == a.ProductId);
                    }
                }

                return(View("UpdateAgreements", model));
            }
            catch (Exception)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable));
            }
        }