Exemplo n.º 1
0
        public async Task Migrar(MigrarPlanoAulaDto migrarPlanoAulaDto)
        {
            var usuario = await servicoUsuario.ObterUsuarioLogado();

            var planoAulaDto = repositorio.ObterPorId(migrarPlanoAulaDto.PlanoAulaId);
            var aula         = repositorioAula.ObterPorId(planoAulaDto.AulaId);

            await ValidarMigracao(migrarPlanoAulaDto, usuario.CodigoRf, usuario.EhProfessorCj(), aula.UeId);

            var objetivosPlanoAulaDto = await repositorioObjetivosAula.ObterObjetivosPlanoAula(migrarPlanoAulaDto.PlanoAulaId);

            unitOfWork.IniciarTransacao();

            foreach (var planoTurma in migrarPlanoAulaDto.IdsPlanoTurmasDestino)
            {
                AulaConsultaDto aulaConsultaDto = await
                                                  repositorioAula.ObterAulaDataTurmaDisciplina(
                    planoTurma.Data,
                    planoTurma.TurmaId,
                    migrarPlanoAulaDto.DisciplinaId
                    );

                if (aulaConsultaDto == null)
                {
                    throw new NegocioException($"Não há aula cadastrada para a turma {planoTurma.TurmaId} para a data {planoTurma.Data.ToString("dd/MM/yyyy")} nesta disciplina!");
                }

                var planoCopia = new PlanoAulaDto()
                {
                    Id                          = planoTurma.Sobreescrever ? migrarPlanoAulaDto.PlanoAulaId : 0,
                    AulaId                      = aulaConsultaDto.Id,
                    Descricao                   = planoAulaDto.Descricao,
                    DesenvolvimentoAula         = planoAulaDto.DesenvolvimentoAula,
                    LicaoCasa                   = migrarPlanoAulaDto.MigrarLicaoCasa ? planoAulaDto.LicaoCasa : string.Empty,
                    ObjetivosAprendizagemJurema = !usuario.EhProfessorCj() ||
                                                  migrarPlanoAulaDto.MigrarObjetivos ?
                                                  objetivosPlanoAulaDto.Select(o => o.ObjetivoAprendizagemPlano.ObjetivoAprendizagemJuremaId).ToList() : null,
                    RecuperacaoAula = migrarPlanoAulaDto.MigrarRecuperacaoAula ?
                                      planoAulaDto.RecuperacaoAula : string.Empty
                };

                await Salvar(planoCopia, false);
            }

            unitOfWork.PersistirTransacao();
        }
 public async Task <IEnumerable <ObjetivoAprendizagemAula> > ObterObjetivosPlanoAula(long planoAulaId)
 {
     return(await repositorio.ObterObjetivosPlanoAula(planoAulaId));
 }