Пример #1
0
 private FiltroAtividadeAvaliativaDto MapearDtoParaFiltroValidacao(AtividadeAvaliativaDto atividadeAvaliativaDto)
 {
     return(new FiltroAtividadeAvaliativaDto()
     {
         DataAvaliacao = atividadeAvaliativaDto.DataAvaliacao,
         DisciplinaContidaRegenciaId = atividadeAvaliativaDto.DisciplinaContidaRegenciaId,
         DreId = atividadeAvaliativaDto.DreId,
         Nome = atividadeAvaliativaDto.Nome,
         TipoAvaliacaoId = (int)atividadeAvaliativaDto.TipoAvaliacaoId,
         TurmaId = atividadeAvaliativaDto.TurmaId,
         UeID = atividadeAvaliativaDto.UeId,
         DisciplinasId = atividadeAvaliativaDto.DisciplinasId
     });
 }
Пример #2
0
        private AtividadeAvaliativa MapearDtoParaEntidade(AtividadeAvaliativaDto dto, long id, string usuarioRf, bool ehRegencia)
        {
            AtividadeAvaliativa atividadeAvaliativa = new AtividadeAvaliativa();

            if (id > 0L)
            {
                atividadeAvaliativa = repositorioAtividadeAvaliativa.ObterPorId(id);
            }
            if (string.IsNullOrEmpty(atividadeAvaliativa.ProfessorRf))
            {
                atividadeAvaliativa.ProfessorRf = usuarioRf;
            }
            atividadeAvaliativa.UeId               = dto.UeId;
            atividadeAvaliativa.DreId              = dto.DreId;
            atividadeAvaliativa.TurmaId            = dto.TurmaId;
            atividadeAvaliativa.Categoria          = dto.CategoriaId;
            atividadeAvaliativa.TipoAvaliacaoId    = dto.TipoAvaliacaoId;
            atividadeAvaliativa.NomeAvaliacao      = dto.Nome;
            atividadeAvaliativa.DescricaoAvaliacao = dto.Descricao;
            atividadeAvaliativa.DataAvaliacao      = dto.DataAvaliacao.Local();
            atividadeAvaliativa.EhRegencia         = ehRegencia;
            return(atividadeAvaliativa);
        }
Пример #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);
        }
Пример #4
0
        private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > ValidarCopias(AtividadeAvaliativaDto atividadeAvaliativaDto, string codigoRf)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();

            var turmasAtribuidasAoProfessor = await ObterTurmasAtribuidasAoProfessor(codigoRf, long.Parse(atividadeAvaliativaDto.DisciplinasId[0]));

            if (atividadeAvaliativaDto.TurmasParaCopiar != null && atividadeAvaliativaDto.TurmasParaCopiar.Any())
            {
                var idsTurmasSelecionadas = atividadeAvaliativaDto.TurmasParaCopiar.Select(x => x.TurmaId).ToList();
                idsTurmasSelecionadas.Add(atividadeAvaliativaDto.TurmaId);

                mensagens.AddRange(ValidaTurmasProfessor(turmasAtribuidasAoProfessor, idsTurmasSelecionadas));

                if (mensagens.Any())
                {
                    return(mensagens);
                }

                mensagens.AddRange(ValidaTurmasAno(turmasAtribuidasAoProfessor, idsTurmasSelecionadas));
            }

            return(mensagens);
        }
Пример #5
0
        private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Salvar(AtividadeAvaliativa atividadeAvaliativa, AtividadeAvaliativaDto dto, bool ehCopia = false)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();

            foreach (var id in dto.DisciplinasId)
            {
                await VerificaSeProfessorPodePersistirTurma(atividadeAvaliativa.ProfessorRf, atividadeAvaliativa.TurmaId, id, atividadeAvaliativa.DataAvaliacao.Date);
            }

            unitOfWork.IniciarTransacao();

            await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa);

            if (atividadeAvaliativa.EhRegencia)
            {
                if (dto.DisciplinaContidaRegenciaId.Length == 0)
                {
                    throw new NegocioException("É necessário informar as disciplinas da regência");
                }

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

            foreach (var id in dto.DisciplinasId)
            {
                var ativDisciplina = new AtividadeAvaliativaDisciplina
                {
                    AtividadeAvaliativaId = atividadeAvaliativa.Id,
                    DisciplinaId          = id
                };
                await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(ativDisciplina);
            }

            unitOfWork.PersistirTransacao();

            if (!ehCopia)
            {
                mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa criada com sucesso", true));
            }

            return(mensagens);
        }
