예제 #1
0
        public async Task <Guid> Handle(CriarGarcomCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(request.Cpf))
                {
                    request.Cpf = new Cpf(request.Cpf).ToString();
                }

                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(Guid.Empty));
                }

                var garcom = new Garcom
                {
                    Id   = GeradorGuidService.GetNexGuid(),
                    Cpf  = request.Cpf,
                    Nome = request.Nome
                };

                _garcomRepository.Add(garcom);
                return(await Task.FromResult(garcom.Id));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }
        }
예제 #2
0
        public async Task <Guid> Handle(CriarProdutoCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(Guid.Empty));
                }

                var produto = new Produto
                {
                    Id    = GeradorGuidService.GetNexGuid(),
                    Valor = request.Valor,
                    Nome  = request.Nome
                };

                _produtoRepository.Add(produto);

                return(await Task.FromResult(produto.Id));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }
        }
예제 #3
0
        public async Task <Guid> Handle(CriarComandaCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(Guid.Empty));
                }

                var comanda = new Comanda
                {
                    DataCriacao = DateTime.Now,
                    Mesa        = request.Mesa,
                    Status      = Status.Pendente,
                    Id          = GeradorGuidService.GetNexGuid()
                };

                _comandaRepository.Add(comanda);

                return(await Task.FromResult(comanda.Id));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }
        }
예제 #4
0
        public async Task <Guid> Handle(CriarPedidoCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(Guid.Empty));
                }

                var comanda = _comandaRepository.GetById(request.IDComanda);
                var garcom  = _garcomRepository.GetById(request.IDGarcom);

                var pedido = new Pedido
                {
                    Id             = GeradorGuidService.GetNexGuid(),
                    DataPedido     = DateTime.Now,
                    IDComanda      = comanda.Id,
                    Comanda        = comanda,
                    IDGarcom       = garcom.Id,
                    Garcom         = garcom,
                    Situacao       = SituacaoPedido.Aberto,
                    PedidoProdutos = new List <PedidoProduto>()
                };

                request.Produtos.ForEach(c =>
                {
                    var pedidoProduto = new PedidoProduto
                    {
                        Id         = GeradorGuidService.GetNexGuid(),
                        Produto    = _produtoRepository.GetById(c.IDProduto),
                        IDProduto  = c.IDProduto,
                        Quantidade = c.Quantidade,
                        IDPedido   = c.IDPedido,
                    };

                    pedidoProduto.CalcularValorTotal();

                    pedido.PedidoProdutos.Add(pedidoProduto);
                });

                _pedidoRepository.Add(pedido);

                return(await Task.FromResult(pedido.Id));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }
        }
예제 #5
0
        public async Task <bool> Handle(AlterarStatusPedidoCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(false));
                }

                var pedido = _pedidoRepository.GetById(request.IDPedido);
                pedido.Situacao = request.Situacao;

                if (pedido.Situacao == SituacaoPedido.Finalizado)
                {
                    pedido.Comanda.Status = Status.Encerrado;
                }

                _pedidoRepository.Update(pedido);

                var mensagem = new MensagemCozinhaPedido
                {
                    DataMensagem = DateTime.Now,
                    IDMensagem   = GeradorGuidService.GetNexGuid(),
                    Mensagem     = $"O pedido  da mesa {pedido.Comanda.Mesa} encontra-se na seguinte situação: {request.Situacao.ToString()} - Garçom resposavel: {pedido.Garcom.Nome}"
                };

                await _rabbiqMqService.Send(mensagem, new Uri(Queues.Pedido), cancellationToken);

                return(await Task.FromResult(true));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(false));
            }
        }
예제 #6
0
        public async Task <bool> Handle(AdicionarPedidoProdutoCommand request, CancellationToken cancellationToken)
        {
            try
            {
                if (!request.IsValid())
                {
                    ValidationErrors(request);
                    return(await Task.FromResult(false));
                }

                var pedido  = _pedidoRepository.GetById(request.IDPedido);
                var produto = _produtoRepository.GetById(request.IDProduto);

                var pedidoProduto = new PedidoProduto
                {
                    Id         = GeradorGuidService.GetNexGuid(),
                    IDPedido   = pedido.Id,
                    Pedido     = pedido,
                    Produto    = produto,
                    IDProduto  = produto.Id,
                    Quantidade = request.Quantidade
                };

                pedidoProduto.CalcularValorTotal();

                _pedidoProdutoRepository.Add(pedidoProduto);

                return(await Task.FromResult(true));
            }
            catch (Exception ex)
            {
                await Mediator.Publish(new DomainNotification(request.MessageType, $"Erro: {ex.Message}"), cancellationToken);

                return(await Task.FromResult(false));
            }
        }