コード例 #1
0
        public void ValidarPreRequisitosDaMatricula(MatriculaOferta pMatriculaOferta, int idTurma = 0)
        {
            if (pMatriculaOferta.Oferta == null)
            {
                throw new AcademicoException("A matrícula não está vinculada adequadamente a uma Oferta. Tente novamente.");
            }
            ;

            if (pMatriculaOferta.Oferta.SolucaoEducacional == null)
            {
                pMatriculaOferta.Oferta.SolucaoEducacional = ObterPorId(new BMOferta().ObterPorId(pMatriculaOferta.Oferta.ID).SolucaoEducacional.ID);
            }

            ValidarVagasPorUf(pMatriculaOferta);

            if (idTurma > 0)
            {
                //Quantidade Máxima de Inscrições
                var turma = new BMTurma().ObterPorID(idTurma);

                var maxInscricoesOferta = new BMOferta().ObterPorId(pMatriculaOferta.Oferta.ID).QuantidadeMaximaInscricoes;

                if (turma.QuantidadeMaximaInscricoes > maxInscricoesOferta)
                {
                    throw new AcademicoException("A quantidade de inscrições da turma, excede o máximo permitido para a oferta.");
                }
            }

            if (!pMatriculaOferta.Oferta.SolucaoEducacional.ListaPreRequisito.Any())
            {
                return;
            }

            var aprovados = new List <enumStatusMatricula>
            {
                enumStatusMatricula.Aprovado,
                enumStatusMatricula.Concluido
            };

            var oferta = pMatriculaOferta.Oferta;

            foreach (var item in pMatriculaOferta.Oferta.SolucaoEducacional.ListaPreRequisito)
            {
                var matriculaOferta = new BMMatriculaOferta().ObterPorUsuarioESolucaoEducacional(pMatriculaOferta.Usuario.ID, item.PreRequisito.ID).ToList();

                if (matriculaOferta != null && matriculaOferta.Any())
                {
                    var lastOrDefault = matriculaOferta.LastOrDefault();

                    if (lastOrDefault != null &&
                        (oferta.SolucaoEducacional.ID == item.SolucaoEducacional.ID &&
                         !aprovados.Contains(lastOrDefault.StatusMatricula)))
                    {
                        throw new AcademicoException("Erro: Existem soluções como pré-requisito que não estão cursadas");
                    }
                }
            }
        }
コード例 #2
0
        public void ValidarVagasPorUf(MatriculaOferta matriculaOferta)
        {
            var oferta = new BMOferta().ObterPorId(matriculaOferta.Oferta.ID);
            var quantidadeDeMatriculas = oferta.ListaMatriculaOferta.Count(x => x.StatusMatricula.IsNotAny(enumStatusMatricula.CanceladoAdm, enumStatusMatricula.CanceladoGestor, enumStatusMatricula.CanceladoAluno) && x.UF.Sigla == matriculaOferta.UF.Sigla && x.Usuario.ID != matriculaOferta.Usuario.ID);

            if (oferta.ListaPermissao.Count(
                    l =>
                    l.Uf != null && (l.Uf.Nome == matriculaOferta.UF.Nome && l.Uf.Regiao.SiglaRegiao == matriculaOferta.UF.Regiao.SiglaRegiao &&
                                     l.QuantidadeVagasPorEstado > 0 && quantidadeDeMatriculas >= l.QuantidadeVagasPorEstado)) > 0 && !oferta.FiladeEspera)
            {
                throw new AcademicoException("Erro: Quantidade máxima de inscritos por UF atingida");
            }
        }
コード例 #3
0
        public void GerarSequencias()
        {
            foreach (var solucao in repositorio.session.Query <SolucaoEducacional>().Where(s => s.Sequencia == null && s.CategoriaConteudo != null))
            {
                solucao.Sequencia = ObterProximoCodigoSequencial(solucao.CategoriaConteudo);
                repositorio.Salvar(solucao);
            }

            var bmOferta = new BMOferta();

            foreach (var oferta in repositorio.session.Query <Oferta>().Where(o => o.Sequencia == null && o.SolucaoEducacional != null && o.SolucaoEducacional.CategoriaConteudo != null))
            {
                oferta.Sequencia = bmOferta.ObterProximoCodigoSequencial(oferta.SolucaoEducacional);
                bmOferta.Salvar(oferta);
            }

            var bmTurma = new BMTurma();

            foreach (var turma in repositorio.session.Query <Turma>().Where(t => t.Sequencia == null && t.Oferta != null && t.Oferta.SolucaoEducacional != null && t.Oferta.SolucaoEducacional.CategoriaConteudo != null))
            {
                turma.Sequencia = bmTurma.ObterProximoCodigoSequencial(turma.Oferta);
                bmTurma.Salvar(turma);
            }
        }