public async Task <ActionResult> Post([FromBody] ProductDtoCreate product) { if (!ModelState.IsValid) { return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido")); } if (product.qtde_estoque < 0 || product.valor_unitario < 0) { return(StatusCode((int)HttpStatusCode.PreconditionFailed, "Os valores informados não são válidos")); } try { var result = await _service.Post(product); if (result != null) { return(StatusCode((int)HttpStatusCode.OK, "Produto Cadastrado")); } else { return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido")); } } catch (ArgumentException) { return(StatusCode((int)HttpStatusCode.BadRequest, "Ocorreu um erro Desconhecido")); } }
public async Task <ActionResult> Store([FromBody] ProductDtoCreate product) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var result = await _service.Post(product); if (result != null) { return(Created(new Uri(Url.Link("GetById", new { id = result.Id })), result)); } else { return(BadRequest()); } } catch (Exception e) { var errorCode = (int)HttpStatusCode.InternalServerError; var msg = e.Message; if (msg.StartsWith("BadRequest:")) { errorCode = (int)HttpStatusCode.BadRequest; msg = msg.Split(": ")[1]; } return(StatusCode(errorCode, new { error = msg })); } }
public ProductTestes() { idUsuario = Guid.NewGuid(); NomeProdutoAlterado = Faker.Name.FullName(); valor_unitarioAlterado = Faker.RandomNumber.Next(0, 100000); qtde_estoqueAlterado = Faker.RandomNumber.Next(0, 1000000); for (int i = 0; i < 10; i++) { var dto = new ProductDto() { Id = Guid.NewGuid(), nome = Faker.Name.FullName(), valor_unitario = Faker.RandomNumber.Next(0, 100000), qtde_estoque = Faker.RandomNumber.Next(0, 100000) }; listaProductDto.Add(dto); } ProductDto = new ProductDto() { Id = idUsuario, nome = NomeProduto, valor_unitario = valor_unitarioProduto, qtde_estoque = qtde_estoqueProduto, DataUltCompra = DateTime.UtcNow, ValorUltVenda = Faker.RandomNumber.Next(0, 100000) }; ProductDtoCreate = new ProductDtoCreate() { nome = NomeProduto, valor_unitario = valor_unitarioProduto, qtde_estoque = qtde_estoqueProduto }; ProductDtoCreateResult = new ProductDtoCreateResult() { Id = idUsuario, nome = NomeProduto, valor_unitario = valor_unitarioProduto, qtde_estoque = qtde_estoqueProduto, }; ProductDtoUpdate = new ProductDtoUpdate() { Id = idUsuario, nome = NomeProdutoAlterado, valor_unitario = valor_unitarioAlterado, qtde_estoque = qtde_estoqueAlterado }; ProductDtoUpdateResult = new ProductDtoUpdateResult() { Id = idUsuario, nome = NomeProdutoAlterado, valor_unitario = valor_unitarioAlterado, qtde_estoque = qtde_estoqueAlterado }; }
public async Task <ProductDtoCreateResult> Post(ProductDtoCreate product) { var model = _mapper.Map <ProductModel>(product); var entity = _mapper.Map <ProductEntity>(model); var result = await _productrepository.InsertAsync(entity); return(_mapper.Map <ProductDtoCreateResult>(result)); }
public async Task <ActionResult <Product> > PostProduct([FromBody] ProductDtoCreate product) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var result = await _service.Post(product); if (result != null) { return(CreatedAtAction("GetProduct", new { id = result.Id }, product)); } return(BadRequest()); } catch (ArgumentException ex) { return(StatusCode((int)HttpStatusCode.InternalServerError, ex)); } }
public async Task E_Possivel_Realizar_Cotroller_BadRequest() { var serviceMock = new Mock <IProductService>(); var Nome = Faker.Name.FullName(); var Valor_Unitario = Faker.RandomNumber.Next(0, 10000); var qtde_Estoque = Faker.RandomNumber.Next(0, 10000); serviceMock.Setup(m => m.Post(It.IsAny <ProductDtoCreate>())).ReturnsAsync( new ProductDtoCreateResult { Id = Guid.NewGuid(), nome = Nome, valor_unitario = Valor_Unitario, qtde_estoque = qtde_Estoque } ); _controller = new ProductsController(serviceMock.Object); _controller.ModelState.AddModelError("Name", "É um campo obrigatório"); Mock <IUrlHelper> url = new Mock <IUrlHelper>(); url.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns("http://localhost:5000"); _controller.Url = url.Object; var ProductDtoCreate = new ProductDtoCreate { nome = Nome, valor_unitario = Valor_Unitario, qtde_estoque = qtde_Estoque }; var result = await _controller.Post(ProductDtoCreate); ObjectResult resultValue = Assert.IsType <ObjectResult>(result); Assert.Equal(400, resultValue.StatusCode); Assert.Equal("Ocorreu um erro Desconhecido", resultValue.Value); }
public async Task <ProductDtoCreateResult> Post(ProductDtoCreate product) { var model = _mapper.Map <ProductModel>(product); var entity = _mapper.Map <ProductEntity>(model); var idExist = await _repository.ExistAsync(entity.Id); if (idExist) { entity.Id = Guid.NewGuid(); } //Verifica se o nome existe em outro produto var nameExist = await _repository.FindByName(product.Name); if (nameExist != null) { throw new Exception("BadRequest: Nome já utilizado em outro produto"); } var result = await _repository.InsertAsync(entity); return(_mapper.Map <ProductDtoCreateResult>(result)); }
public async Task E_Possivel_Realizar_Cotroller_OutRange() { var serviceMock = new Mock <IProductService>(); var Nome = Faker.Name.FullName(); var Valor_Unitario = Faker.RandomNumber.Next(-10, 0); var qtde_Estoque = Faker.RandomNumber.Next(-10, 0); serviceMock.Setup(m => m.Post(It.IsAny <ProductDtoCreate>())).ReturnsAsync( new ProductDtoCreateResult { Id = Guid.NewGuid(), nome = Nome, valor_unitario = Valor_Unitario, qtde_estoque = qtde_Estoque } ); _controller = new ProductsController(serviceMock.Object); Mock <IUrlHelper> url = new Mock <IUrlHelper>(); url.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns("http://localhost:5000"); _controller.Url = url.Object; var ProductDtoCreate = new ProductDtoCreate { nome = Nome, valor_unitario = Valor_Unitario, qtde_estoque = qtde_Estoque }; var result = await _controller.Post(ProductDtoCreate); ObjectResult resultValue = Assert.IsType <ObjectResult>(result); Assert.Equal(412, resultValue.StatusCode); Assert.Equal("Os valores informados não são válidos", resultValue.Value); }
public async Task <Product> Post(ProductDtoCreate product) { var entity = _mapper.Map <Product>(product); return(await _repository.InsertAsync(entity)); }