Exemplo n.º 1
0
        public async Task <AtividadeAvaliativaCompletaDto> ObterPorIdAsync(long id)
        {
            IEnumerable <AtividadeAvaliativaRegencia>   atividadeRegencias   = null;
            IEnumerable <AtividadeAvaliativaDisciplina> atividadeDisciplinas = await repositorioAtividadeAvaliativaDisciplina.ListarPorIdAtividade(id);

            var atividade = await repositorioAtividadeAvaliativa.ObterPorIdAsync(id);

            if (atividade is null)
            {
                throw new NegocioException("Atividade avaliativa não encontrada");
            }
            if (atividade.EhRegencia)
            {
                atividadeRegencias = await repositorioAtividadeAvaliativaRegencia.Listar(id);
            }
            return(MapearParaDto(atividade, atividadeRegencias, atividadeDisciplinas));
        }
Exemplo n.º 2
0
        public async Task <DiaEventoAula> ObterEventoAulasDia(FiltroEventosAulasCalendarioDiaDto filtro)
        {
            List <EventosAulasTipoDiaDto> eventosAulas = new List <EventosAulasTipoDiaDto>();

            if (!filtro.TodasTurmas && string.IsNullOrWhiteSpace(filtro.TurmaId))
            {
                throw new NegocioException("É necessario informar uma turma para pesquisa");
            }

            var temTurmaInformada = !string.IsNullOrEmpty(filtro.TurmaId);
            var data = filtro.Data.Date;

            var perfil = servicoUsuario.ObterPerfilAtual();

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            string rf = usuario.TemPerfilGestaoUes() ? string.Empty : usuario.CodigoRf;

            var disciplinasUsuario = usuario.EhProfessorCj() ?
                                     await consultasDisciplina.ObterDisciplinasPerfilCJ(filtro.TurmaId, usuario.CodigoRf) :
                                     await servicoEOL.ObterDisciplinasPorCodigoTurmaLoginEPerfil(filtro.TurmaId, usuario.CodigoRf, usuario.PerfilAtual);

            var eventos = await repositorioEvento.ObterEventosPorTipoDeCalendarioDreUeDia(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, data, filtro.EhEventoSme);

            var aulas = await ObterAulasDia(filtro, data, perfil, rf, disciplinasUsuario);

            var atividades = await repositorioAtividadeAvaliativa.ObterAtividadesPorDia(filtro.DreId, filtro.UeId, data, rf, filtro.TurmaId);

            ObterEventosParaEventosAulasDia(eventosAulas, eventos);

            var turmasAulas = aulas.GroupBy(x => x.TurmaId).Select(x => x.Key);

            var turmasAbrangencia = await ObterTurmasAbrangencia(turmasAulas, filtro.TurmaHistorico);

            var idsDisciplinasAulas = aulas.Select(a => long.Parse(a.DisciplinaId)).Distinct().ToList();

            var idsDisciplinasCompartilhadas = aulas.Where(a => !String.IsNullOrEmpty(a.DisciplinaCompartilhadaId) && !a.DisciplinaCompartilhadaId.Equals("null"))
                                               .Select(a => long.Parse(a.DisciplinaCompartilhadaId)).Distinct();

            if (idsDisciplinasCompartilhadas != null && idsDisciplinasCompartilhadas.Any())
            {
                idsDisciplinasAulas.AddRange(idsDisciplinasCompartilhadas);
            }

            IEnumerable <DisciplinaDto> disciplinasEol = new List <DisciplinaDto>();

            if (idsDisciplinasAulas != null && idsDisciplinasAulas.Any())
            {
                disciplinasEol = servicoEOL.ObterDisciplinasPorIds(idsDisciplinasAulas.ToArray());
            }

            aulas
            .ToList()
            .ForEach(x =>
            {
                bool podeCriarAtividade = true;
                var listaAtividades     = atividades.Where(w => w.DataAvaliacao.Date == x.DataAula.Date && w.TurmaId == x.TurmaId &&
                                                           PossuiDisciplinas(w.Id, x.DisciplinaId)).ToList();
                var disciplina = disciplinasEol?.FirstOrDefault(d => d.CodigoComponenteCurricular.ToString().Equals(x.DisciplinaId));
                var disciplinaCompartilhada = disciplinasEol?.FirstOrDefault(d => d.CodigoComponenteCurricular.ToString().Equals(x.DisciplinaCompartilhadaId));
                if (atividades != null && disciplina != null)
                {
                    foreach (var item in listaAtividades)
                    {
                        if (disciplina.Regencia)
                        {
                            var disciplinasRegenciasComAtividades = repositorioAtividadeAvaliativaRegencia.Listar(item.Id).Result;

                            disciplinasRegenciasComAtividades.ToList().ForEach(r => r.DisciplinaContidaRegenciaNome = servicoEOL.ObterDisciplinasPorIds(new long[] { Convert.ToInt64(r.DisciplinaContidaRegenciaId) }).FirstOrDefault().Nome);

                            item.AtividadeAvaliativaRegencia = new List <AtividadeAvaliativaRegencia>();
                            item.AtividadeAvaliativaRegencia.AddRange(disciplinasRegenciasComAtividades);
                            podeCriarAtividade = true;
                        }
                        else
                        {
                            podeCriarAtividade = false;
                        }
                    }
                }

                var turma = turmasAbrangencia.FirstOrDefault(t => t.CodigoTurma.Equals(x.TurmaId));

                eventosAulas.Add(new EventosAulasTipoDiaDto
                {
                    Id         = x.Id,
                    TipoEvento = x.AulaCJ ? "CJ" : "Aula",
                    DadosAula  = new DadosAulaDto
                    {
                        DisciplinaId = disciplina?.CodigoComponenteCurricular ?? null,
                        Disciplina   = $"{(disciplina?.Nome ?? "Disciplina não encontrada")} {(x.TipoAula == TipoAula.Reposicao ? "(Reposição)" : "")} {(x.Status == EntidadeStatus.AguardandoAprovacao ? "- Aguardando aprovação" : "")}",
                        DisciplinaCompartilhadaId = disciplinaCompartilhada?.CodigoComponenteCurricular ?? null,
                        DisciplinaCompartilhada   = $"{(disciplinaCompartilhada?.Nome ?? "Disciplina não encontrada")} ",
                        EhRegencia                = disciplina.Regencia,
                        EhCompartilhada           = disciplina.Compartilhada,
                        PermiteRegistroFrequencia = disciplina.RegistraFrequencia && !x.SomenteConsulta,
                        podeCadastrarAvaliacao    = podeCriarAtividade,
                        Horario        = x.DataAula.ToString("hh:mm tt", CultureInfo.InvariantCulture),
                        Modalidade     = turma?.Modalidade.GetAttribute <DisplayAttribute>().Name ?? "Modalidade",
                        Tipo           = turma?.TipoEscola.GetAttribute <DisplayAttribute>().ShortName ?? "Escola",
                        Turma          = x.TurmaNome,
                        UnidadeEscolar = x.UeNome,
                        Atividade      = listaAtividades
                    }
                });
            });

            return(new DiaEventoAula
            {
                EventosAulas = eventosAulas,
                Letivo = comandosDiasLetivos.VerificarSeDataLetiva(eventos, data)
            });
        }
