Exemplo n.º 1
0
        public async Task <IActionResult> UpdateProduct(int productId, DtoUpdateProduct product)
        {
            if (productId != product.Id)
            {
                return(BadRequest()); // 400 Status Kodu
            }

            var updateProduct = await db.Product.Where(i => i.Id == productId).FirstOrDefaultAsync();

            if (updateProduct == null)
            {
                return(NotFound());
            }

            using (var transaction = await db.Database.BeginTransactionAsync())
            {
                try
                {
                    updateProduct.ProductName  = product.ProductName;
                    updateProduct.ProductPrice = product.ProductPrice;
                    updateProduct.CategoryId   = product.CategoryId;

                    await transaction.CommitAsync();

                    return(CreatedAtAction("GetProduct", new { productId = updateProduct.Id }, updateProduct));
                }
                catch (Exception e)
                {
                    await transaction.RollbackAsync();

                    return(StatusCode(500));
                }
            }
        }
Exemplo n.º 2
0
        public async Task <DtoProduct> UpdateAsync(DtoUpdateProduct model)
        {
            try
            {
                ValidationResult validationResult = updateValidator.Validate(model);
                if (!validationResult.IsSuccessful)
                {
                    throw new MissingDataException(validationResult.ErrorMessage);
                }

                Product product = await dbContext.Products.FirstOrDefaultAsync(x => x.Id == model.Guid);

                if (product is null)
                {
                    throw new NullReferenceException($"Not found product with id {model.Guid}");
                }

                product.Name  = model.Name;
                product.Price = model.Price;

                var result = dbContext.Products.Update(product);
                await dbContext.SaveChangesAsync();

                return(mapper.Map <Product, DtoProduct>(result.Entity));
            }
            catch (Exception ex)
            {
                logger.LogError(ex, $"Error on {nameof(UpdateAsync)} in {nameof(ProductsService)} Entity: {model}");

                throw;
            }
        }
        public async Task <IActionResult> PutAsync([FromBody] DtoUpdateProduct model)
        {
            try
            {
                DtoProduct product = await service.UpdateAsync(model);

                return(Ok(product));
            }
            catch
            {
                return(BadRequest());
            }
        }
Exemplo n.º 4
0
        public ValidationResult Validate(DtoUpdateProduct model)
        {
            if (model.Guid == Guid.Empty)
            {
                return(new ValidationResult {
                    ErrorMessage = "Product Guid is empty"
                });
            }
            if (model.Price < MinimalProductPrice)
            {
                return(new ValidationResult {
                    ErrorMessage = $"Product Price is below minimal, is: {model.Price}, minimal is: {MinimalProductPrice}"
                });
            }
            if (model.Price > MaximalProductPrice)
            {
                return(new ValidationResult {
                    ErrorMessage = $"Product Price is above maximal, is: {model.Price}, minimal is: {MaximalProductPrice}"
                });
            }
            if (model.Name.Length < MinimalProductNameLength)
            {
                return(new ValidationResult {
                    ErrorMessage = $"Product Name is below minimal length, is: {model.Name.Length}, minimal is: {MaximalProductNameLength}"
                });
            }
            if (model.Name.Length > MaximalProductNameLength)
            {
                return(new ValidationResult {
                    ErrorMessage = $"Product Name is below minimal length, is: {model.Name.Length}, maximal is: {MaximalProductNameLength}"
                });
            }

            return(new ValidationResult {
                IsSuccessful = true
            });
        }