Exemple #1
0
        private CompensacaoAusencia MapearEntidade(CompensacaoAusenciaDto compensacaoDto, CompensacaoAusencia compensacao)
        {
            compensacao.DisciplinaId = compensacaoDto.DisciplinaId;
            compensacao.Bimestre     = compensacaoDto.Bimestre;
            compensacao.Nome         = compensacaoDto.Atividade;
            compensacao.Descricao    = compensacaoDto.Descricao;

            return(compensacao);
        }
Exemple #2
0
        public async Task <string> Copiar(CompensacaoAusenciaCopiaDto compensacaoCopia)
        {
            var compensacaoOrigem = repositorioCompensacaoAusencia.ObterPorId(compensacaoCopia.CompensacaoOrigemId);

            if (compensacaoOrigem == null)
            {
                throw new NegocioException("Compensação de origem não localizada com o identificador informado.");
            }

            var turmasCopiadas = new StringBuilder("");
            var turmasComErro  = new StringBuilder("");

            foreach (var turmaId in compensacaoCopia.TurmasIds)
            {
                var turma = await repositorioTurma.ObterPorCodigo(turmaId);

                CompensacaoAusenciaDto compensacaoDto = new CompensacaoAusenciaDto()
                {
                    TurmaId                = turmaId,
                    Bimestre               = compensacaoCopia.Bimestre,
                    DisciplinaId           = compensacaoOrigem.DisciplinaId,
                    Atividade              = compensacaoOrigem.Nome,
                    Descricao              = compensacaoOrigem.Descricao,
                    DisciplinasRegenciaIds = new List <string>(),
                    Alunos = new List <CompensacaoAusenciaAlunoDto>()
                };

                var disciplinasRegencia = await repositorioCompensacaoAusenciaDisciplinaRegencia.ObterPorCompensacao(compensacaoOrigem.Id);

                if (disciplinasRegencia != null && disciplinasRegencia.Any())
                {
                    compensacaoDto.DisciplinasRegenciaIds = disciplinasRegencia.Select(s => s.DisciplinaId);
                }

                try
                {
                    await Salvar(0, compensacaoDto);

                    turmasCopiadas.Append(turmasCopiadas.ToString().Length > 0 ? ", " + turma.Nome : turma.Nome);
                }
                catch (Exception e)
                {
                    turmasComErro.AppendLine($"A cópia para a turma {turma.Nome} não foi realizada: {e.Message}\n");
                }
            }
            var respTurmasCopiadas = turmasCopiadas.ToString();
            var textoTurmas        = respTurmasCopiadas.Contains(",") ? "as turmas" : "a turma";
            var respostaSucesso    = respTurmasCopiadas.Length > 0 ? $"A cópia para {textoTurmas} {respTurmasCopiadas} foi realizada com sucesso" : "";
            var respTurmasComErro  = turmasComErro.ToString();

            if (respTurmasComErro.Length > 0)
            {
                throw new NegocioException($"{respTurmasComErro} {respostaSucesso}");
            }
            return(respostaSucesso);
        }
Exemple #3
0
        private CompensacaoAusencia MapearEntidade(long id, CompensacaoAusenciaDto compensacaoDto)
        {
            CompensacaoAusencia compensacaoBanco = new CompensacaoAusencia();

            if (id > 0)
            {
                compensacaoBanco = repositorioCompensacaoAusencia.ObterPorId(id);
            }

            return(MapearEntidade(compensacaoDto, compensacaoBanco));
        }
        public async Task Salvar(long id, CompensacaoAusenciaDto compensacaoDto)
        {
            // Busca dados da turma
            var turma = BuscaTurma(compensacaoDto.TurmaId);

            // Consiste periodo
            var periodo = BuscaPeriodo(turma.AnoLetivo, turma.ModalidadeCodigo, compensacaoDto.Bimestre, turma.Semestre);

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            ValidaProfessorPodePersistirTurma(compensacaoDto.TurmaId, usuario.CodigoRf, periodo.PeriodoFim);

            // Valida mesma compensação no ano
            var compensacaoExistente = await repositorioCompensacaoAusencia.ObterPorAnoTurmaENome(turma.AnoLetivo, turma.Id, compensacaoDto.Atividade, id);

            if (compensacaoExistente != null)
            {
                throw new NegocioException($"Já existe essa compensação cadastrada para turma no ano letivo.");
            }

            // Carrega dasdos da disciplina no EOL
            ConsisteDisciplina(long.Parse(compensacaoDto.DisciplinaId), compensacaoDto.DisciplinasRegenciaIds);

            // Persiste os dados
            var compensacao = MapearEntidade(id, compensacaoDto);

            compensacao.TurmaId   = turma.Id;
            compensacao.AnoLetivo = turma.AnoLetivo;

            List <string> codigosAlunosCompensacao = new List <string>();

            unitOfWork.IniciarTransacao();
            try
            {
                await repositorioCompensacaoAusencia.SalvarAsync(compensacao);
                await GravarDisciplinasRegencia(id > 0, compensacao.Id, compensacaoDto.DisciplinasRegenciaIds);

                codigosAlunosCompensacao = await GravarCompensacaoAlunos(id > 0, compensacao.Id, compensacaoDto.TurmaId, compensacaoDto.DisciplinaId, compensacaoDto.Alunos, periodo);

                unitOfWork.PersistirTransacao();
            }
            catch (Exception)
            {
                unitOfWork.Rollback();
                throw;
            }

            if (codigosAlunosCompensacao.Any())
            {
                Cliente.Executar <IServicoCalculoFrequencia>(c => c.CalcularFrequenciaPorTurma(codigosAlunosCompensacao, periodo.PeriodoFim, compensacaoDto.TurmaId, compensacaoDto.DisciplinaId));
            }

            Cliente.Executar <IServicoNotificacaoFrequencia>(c => c.NotificarCompensacaoAusencia(compensacao.Id));
        }
        private CompensacaoAusencia MapearEntidade(long id, CompensacaoAusenciaDto compensacaoDto)
        {
            CompensacaoAusencia compensacao = new CompensacaoAusencia();

            if (id > 0)
            {
                compensacao = repositorioCompensacaoAusencia.ObterPorId(id);
            }

            compensacao.DisciplinaId = compensacaoDto.DisciplinaId;
            compensacao.Bimestre     = compensacaoDto.Bimestre;
            compensacao.Nome         = compensacaoDto.Atividade;
            compensacao.Descricao    = compensacaoDto.Descricao;

            return(compensacao);
        }
Exemple #6
0
        public async Task <IActionResult> Alterar(long id, [FromBody] CompensacaoAusenciaDto compensacao, [FromServices] IComandosCompensacaoAusencia comandos)
        {
            await comandos.Alterar(id, compensacao);

            return(Ok());
        }
Exemple #7
0
        public async Task <IActionResult> Inserir([FromBody] CompensacaoAusenciaDto compensacao, [FromServices] IComandosCompensacaoAusencia comandos)
        {
            await comandos.Inserir(compensacao);

            return(Ok());
        }
Exemple #8
0
 public async Task Inserir(CompensacaoAusenciaDto compensacao)
 => await servicoCompensacaoAusencia.Salvar(0, compensacao);
Exemple #9
0
 public async Task Alterar(long id, CompensacaoAusenciaDto compensacao)
 => await servicoCompensacaoAusencia.Salvar(id, compensacao);