Пример #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 <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());
        }
Пример #3
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);
        }