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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
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)); } }