示例#1
0
        public async Task <ComandaDto> CadastrarAsync(ComandaDto comandaDto)
        {
            using var dbTransaction = _repository.BeginTransaction(_validador);
            if (!await _validador.ValidarAsync(comandaDto))
            {
                return(null);
            }

            Comanda comanda = comandaDto.ToEntity();

            comanda.Id = _geradorGuidService.GetNexGuid();

            foreach (var pedido in comanda.Pedidos)
            {
                pedido.Id = _geradorGuidService.GetNexGuid();
            }

            comanda.Prepare();
            comanda.DataCadastro = DateTime.Now;
            Comanda comandaDb = await _repository.CadastrarAsync(comanda);

            ComandaDto dto = comandaDb.ToDto();
            await _serviceCache.SalvarAsync(dto.Id, dto);

            await _mensageriaService.EnviarAsync(new ComandaCadastroCommand(dto));

            return(dto);
        }
示例#2
0
        public async Task NaoDeveEditarCasoPedidoContenhaSituacaoInvalida()
        {
            IComandaService comandaService = _serviceProvider.GetRequiredService <IComandaService>();
            ComandaDto      comanda        = new ComandaDto
            {
                Id       = Guid.NewGuid(),
                Situacao = ComandaSituacao.Aberta
            };

            foreach (var produto in ProdutoMock.ObterListaDeProdutos())
            {
                comanda.Pedidos.Add(new ComandaPedidoDto()
                {
                    ProdutoId    = produto.Id,
                    ProdutoNome  = produto.Nome,
                    ProdutoPreco = produto.Preco,
                    Quantidade   = 1,
                    Situacao     = default(ComandaPedidoSituacao)
                });
            }

            var result = await comandaService.CadastrarAsync(comanda);

            result.Should().BeNull();
            comandaService.MensagensValidacao.Should().NotBeNull(StringHelper.JoinHtmlMensagem(comandaService.MensagensValidacao));
            comandaService.MensagensValidacao.Any(c => c == ComandaMessage.SituacaoInvalida).Should().BeTrue();
        }
示例#3
0
        public async Task DeveEditarComandaValido()
        {
            IComandaService comandaService = _serviceProvider.GetRequiredService <IComandaService>();
            ComandaDto      comanda        = new ComandaDto
            {
                Id       = Guid.NewGuid(),
                Situacao = ComandaSituacao.Aberta
            };

            foreach (var produto in ProdutoMock.ObterListaDeProdutos())
            {
                comanda.Pedidos.Add(new ComandaPedidoDto()
                {
                    ProdutoId    = Guid.NewGuid(),
                    ProdutoNome  = produto.Nome,
                    ProdutoPreco = produto.Preco,
                    Quantidade   = 1,
                    Situacao     = ComandaPedidoSituacao.Pedido
                });
            }

            var result = await comandaService.EditarAsync(comanda);

            result.Should().NotBeNull(StringHelper.JoinHtmlMensagem(comandaService.MensagensValidacao));
        }
示例#4
0
        public async Task <ComandaDto> Criar(ComandaDto dto)
        {
            var criarComandaCommand = MapperModelAndDto.Map <CriarComandaCommand>(dto);

            dto.IDComanda = await Mediator.Send(criarComandaCommand);

            return(dto);
        }
示例#5
0
        public async Task NaoDeveCadastarCasoNaoContenhaPedido()
        {
            IComandaService comandaService = _serviceProvider.GetRequiredService <IComandaService>();
            ComandaDto      comanda        = new ComandaDto
            {
                Situacao = ComandaSituacao.Aberta
            };

            var result = await comandaService.CadastrarAsync(comanda);

            result.Should().BeNull();
            comandaService.MensagensValidacao.Should().NotBeNull(StringHelper.JoinHtmlMensagem(comandaService.MensagensValidacao));
            comandaService.MensagensValidacao.Any(c => c == ComandaMessage.PedidoObrigatorio).Should().BeTrue();
        }
 public IHttpActionResult AfterSend(ComandaDto data)
 {
     try
     {
         Log.Debug("ComandaController.AfterSend: Inicio");
         // Desarrollo de lógica de apertura
         LogData(data);
         // Fin de lógica de apertura
         Log.Debug("ComandaController.AfterSend: Fin");
         return(Ok());
     }
     catch (Exception e)
     {
         Log.Fatal("ComandaController.AfterSend", e);
         return(InternalServerError());
     };
 }
