public async Task <IActionResult> Post([FromForm] PedidoRequestDto pedidoDto) { var pedido = _mapper.Map <PedidoRequestDto, Pedido>(pedidoDto); await _service.AddPedido(pedido); var pedidoresponseDto = _mapper.Map <Pedido, PedidoResponseDto>(pedido); var response = new ApiResponse <PedidoResponseDto>(pedidoresponseDto); return(Ok(response)); }
public async Task <IActionResult> Put(int id, [FromForm] PedidoRequestDto pedidoDto) { var pedido = _mapper.Map <Pedido>(pedidoDto); pedido.PedidoId = id; await _service.UpdatePedido(pedido); var response = new ApiResponse <bool>(true); return(Ok(response)); }
public async Task <ActionResult> PostAsync([FromBody] PedidoRequestDto dto) { try { var id = ExtensionsController.GetId(this); await _pedidoBusiness.PostAsync(dto, id); return(Ok("Pedido efetuado com sucesso!")); } catch (ArgumentException ex) { LogarErro(ex); return(StatusCode(400, ex.Message)); } catch (Exception ex) { LogarErro(ex); return(StatusCode(500, "Internal server error")); } }
public async Task PostAsync(PedidoRequestDto dto, int usuarioId) { if (await Task.Run(() => !_usuarioBusiness.Exists(x => x.UsuarioId == usuarioId))) { throw new ArgumentException("Usuário não encontrado"); } if (await Task.Run(() => !_formaPagamentoBusiness.Exists(x => x.FormaPagamentoId == dto.FormaPagamentoId))) { throw new ArgumentException("Forma de Pagamento não encontrada"); } if (await Task.Run(() => !_usuarioEnderecoBusiness.Exists(x => x.UsuarioEnderecoId == dto.UsuarioEnderecoId))) { throw new ArgumentException("Endereço de entrega não encontrado"); } foreach (var produto in dto.Itens) { var model = _produtoBusiness.Get(x => x.ProdutoId == produto.ProdutoId); if (model == null) { throw new ArgumentException("Produto não encontrado"); } else { if (model.Ativo == false || model.EmEstoque == false) { throw new ArgumentException("Produto {0} indisponível", model.Nome); } } } using (var transaction = DbContext.Database.BeginTransaction()) { try { var obj = new Pedido() { UsuarioId = usuarioId, ValorTotal = dto.ValorTotal, FormaPagamentoId = dto.FormaPagamentoId, Data = DateTime.Now }; _pedidoRepository.Add(obj); var endereco = _usuarioEnderecoBusiness.Get(dto.UsuarioEnderecoId); _pedidoEntregaRepository.Add(new PedidoEntrega() { PedidoId = obj.PedidoId, Logradouro = endereco.Logradouro, Numero = endereco.Numero, Complemento = endereco.Complemento, Cidade = endereco.Cidade, Bairro = endereco.Bairro, Estado = endereco.Estado, CEP = endereco.CEP }); foreach (var produto in dto.Itens) { var model = _produtoBusiness.Get(produto.ProdutoId); var item = new PedidoItem() { PedidoId = obj.PedidoId, ProdutoId = produto.ProdutoId, Quantidade = produto.Quantidade, PrecoUnitario = produto.PrecoUnitario, ValorTotal = produto.Quantidade * produto.PrecoUnitario }; _pedidoItemBusiness.Add(item); var itemFornecedor = new PedidoItemFornecedor() { PedidoItemId = item.PedidoItemId, CodPedidoItemFornec = GerarPedidoFornecedor(model.FornecedorId, obj.PedidoId), FornecedorId = model.FornecedorId, UltimaAtualizacao = DateTime.Now, StatusId = 1 }; _pedidoItemFornecedorBusiness.Add(itemFornecedor); } transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } }