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