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