示例#1
0
        public async Task WhenAsync(CreateProductDto c)
        {
            var idObj         = (c as ICreateProduct).ProductId;
            var uriParameters = new ProductUriParameters();

            uriParameters.Id = idObj;

            var req = new ProductPutRequest(uriParameters, (CreateProductDto)c);

            var resp = await _ramlClient.Product.Put(req);

            ProductProxyUtils.ThrowOnHttpResponseError(resp);
        }
        public async Task <ProductDTO> UpdateAsync(ProductPutRequest model, ApiDbContext apiDbContext)
        {
            try
            {
                var product = await apiDbContext.Products.FindAsync(model.Id);

                if (product == null)
                {
                    throw new Exception($"No existe el producto {model.Name} con id {model.Id}");
                }

                var productFound = apiDbContext.Products.FirstOrDefault(p => p.Id != model.Id && p.Code.ToUpper().Trim().Equals(model.Code.ToUpper().Trim()));
                if (productFound != null)
                {
                    throw new Exception($"Ya existe un producto con el código {model.Code}");
                }

                product.Product_Categories.RemoveAll(pc => !model.CategoryIdList.Contains(pc.CategoryId));
                model.CategoryIdList.Where(mc => !product.Product_Categories.Select(s => s.CategoryId).ToList().Contains(mc)).ToList().ForEach(catId =>
                {
                    product.Product_Categories.Add(new Product_Category
                    {
                        ProductId  = product.Id,
                        CategoryId = catId
                    });
                });

                if (product.Stock.Avaliable != model.Stock)
                {
                    product.Stock.Avaliable   = model.Stock;
                    product.Stock.UpdatedDate = DateTime.Now;
                }

                product.Code        = model.Code;
                product.Name        = model.Name;
                product.Description = model.Description;
                product.IsActive    = model.IsActive;
                product.Price       = model.Price;
                product.Tax         = model.Tax;
                product.Pvp         = model.Pvp;

                await apiDbContext.SaveChangesAsync();

                return(ModelToDTO(product));
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
示例#3
0
        public async Task <IActionResult> Update(ProductPutRequest model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception("Petición de actualización inválida");
                }

                return(Ok(await _productService.UpdateAsync(model, _apiDbContext)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }