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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }