Example #1
0
        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);
        }