Exemplo n.º 3
0
        public async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Alterar(AtividadeAvaliativaDto dto, long id)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            var disciplina          = ObterDisciplina(dto.DisciplinasId[0]);
            var atividadeAvaliativa = MapearDtoParaEntidade(dto, id, usuario.CodigoRf, disciplina.Regencia);

            var atividadeDisciplinas = await repositorioAtividadeAvaliativaDisciplina.ListarPorIdAtividade(id);

            atividadeAvaliativa.PodeSerAlterada(usuario);

            await VerificaSeProfessorPodePersistirTurma(usuario.CodigoRf, atividadeAvaliativa.TurmaId, dto.DisciplinasId[0], atividadeAvaliativa.DataAvaliacao, usuario);

            unitOfWork.IniciarTransacao();

            if (disciplina.Regencia)
            {
                var regencias = await repositorioAtividadeAvaliativaRegencia.Listar(atividadeAvaliativa.Id);

                foreach (var regencia in regencias)
                {
                    repositorioAtividadeAvaliativaRegencia.Remover(regencia);
                }
                foreach (string idRegencia in dto.DisciplinaContidaRegenciaId)
                {
                    var ativRegencia = new AtividadeAvaliativaRegencia
                    {
                        AtividadeAvaliativaId       = atividadeAvaliativa.Id,
                        DisciplinaContidaRegenciaId = idRegencia
                    };
                    await repositorioAtividadeAvaliativaRegencia.SalvarAsync(ativRegencia);
                }
            }

            foreach (var atividadeDisciplina in atividadeDisciplinas)
            {
                atividadeDisciplina.Excluir();
                var existeDisciplina = dto.DisciplinasId.Any(a => a == atividadeDisciplina.DisciplinaId);
                if (existeDisciplina)
                {
                    atividadeDisciplina.Excluido = false;
                }
                await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(atividadeDisciplina);
            }

            foreach (var disciplinaId in dto.DisciplinasId)
            {
                var existeDisciplina = atividadeDisciplinas.Any(a => a.DisciplinaId == disciplinaId);
                if (!existeDisciplina)
                {
                    var novaDisciplina = new AtividadeAvaliativaDisciplina
                    {
                        AtividadeAvaliativaId = atividadeAvaliativa.Id,
                        DisciplinaId          = disciplinaId
                    };
                    await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(novaDisciplina);
                }
            }

            await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa);

            unitOfWork.PersistirTransacao();

            mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa alterada com sucesso", true));
            mensagens.AddRange(await CopiarAtividadeAvaliativa(dto, atividadeAvaliativa.ProfessorRf));

            return(mensagens);
        }