示例#1
0
        public ActionResult updateCategory(long id, [FromBody] UpdateProductCategoryModelView modelView)
        {
            try
            {
                GetProductCategoryModelView updatedCategoryModelView = new core.application.ProductCategoryController().updateProductCategory(id, modelView);

                return(Ok(updatedCategoryModelView));
            }
            catch (ArgumentException e)
            {
                return(BadRequest(new { error = e.Message }));
            }
        }
        /// <summary>
        /// Updates a ProductCategory with a given database identifier with the data in given ModelView.
        /// </summary>
        /// <param name="id">ProductCategory's database identifier.</param>
        /// <param name="modelView">ModelView containing the data being updated.</param>
        /// <returns>A ModelView with the updated ProductCategory data.</returns>
        public GetProductCategoryModelView updateProductCategory(long id, UpdateProductCategoryModelView modelView)
        {
            ProductCategoryRepository repository = PersistenceContext.repositories().createProductCategoryRepository();

            ProductCategory category = repository.find(id);

            string newName = modelView.name;

            if (!category.changeName(newName))
            {
                throw new ArgumentException(ERROR_INVALID_NAME);
            }

            category = repository.update(category);

            if (category == null)
            {
                throw new ArgumentException(ERROR_DUPLICATE_NAME);
            }

            return(ProductCategoryModelViewService.fromEntity(category));
        }