public async Task <AulaConsultaDto> BuscarPorId(long id) { var aula = repositorio.ObterPorId(id); if (aula == null || aula.Excluido) { throw new NegocioException($"Aula de id {id} não encontrada"); } if (aula.AulaPaiId.HasValue) { aula.AulaPai = await repositorio.ObterCompletoPorIdAsync(aula.AulaPaiId.Value); } var aberto = await AulaDentroPeriodo(aula); var usuarioLogado = await servicoUsuario.ObterUsuarioLogado(); string disciplinaId = await ObterDisciplinaIdAulaEOL(usuarioLogado, aula, usuarioLogado.EhProfessorCj()); return(MapearParaDto(aula, disciplinaId, aberto)); }
public async Task <bool> Handle(ExcluirAulaRecorrenteCommand request, CancellationToken cancellationToken) { var aulaOrigem = await repositorioAula.ObterCompletoPorIdAsync(request.AulaId); if (aulaOrigem == null) { throw new NegocioException("Não foi possível obter a aula."); } var fimRecorrencia = await mediator.Send(new ObterFimPeriodoRecorrenciaQuery(aulaOrigem.TipoCalendarioId, aulaOrigem.DataAula.Date, request.Recorrencia)); var aulasRecorrencia = await repositorioAula.ObterAulasRecorrencia(aulaOrigem.AulaPaiId ?? aulaOrigem.Id, aulaOrigem.Id, fimRecorrencia); var listaProcessos = await IncluirAulasEmManutencao(aulaOrigem, aulasRecorrencia); try { List <(DateTime data, bool existeFrequencia, bool existePlanoAula)> aulasComFrenciaOuPlano = new List <(DateTime data, bool existeFrequencia, bool existePlanoAula)>(); var listaExclusoes = new List <(DateTime dataAula, bool sucesso, string mensagem, bool existeFrequente, bool existePlanoAula)>(); listaExclusoes.Add(await TratarExclusaoAula(aulaOrigem, request.Usuario)); foreach (var aulaRecorrente in aulasRecorrencia) { listaExclusoes.Add(await TratarExclusaoAula(aulaRecorrente, request.Usuario)); } //usuario.PerfilAtual = perfilSelecionado; await NotificarUsuario(aulaOrigem.Id, listaExclusoes, request.Usuario, request.ComponenteCurricularNome, aulaOrigem.Turma); } finally { await RemoverAulasEmManutencao(listaProcessos.Select(p => p.Id).ToArray()); } return(true); }