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 IActionResult CreateProduct(ProductTypeCreateModel productTypeCreate)
        {
            var validator = new ProductCreateValidator();

            if (validator.Validate(productTypeCreate).IsValid)
            {
                var productType = this._mapper.Map <ProductTypeCreateModel, ProductType>(productTypeCreate);
                if (this._uow.ProductTypeRepository.Save(productType))
                {
                    return(RedirectToAction("CreatePost", "Post"));
                }
                else
                {
                    return(RedirectToAction("CreateProduct"));
                }
            }
            return(RedirectToAction("CreateProduct"));
        }