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