示例#7
0
        public async Task <ComandaDto> Fechar(Guid comandaId)
        {
            using var dbTransaction = _repository.BeginTransaction(_validador);
            if (!_validador.PermiteAlterarSituacao(comandaId))
            {
                return(null);
            }

            Comanda comanda = await _repository.FecharAsync(comandaId);

            ComandaDto dto = comanda.ToDto();
            await _serviceCache.SalvarAsync(dto.Id, dto);

            await _mensageriaService.EnviarAsync(new ComandaFecharCommand(dto));

            return(comanda?.ToDto());
        }
 private void LogData(ComandaDto data)
 {
     Log.Info("Detalle de comanda");
     Log.Info(data.ComandaId);
     Log.Info(data.Fecha);
     Log.Info(data.Hora);
     Log.Info(data.Estado);
     Log.Info(data.Total);
     Log.Info("Detalle de renglones");
     if (data.Detalle != null)
     {
         foreach (var renglon in data.Detalle)
         {
             string line = $"{renglon.NumeroRenglon};{renglon.CodigoArticulo}; ;{renglon.Cantidad}; ;{renglon.Importe}";
             Log.Info(line);
         }
     }
 }
示例#9
0
        public async Task NaoDeveEditarCasoPedidoNaoContenhaProduto()
        {
            IComandaService comandaService = _serviceProvider.GetRequiredService <IComandaService>();
            ComandaDto      comanda        = new ComandaDto
            {
                Id       = Guid.NewGuid(),
                Situacao = ComandaSituacao.Aberta
            };

            comanda.Pedidos.Add(new ComandaPedidoDto()
            {
                Quantidade = 1, Situacao = ComandaPedidoSituacao.Pedido
            });

            var result = await comandaService.EditarAsync(comanda);

            result.Should().BeNull();
            comandaService.MensagensValidacao.Should().NotBeNull(StringHelper.JoinHtmlMensagem(comandaService.MensagensValidacao));
            comandaService.MensagensValidacao.Any(c => c == ComandaMessage.ProdutoObrigatorio).Should().BeTrue();
        }
示例#10
0
        public async Task <ComandaDto> EditarAsync(ComandaDto comandaDto)
        {
            using var dbTransaction = _repository.BeginTransaction(_validador);
            if (!await _validador.ValidarAsync(comandaDto))
            {
                return(null);
            }

            Comanda comanda = comandaDto.ToEntity();

            comanda.Prepare();
            await _repository.EditarAsync(comanda);

            ComandaDto dto = comanda.ToDto();
            await _serviceCache.SalvarAsync(dto.Id, dto);

            await _mensageriaService.EnviarAsync(new ComandaEditarCommand(dto));

            return(dto);
        }
示例#11
0
        private void LogData(ComandaDto data)
        {
            Log.Info("Detalle de comanda");
            Log.Info(data.ComandaId);
            Log.Info(data.Fecha);
            Log.Info(data.Hora);
            Log.Info(data.Estado);
            Log.Info(data.Total);
            Log.Info("Detalle de renglones");
            if (data.Detalle != null)
            {
                foreach (var renglon in data.Detalle)
                {
                    string line = $"{renglon.NumeroRenglon};{renglon.CodigoArticulo}; ;{renglon.Cantidad}; ;{renglon.Importe}";
                    Log.Info(line);
                }
            }
            Log.Info("Json Envío a cocina");
            var json = new JavaScriptSerializer().Serialize(data);

            Log.Info(json);
        }
示例#12
0
 public void CreateNewComanda(ComandaDto comandaDto)
 {
     comandaService.CreateNew(comandaDto);
 }
示例#13
0
 public async Task <IActionResult> Editar(ComandaDto dto)
 {
     return(await ExecutarFuncaoAsync(() => _service.EditarAsync(dto)));
 }
示例#14
0
 public ComandaCadastroCommand(ComandaDto comanda)
 {
     Comanda = comanda;
 }
示例#15
0
        public async Task <bool> Atualizar(ComandaDto dto)
        {
            var atualizarComandaCommand = MapperModelAndDto.Map <AtualizarComandaCommand>(dto);

            return(await Mediator.Send(atualizarComandaCommand));
        }
示例#16
0
 public static Comanda ToEntity(this ComandaDto resource)
 {
     return(resource == null ? null : Mapper.Map <Comanda>(resource));
 }
示例#17
0
 public ComandaConfirmarCommand(ComandaDto comanda)
 {
     Comanda = comanda;
 }
示例#18
0
 public ComandaEditarCommand(ComandaDto comanda)
 {
     Comanda = comanda;
 }
示例#19
0
 public ComandaFecharCommand(ComandaDto comanda)
 {
     Comanda = comanda;
 }
示例#20
0
 public void UpdateComanda(ComandaDto comandaDto)
 {
     comandaService.Update(comandaDto);
 }