Пример #6
0
 private AtividadeAvaliativa MapearDtoParaEntidade(AtividadeAvaliativa atividadeAvaliativa, AtividadeAvaliativaDto dto, string usuarioRf)
 {
     atividadeAvaliativa.ProfessorRf        = usuarioRf;
     atividadeAvaliativa.UeId               = dto.UeId;
     atividadeAvaliativa.DreId              = dto.DreId;
     atividadeAvaliativa.TurmaId            = dto.TurmaId;
     atividadeAvaliativa.Categoria          = dto.CategoriaId;
     atividadeAvaliativa.TipoAvaliacaoId    = dto.TipoAvaliacaoId;
     atividadeAvaliativa.NomeAvaliacao      = dto.Nome;
     atividadeAvaliativa.DescricaoAvaliacao = dto.Descricao;
     atividadeAvaliativa.DataAvaliacao      = dto.DataAvaliacao.Local();
     atividadeAvaliativa.EhRegencia         = dto.EhRegencia;
     return(atividadeAvaliativa);
 }
Пример #7
0
        private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > CopiarAtividadeAvaliativa(AtividadeAvaliativaDto atividadeAvaliativaDto, string usuarioRf)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();

            if (atividadeAvaliativaDto.TurmasParaCopiar != null && atividadeAvaliativaDto.TurmasParaCopiar.Any())
            {
                mensagens.AddRange(await ValidarCopias(atividadeAvaliativaDto, usuarioRf));

                if (mensagens.Any())
                {
                    return(mensagens);
                }

                foreach (var turma in atividadeAvaliativaDto.TurmasParaCopiar)
                {
                    atividadeAvaliativaDto.TurmaId       = turma.TurmaId;
                    atividadeAvaliativaDto.DataAvaliacao = turma.DataAtividadeAvaliativa;

                    try
                    {
                        await Validar(MapearDtoParaFiltroValidacao(atividadeAvaliativaDto));

                        var atividadeParaCopiar = MapearDtoParaEntidade(new AtividadeAvaliativa(), atividadeAvaliativaDto, usuarioRf);
                        await Salvar(atividadeParaCopiar, atividadeAvaliativaDto, true);

                        mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto($"Atividade copiada para a turma: '{turma.TurmaId}' na data '{turma.DataAtividadeAvaliativa.ToString("dd/MM/yyyy")}'.", true));
                    }
                    catch (NegocioException nex)
                    {
                        mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto($"Erro ao copiar para a turma: '{turma.TurmaId}' na data '{turma.DataAtividadeAvaliativa.ToString("dd/MM/yyyy")}'. {nex.Message}"));
                    }
                }
            }

            return(mensagens);
        }
Пример #8
0
        public async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Inserir(AtividadeAvaliativaDto dto)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();
            var usuario   = await servicoUsuario.ObterUsuarioLogado();

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

            mensagens.AddRange(await Salvar(atividadeAvaliativa, dto));
            mensagens.AddRange(await CopiarAtividadeAvaliativa(dto, atividadeAvaliativa.ProfessorRf));

            return(mensagens);
        }
 public async Task <IActionResult> PostAsync([FromBody] AtividadeAvaliativaDto atividadeAvaliativaDto)
 {
     return(Ok(await comandoAtividadeAvaliativa.Inserir(atividadeAvaliativaDto)));
 }
 public async Task <IActionResult> Alterar([FromBody] AtividadeAvaliativaDto atividadeAvaliativaDto, long id)
 {
     return(Ok(await comandoAtividadeAvaliativa.Alterar(atividadeAvaliativaDto, id)));
 }
        private async Task <IEnumerable <RetornoCopiarAtividadeAvaliativaDto> > Salvar(AtividadeAvaliativa atividadeAvaliativa, AtividadeAvaliativaDto dto, bool ehCopia = false)
        {
            var mensagens = new List <RetornoCopiarAtividadeAvaliativaDto>();

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            foreach (var id in dto.DisciplinasId)
            {
                await VerificaSeProfessorPodePersistirTurma(atividadeAvaliativa.ProfessorRf, atividadeAvaliativa.TurmaId, id, atividadeAvaliativa.DataAvaliacao.Date, usuario);
            }

            unitOfWork.IniciarTransacao();

            await repositorioAtividadeAvaliativa.SalvarAsync(atividadeAvaliativa);

            if (atividadeAvaliativa.EhRegencia)
            {
                if (dto.DisciplinaContidaRegenciaId.Length == 0)
                {
                    throw new NegocioException("É necessário informar as disciplinas da regência");
                }

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

            foreach (var id in dto.DisciplinasId)
            {
                var ativDisciplina = new AtividadeAvaliativaDisciplina
                {
                    AtividadeAvaliativaId = atividadeAvaliativa.Id,
                    DisciplinaId          = id
                };
                await repositorioAtividadeAvaliativaDisciplina.SalvarAsync(ativDisciplina);
            }

            unitOfWork.PersistirTransacao();

            // Verifica Pendencia de avaliação para o professor
            await mediator.Send(new PublicaFilaExcluirPendenciaAusenciaAvaliacaoCommand(dto.TurmaId, dto.DisciplinasId, usuario, dto.DataAvaliacao));

            if (!ehCopia)
            {
                mensagens.Add(new RetornoCopiarAtividadeAvaliativaDto("Atividade Avaliativa criada com sucesso", true));
            }

            return(mensagens);
        }