public override async Task <Pedido> AddAsync(Pedido entity) { var validPedido = await ValidAddPedido(entity); if (validPedido) { return(await _pedidoRepository.AddAsync(entity)); } return(entity); }
public async Task <ActionResult <Pedido> > Adicionar(Pedido pedido) { if (!ModelState.IsValid) { return(CustomResponse(ModelState)); } //pedido.id = Guid.NewGuid(); await _pedidoRepository.AddAsync(pedido); return(CustomResponse(pedido)); }
public async Task <Pedido> CreatePedidoAsync(Pedido pedido) { if (pedido.EValido()) { pedido.Cliente = await _clienteRepository.GetByIdAsync(pedido.ClienteId); pedido.DataHoraInclusao = DateTime.Now; pedido.Situacao = (int)StatusPedido.AGUARDANDO_PAGAMENTO; var servicoPagamento = _pagamentoServiceFactory.GetPagamentoServico(pedido.Pagamento.TipoPagamento); var responseGateway = await servicoPagamento.RequisitaPagamento(pedido.Pagamento); pedido.GatewayPagamentoId = responseGateway.Id.ToString(); await _pedidoRepository.AddAsync(pedido); return(pedido); } else { throw new Exception("Pedido inválido"); } }
public async Task HandleAsync(CriarPedidoCommand command) { var comanda = await _comandaRepository.GetByAsync(command.ComandaId); if (comanda.IsNull()) { throw new ComandaNaoEncontradaException(); } if (comanda.SituacaoId != (int)EComandaSituacao.Aberta) { throw new ComandaMovimentoAbertoNaoEncontradoException(); } var comandaMovimento = comanda.Movimentos.SingleOrDefault(x => x.DataAbertura.IsNotNull() && x.DataFechamento.IsNull()); if (comandaMovimento.IsNull()) { throw new ArgumentNullException(); } var itensPedido = new List <PedidoItem>(); foreach (var item in command.Itens) { var produto = await _produtoRepository.GetByAsync(item.ProdutoId); if (produto.IsNull()) { throw new ProdutoNaoEncontradoException(); } var itemPedido = new PedidoItem { ProdutoId = item.ProdutoId, Observacao = item.Observacao }; if (produto.TempoPreparo.HasValue) { itemPedido.Producao = new PedidoItemProducao { PrioridadeId = (int)EPedidoItemProducaoPrioridade.Normal }; itemPedido.SituacaoId = (int)EPedidoItemSituacao.AgardandoProducao; } else { itemPedido.SituacaoId = (int)EPedidoItemSituacao.Finalizado; } itensPedido.Add(itemPedido); } var pedido = new Domain.Models.Pedido { SituacaoId = (int)EPedidoSituacao.Criado, Observacao = command.Observacao, Data = DateTime.Now, ComandaMovimentoId = comandaMovimento.Id, Itens = itensPedido }; await _pedidoRepository.AddAsync(pedido); }