public CompraViewModel Adicionar(CompraViewModel compraViewModel) { var compra = Mapper.Map <CompraViewModel, Compra>(compraViewModel); BeginTransaction(); _compraService.Adicionar(compra); Commit(); return(compraViewModel); }
public async Task <ActionResult> AdicionarCompra(AdicionarCompraRequest adicionarRequest) { var cpfToken = User.Identity.Name; //cpf deve estar contido no jwt; Se não tiver, há erro de autenticação var compra = new Compra { Codigo = adicionarRequest.Codigo, Valor = adicionarRequest.Valor, Data = adicionarRequest.Data, }; return(TratarRetorno <AdicionarCompraResponse>( await _compraService.Adicionar(compra, adicionarRequest.CPFRevendedor, cpfToken), nameof(AdicionarCompra))); }
public async Task <ActionResult> Adicionar(CompraDTO compraDTO) { try { if (!ModelState.IsValid) { return(StatusCode(StatusCodes.Status412PreconditionFailed)); } var produto = await _produtoService.ObterPorId(compraDTO.ProdutoId); if (produto.QtdEstoque < compraDTO.QtdComprada) { return(StatusCode(StatusCodes.Status412PreconditionFailed)); } PagamentoDTO pagamentoDTO = new PagamentoDTO(); pagamentoDTO.Cartao = compraDTO.Cartao; pagamentoDTO.Valor = (produto.ValorUnitario * compraDTO.QtdComprada); produto.QtdEstoque = (produto.QtdEstoque - compraDTO.QtdComprada); var result = await _cartaoService.TransacaoCartaoCredito(pagamentoDTO); if (result == null) { return(StatusCode(StatusCodes.Status412PreconditionFailed)); } if (result.Estado.Contains("APROVADO")) { await _produtoService.Atualizar(produto); await _compraService.Adicionar(_mapper.Map <Compra>(compraDTO)); return(Ok()); } else { return(StatusCode(StatusCodes.Status412PreconditionFailed)); } } catch { return(BadRequest()); } }