public override async Task <Pedido> AddAsync(Pedido entity)
        {
            var validPedido = await ValidAddPedido(entity);

            if (validPedido)
            {
                return(await _pedidoRepository.AddAsync(entity));
            }

            return(entity);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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");
            }
        }
Exemplo n.º 4
0
        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);
        }