public async Task <ActionResult <Product> > PostProduct([FromBody] ProductCreatRequest product) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var validator = new ProductCreateRequestValidator(); if (!validator.IsValid(product)) { return(BadRequest(new { error = "Produto inválido!" })); } var prod = product.ConvertContractToProduct(); var modelValidator = new ProductCreateValidator(_context, prod); //atribui a variavel erros a lista de erros encontrados var errors = modelValidator.IsValid(); // verificando se existe algum erro na lista errors if (errors.Count() > 0) { return(BadRequest(new { error = errors })); } if (!modelValidator.ExistingProduct()) { return(BadRequest(new { error = "ERRO! Produto existente." })); } _context.Product.Add(prod); await _context.SaveChangesAsync(); return(CreatedAtAction("GetProduct", new { id = prod.Id }, prod)); }
public async Task ProdutoInvalidoParaInclusao() //transforma em tarefa, independente de sincronismo { var produto = new ProductCreatRequest { Description = "PRODUTO TESTE", Price = 30, Quantity = 1, Category = "" }; Assert.False(_validator.IsValid(produto)); }
public static Product ConvertContractToProduct(this ProductCreatRequest product) { var prod = new Product { RegisterDate = DateTime.Now, Description = product.Description, Quantity = product.Quantity, Price = product.Price }; if (Enum.GetNames(typeof(Category)).Contains(product.Category)) { prod.Category = (Category)Enum.Parse(typeof(Category), product.Category); } return(prod); }
public bool IsValid(ProductCreatRequest prod) { bool resposta = true; if (string.IsNullOrEmpty(prod.Description)) { resposta = false; } if (string.IsNullOrEmpty(prod.Category)) { resposta = false; } if (double.IsNaN(prod.Price)) { resposta = false; } return(resposta); }