public IList <SolucaoEducacional> ObterSolucaoEducacional()
 {
     using (var solucaoEducacionalBm = new BMSolucaoEducacional())
     {
         return(solucaoEducacionalBm.ObterTodos().ToList());
     }
 }
Beispiel #2
0
        public List <DTOSolucaoEducacional> ConsultarSolucaoEducacionalPorFornecedor(string idChaveExterna, AuthenticationProviderRequest autenticacao)
        {
            solucaoEducacionalBM = new BMSolucaoEducacional();

            SolucaoEducacional solucaoFiltro = new SolucaoEducacional();

            solucaoFiltro.Fornecedor     = new BMFornecedor().ObterPorLogin(autenticacao.Login);
            solucaoFiltro.IDChaveExterna = idChaveExterna;

            var listaSolucao = solucaoEducacionalBM.ObterPorFiltro(solucaoFiltro);

            List <DTOSolucaoEducacional> listaRetorno = new List <DTOSolucaoEducacional>();

            foreach (var registro in listaSolucao)
            {
                DTOSolucaoEducacional dtoRegistro = new DTOSolucaoEducacional();
                dtoRegistro.Apresentacao = registro.Apresentacao;
                dtoRegistro.Ativo        = registro.Ativo;
                dtoRegistro.Autor        = registro.Autor;
                dtoRegistro.Ementa       = registro.Ementa;
                dtoRegistro.ID           = registro.ID;
                dtoRegistro.IdCategoriaSolucaoEducacional = registro.CategoriaConteudo.ID;
                dtoRegistro.IDChaveExterna   = registro.IDChaveExterna;
                dtoRegistro.IdFormaAquisicao = registro.FormaAquisicao.ID;
                dtoRegistro.Nome             = registro.Nome;
                dtoRegistro.Objetivo         = registro.Objetivo;
                dtoRegistro.TemMaterial      = registro.TemMaterial;


                listaRetorno.Add(dtoRegistro);
            }
            return(listaRetorno);
        }
Beispiel #3
0
        private void ValidarMetaInstitucional(int pUsuario, int pSolucaoEducacional,
                                              List <int> pListaIdMetaInstitucionalAssociada,
                                              AuthenticationRequest autenticacao)
        {
            try
            {
                MetaInstitucional mi = null;
                if (pListaIdMetaInstitucionalAssociada != null && pListaIdMetaInstitucionalAssociada.Count > 0)
                {
                    foreach (int IdMetaIndividualAssociada in pListaIdMetaInstitucionalAssociada)
                    {
                        mi = new BMMetaInstitucional().ObterPorID(IdMetaIndividualAssociada);


                        if (!mi.ListaItensMetaInstitucional.Any(x => x.Usuario.ID == pUsuario && x.SolucaoEducacional.ID == pSolucaoEducacional))
                        {
                            mi.ListaItensMetaInstitucional.Add(new ItemMetaInstitucional()
                            {
                                Auditoria          = new Auditoria(autenticacao.Login),
                                MetaInstitucional  = new BMMetaInstitucional().ObterPorID(mi.ID),
                                SolucaoEducacional = new BMSolucaoEducacional().ObterPorId(pSolucaoEducacional),
                                Usuario            = new BMUsuario().ObterPorId(mi.ID),
                            });

                            using (BMMetaInstitucional miBM = new BMMetaInstitucional())
                                miBM.Salvar(mi);
                        }
                    }

                    SolucaoEducacional se = null;
                    using (BMSolucaoEducacional seBM = new BMSolucaoEducacional())
                        se = seBM.ObterPorId(pSolucaoEducacional);

                    Usuario user = null;
                    using (BMUsuario userBM = new BMUsuario())
                        user = userBM.ObterPorId(pUsuario);

                    foreach (var tagSe in se.ListaTags)
                    {
                        UsuarioTag ut = user.ListaTag.FirstOrDefault(x => x.Tag.ID == tagSe.ID);
                        if (ut == null)
                        {
                            user.ListaTag.Add(new UsuarioTag()
                            {
                                Usuario    = new BMUsuario().ObterPorId(pUsuario),
                                Auditoria  = new Auditoria(autenticacao.Login),
                                Tag        = new BMTag().ObterPorID(tagSe.Tag.ID),
                                Adicionado = false
                            });
                        }

                        using (BMUsuario userBM = new BMUsuario())
                            userBM.Salvar(user);
                    }
                }
            }
            catch
            {
            }
        }
 public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalTodos()
 {
     using (var solEducBm = new BMSolucaoEducacional())
     {
         return(solEducBm.ObterTodos());
     }
 }
 public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(int idFormaAquisicao = 0)
 {
     using (var solEduBm = new BMSolucaoEducacional())
     {
         return(solEduBm.ObterTodos()
                .Where(s => idFormaAquisicao == 0 || s.FormaAquisicao.ID == idFormaAquisicao));
     }
 }
        public void IncluirMetaIndividual(int ID_usuario, string ID_ChaveExterna, string Descricao, string Nome, DateTime DataValidade, string[] ListaSolucaoEducacional = null, string FornecedorAlteracao = null)
        {
            try
            {
                this.RegistrarLogExecucaoFornecedor((new BMFornecedor()).ObterPorFiltro(new Fornecedor()
                {
                    Login = FornecedorAlteracao
                }).FirstOrDefault(),
                                                    "IncluirMetaIndividual");

                using (BMMetaIndividual metaIndividualBM = new BMMetaIndividual())
                {
                    MetaIndividual mi = new MetaIndividual()
                    {
                        DataValidade             = DataValidade,
                        Nome                     = Nome,
                        IDChaveExterna           = ID_ChaveExterna,
                        Auditoria                = new Auditoria(FornecedorAlteracao),
                        Usuario                  = new BMUsuario().ObterPorId(ID_usuario),
                        ListaItensMetaIndividual = new List <ItemMetaIndividual>()
                    };

                    Fornecedor f = new BMFornecedor().ObterPorFiltro(new Fornecedor()
                    {
                        Login = FornecedorAlteracao
                    }).FirstOrDefault();

                    foreach (string str in ListaSolucaoEducacional)
                    {
                        SolucaoEducacional se = new BMSolucaoEducacional().ObterPorFiltro(new SolucaoEducacional()
                        {
                            Nome = str, Fornecedor = f
                        }).FirstOrDefault();

                        if (se != null)
                        {
                            ItemMetaIndividual it = new ItemMetaIndividual()
                            {
                                Auditoria          = new Auditoria(FornecedorAlteracao),
                                MetaIndividual     = mi,
                                SolucaoEducacional = se,
                            };


                            mi.ListaItensMetaIndividual.Add(it);
                        }
                    }

                    metaIndividualBM.Salvar(mi);
                }
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Beispiel #7
0
        public void ValidarPermissaoUsuario(int idUsuario, int idSolucaoEducacional)
        {
            bool usuarioPossuiPermissao = new BMSolucaoEducacional().VerificarSeUsuarioPossuiPermissao(idUsuario,
                                                                                                       idSolucaoEducacional);

            if (!usuarioPossuiPermissao)
            {
                throw new AcademicoException("Erro: O usuário Informado não possui permissão à Solução Educacional");
            }
        }
Beispiel #8
0
        public void ValidarOferta(int idSolucaoEducacional, int idOferta)
        {
            SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterPorId(idSolucaoEducacional);
            Oferta             oferta             = new Oferta();

            oferta = solucaoEducacional.ListaOferta.FirstOrDefault(x => x.ID == idOferta);
            if (oferta == null)
            {
                throw new AcademicoException("Erro: Oferta não encontrada");
            }
        }
Beispiel #9
0
 public IList <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(int idFormaAquisicao)
 {
     using (var solEduBM = new BMSolucaoEducacional())
     {
         return(solEduBM.ObterPorFiltro(new SolucaoEducacional()
         {
             FormaAquisicao = new BMFormaAquisicao().ObterPorID(idFormaAquisicao)
         })
                .OrderBy(n => n.Nome)
                .ToList());
     }
 }
Beispiel #10
0
        public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalTodos(Uf uf = null)
        {
            using (var solEducBm = new BMSolucaoEducacional())
            {
                var retorno = solEducBm.ObterTodos();

                if (uf != null)
                {
                    solEducBm.FiltrarPermissaoVisualizacao(ref retorno, uf.ID);
                }

                return(retorno);
            }
        }
Beispiel #11
0
        public IQueryable <SolucaoEducacional> ObterSolucoesEducacionais(Uf uf = null)
        {
            using (var bmSe = new BMSolucaoEducacional())
            {
                var ses = bmSe.ObterTodos();

                if (uf != null)
                {
                    bmSe.FiltrarPermissaoVisualizacao(ref ses, uf.ID);
                }

                return(ses);
            }
        }
        public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(int formaAquisicaoId = 0)
        {
            using (var seBm = new BMSolucaoEducacional())
            {
                var retorno = seBm.ObterTodos();

                if (formaAquisicaoId > 0)
                {
                    retorno = retorno.Where(s => s.FormaAquisicao.ID == formaAquisicaoId);
                }

                return(retorno);
            }
        }
Beispiel #13
0
        public IQueryable <SolucaoEducacional> ListaSolucoesEducacionais()
        {
            IQueryable <SolucaoEducacional> listaSolucoesEducacionais = null;

            try
            {
                listaSolucoesEducacionais = new BMSolucaoEducacional().ObterTodos();
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(listaSolucoesEducacionais);
        }
Beispiel #14
0
        public void ManterExternoSolucaoEducacional(DTOSolucaoEducacional pDTOSolucaoEducacional, AuthenticationProviderRequest pAutenticacao)
        {
            try
            {
                this.RegistrarLogExecucaoFornecedor((new BMFornecedor()).ObterPorFiltro(new Fornecedor()
                {
                    Login = pAutenticacao.Login, Senha = pAutenticacao.Senha
                }).FirstOrDefault(),
                                                    "CadastrarSolucaoEducacional");

                SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterPorIDFornecedorEIdChaveExterna(pAutenticacao.Login, pDTOSolucaoEducacional.IDChaveExterna);

                if (solucaoEducacional == null)
                {
                    //CRIACAO
                    ValidarCamposSolucaoEducacional(pDTOSolucaoEducacional);

                    solucaoEducacional = PreencherObjetoSolucaoEducacional(pDTOSolucaoEducacional, pAutenticacao, solucaoEducacional);
                    solucaoEducacional.DataCadastro = DateTime.Now;
                    if (solucaoEducacional.FormaAquisicao == null)
                    {
                        throw new AcademicoException("A forma de aquisição não foi encontrada");
                    }
                    if (solucaoEducacional.CategoriaConteudo == null)
                    {
                        throw new AcademicoException("A categoria não foi encontrada");
                    }

                    new BMSolucaoEducacional().Salvar(solucaoEducacional);
                }
                else
                {
                    ValidarCamposSolucaoEducacional(pDTOSolucaoEducacional);
                    solucaoEducacional = PreencherObjetoSolucaoEducacional(pDTOSolucaoEducacional, pAutenticacao, solucaoEducacional);
                    new BMSolucaoEducacional().Salvar(solucaoEducacional);
                }
            }

            catch (AcademicoException ex)
            {
                throw new AcademicoException(ex.Message);
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Beispiel #15
0
        public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(int idFormaAquisicao = 0, Uf uf = null)
        {
            using (var solEduBm = new BMSolucaoEducacional())
            {
                var retorno = solEduBm.ObterTodos();

                if (idFormaAquisicao > 0)
                {
                    retorno = retorno.Where(s => s.FormaAquisicao.ID == idFormaAquisicao);
                }

                if (uf != null)
                {
                    solEduBm.FiltrarPermissaoVisualizacao(ref retorno, uf.ID);
                }

                return(retorno);
            }
        }
        public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(int formaAquisicaoId, Uf uf)
        {
            using (var seBm = new BMSolucaoEducacional())
            {
                var retorno = seBm.ObterTodos();

                if (formaAquisicaoId != 0)
                {
                    retorno = retorno.Where(s => s.FormaAquisicao.ID == formaAquisicaoId);
                }

                if (uf != null)
                {
                    seBm.FiltrarPermissaoVisualizacao(ref retorno, uf.ID);
                }

                return(retorno);
            }
        }
Beispiel #17
0
        public IQueryable <SolucaoEducacional> ObterSolucaoEducacionalPorFormaAquisicao(Uf ufGestor = null, int pIdFormaAquisicao = 0)
        {
            using (var solEducBm = new BMSolucaoEducacional())
            {
                var retorno = solEducBm.ObterTodos();

                if (pIdFormaAquisicao != 0)
                {
                    retorno = retorno.Where(s => s.FormaAquisicao.ID == pIdFormaAquisicao);
                }

                if (ufGestor != null)
                {
                    solEducBm.FiltrarPermissaoVisualizacao(ref retorno, ufGestor.ID);
                }

                return(retorno);
            }
        }
        public DTODisponibilidadeSolucaoEducacionalPorUsuarioT ConsultarDisponibilidadeMatriculaPorUsuario(
            int pIdUsuario, int?pagina)
        {
            var retorno = new DTODisponibilidadeSolucaoEducacionalPorUsuarioT();

            var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario);

            new ManterMatriculaOferta().ObterPorUsuario(pIdUsuario);

            var listaPermissaoSolucaoEducacional = new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, 0);
            var idsSolucoesPermissoes            = listaPermissaoSolucaoEducacional.Select(f => f.SolucaoEducacional.ID).ToList();

            var filtro = new SolucaoEducacional();

            var recuperarListaSolucaoEducacional = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(filtro, true,
                                                                                                         idsSolucoesPermissoes);

            const int skip = 5;

            var paginaAtual = (pagina.HasValue && pagina.Value > 0) ? (pagina.Value - 1) : 0;

            retorno.PaginaAtual  = (paginaAtual + 1);
            retorno.QtdeSolucoes = recuperarListaSolucaoEducacional.Count();
            retorno.QtdePaginas  = Convert.ToInt32((retorno.QtdeSolucoes / skip));
            if ((retorno.QtdeSolucoes % skip) > 0)
            {
                retorno.QtdePaginas++;
            }

            foreach (var item in recuperarListaSolucaoEducacional.Skip((paginaAtual * skip)).Take(skip).ToList())
            {
                retorno.DTODisponibilidadeSolucaoEducacional.Add(
                    ConsultarDisponibilidadeMatriculaSolucaoEducacional(pIdUsuario, item.ID));
            }

            return(retorno);
        }
        public DTOCursosPorCategoria ConsultarCursosPorCategoria(int idNoCategoriaConteudo, string cpf, string nome,
                                                                 bool somenteComInscricoesAbertas)
        {
            var retorno = new DTOCursosPorCategoria
            {
                Categoria   = new DTOCategoriaConteudo(),
                ListaCursos = new List <DTOSolucaoEducacional>()
            };

            var categoria = new BMCategoriaConteudo().ObterPorIdNode(idNoCategoriaConteudo);

            retorno.Categoria.ID   = categoria.ID;
            retorno.Categoria.Nome = categoria.Nome;

            var usuario = new BMUsuario().ObterPorCPF(cpf);

            var permissoesSe =
                new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, 0)
                .Select(x => x.SolucaoEducacional.ID)
                .ToList();
            var permissoesOf = new BMOferta().ObterListaDePermissoes(usuario.ID).Select(x => x.IdOferta).ToList();

            var solucoesEducacionais = new BMSolucaoEducacional().ObterTodos().AsEnumerable()
                                       .Where(x => x.Nome.ToLower().Contains(nome.ToLower()) &&
                                              x.CategoriaConteudo != null &&
                                              x.Ativo &&
                                              x.CategoriaConteudo.IdNode == idNoCategoriaConteudo &&
                                              //(x.IdNode.HasValue || !string.IsNullOrEmpty(x.Link)) &&
                                              permissoesSe.Contains(x.ID) &&
                                              x.ListaOferta != null &&
                                              x.ListaOferta.Any(o => permissoesOf.Contains(o.ID)) &&
                                              x.ListaOferta.Any(o => o.TipoOferta != enumTipoOferta.Exclusiva)
                                              ).ToList();

            foreach (var item in solucoesEducacionais)
            {
                var obj = new DTOSolucaoEducacional
                {
                    ID                = item.ID,
                    IDChaveExterna    = item.IDChaveExterna,
                    IdNode            = item.IdNode,
                    Nome              = item.Nome,
                    InscricoesAbertas = false
                };

                if (
                    item.ListaOferta.Any(
                        x =>
                        x.DataInicioInscricoes.HasValue && x.DataFimInscricoes.HasValue &&
                        x.DataInicioInscricoes.Value <= DateTime.Today &&
                        x.DataFimInscricoes.Value >= DateTime.Today))
                {
                    foreach (var oferta in item.ListaOferta)
                    {
                        if (string.IsNullOrEmpty(obj.Link))
                        {
                            obj.Link = (item.Fornecedor.ID == (int)enumFornecedor.FGVOCW ||
                                        item.Fornecedor.ID == (int)enumFornecedor.FGVSiga) &&
                                       !string.IsNullOrEmpty(oferta.Link)
                                ? oferta.Link
                                : "";
                        }

                        obj.InscricoesAbertas = oferta.ListaTurma.Any(x => x.DataInicio <= DateTime.Today &&
                                                                      x.DataFinal.HasValue &&
                                                                      x.DataFinal.Value >= DateTime.Today);
                    }
                }
                else
                {
                    obj.InscricoesAbertas = false;
                }

                bool adicionar = true;

                if (somenteComInscricoesAbertas)
                {
                    adicionar = obj.InscricoesAbertas;
                }

                if (adicionar)
                {
                    retorno.ListaCursos.Add(obj);
                }
            }

            return(retorno);
        }
 /// <summary>
 /// Construtor da classe. Este construtor chama o construtor da classe base (BusinessProcessBase)
 /// </summary>
 public ManterSolucaoEducacional()
     : base()
 {
     bmSolucaoEducacional = new BMSolucaoEducacional();
 }
Beispiel #21
0
        public void ManterOfertaFornecedor(DTOManterOferta dtoOferta, AuthenticationProviderRequest pAutenticacao)
        {
            Fornecedor fornecedor = new BMFornecedor().ObterPorFiltro(new Fornecedor()
            {
                Login = pAutenticacao.Login
            }).FirstOrDefault();

            try
            {
                this.RegistrarLogExecucaoFornecedor(fornecedor, "ManterOferta");

                using (ofertaBM = new BMOferta())
                {
                    ValidarCamposObrigatoriosOferta(dtoOferta);

                    SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterSolucaoEducacionalPorFornecedor(pAutenticacao.Login, dtoOferta.IDChaveExternaSolucaoEducacional);
                    if (solucaoEducacional == null)
                    {
                        throw new AcademicoException("Não foi possível encontrar a Solução Educacional");
                    }
                    Oferta oferta = ofertaBM.ObterOfertaPorFornecedor(null, fornecedor.Login, dtoOferta.IDChaveExternaOferta, dtoOferta.IDChaveExternaSolucaoEducacional);

                    if (oferta == null)
                    {
                        oferta = new Oferta();
                        oferta.IDChaveExterna     = dtoOferta.IDChaveExternaOferta;
                        oferta.SolucaoEducacional = solucaoEducacional;
                        try
                        {
                            oferta.TipoOferta = (enumTipoOferta)Enum.Parse(typeof(enumTipoOferta), dtoOferta.TipoOferta.ToString());
                        }
                        catch
                        {
                            throw new AcademicoException("Não foi possível encontrar o Tipo da Oferta");
                        }
                        oferta.ListaMatriculaOferta = new List <MatriculaOferta>();
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(dtoOferta.IDChaveExternaOfertaNova))
                        {
                            oferta.IDChaveExterna = dtoOferta.IDChaveExternaOfertaNova;
                        }
                    }

                    oferta.DataFimInscricoes    = dtoOferta.DataFimInscricoes;
                    oferta.DataInicioInscricoes = dtoOferta.DataInicioInscricoes;
                    oferta.FiladeEspera         = dtoOferta.FiladeEspera;
                    oferta.InscricaoOnline      = dtoOferta.InscricaoOnline;
                    oferta.Nome = dtoOferta.NomedaOferta;

                    if (dtoOferta.IdCertificado > 0)
                    {
                        oferta.CertificadoTemplate = new BMCertificadoTemplate().ObterPorID(dtoOferta.IdCertificado);
                    }

                    int codigoMoodle = 0;

                    if (int.TryParse(dtoOferta.CodigoMoodle, out codigoMoodle))
                    {
                        oferta.CodigoMoodle = codigoMoodle;
                    }

                    if (dtoOferta.QTDiasPrazo.HasValue)
                    {
                        oferta.DiasPrazo = dtoOferta.QTDiasPrazo.Value;
                    }
                    else
                    {
                        oferta.DiasPrazo = 30;
                    }

                    oferta.QuantidadeMaximaInscricoes = dtoOferta.QuantidadeMaximaInscricoes;
                    oferta.Auditoria    = new Auditoria(pAutenticacao.Login);
                    oferta.CargaHoraria = dtoOferta.QTCargaHoraria;

                    if (dtoOferta.ListaMatriculaAlunoOferta != null && dtoOferta.ListaMatriculaAlunoOferta.Count > 0)
                    {
                        var manterItemTrilhaParticipacao = new BP.ManterItemTrilhaParticipacao();

                        foreach (var dtoMatriculaSE in dtoOferta.ListaMatriculaAlunoOferta)
                        {
                            if (string.IsNullOrWhiteSpace(dtoMatriculaSE.Cpf))
                            {
                                throw new AcademicoException("O CPF do aluno é obrigatório");
                            }
                            if (string.IsNullOrWhiteSpace(dtoMatriculaSE.StatusMatricula))
                            {
                                throw new AcademicoException("O status da matrícula do aluno é obrigatório");
                            }

                            enumStatusMatricula statusMatricula;
                            try
                            {
                                statusMatricula = (enumStatusMatricula)Enum.Parse(typeof(enumStatusMatricula), dtoMatriculaSE.StatusMatricula);
                            }
                            catch
                            {
                                throw new AcademicoException("Status da matrícula inválido");
                            }

                            if (statusMatricula == enumStatusMatricula.CanceladoAdm || statusMatricula == enumStatusMatricula.CanceladoAluno)
                            {
                                continue;
                            }

                            MatriculaOferta matriculaOferta = null;
                            Usuario         usuario         = null;

                            if (dtoMatriculaSE.IdMatriculaOferta > 0)
                            {
                                matriculaOferta = oferta.ListaMatriculaOferta.Where(x => x.ID == dtoMatriculaSE.IdMatriculaOferta).FirstOrDefault();
                                usuario         = matriculaOferta.Usuario;
                            }
                            else
                            {
                                matriculaOferta = new MatriculaOferta();
                                usuario         = (new BMUsuario()).ObterPorCPF(dtoMatriculaSE.Cpf);
                                if (usuario == null)
                                {
                                    throw new AcademicoException("Não foi possível encontrar o aluno");
                                }
                                matriculaOferta.Oferta           = oferta;
                                matriculaOferta.Usuario          = usuario;
                                matriculaOferta.UF               = usuario.UF;
                                matriculaOferta.NivelOcupacional = usuario.NivelOcupacional;
                            }

                            if (matriculaOferta.ID == 0)
                            {
                                //Criar Matricula Oferta
                                matriculaOferta.StatusMatricula     = statusMatricula;
                                matriculaOferta.Auditoria           = new Auditoria(pAutenticacao.Login);
                                matriculaOferta.DataSolicitacao     = dtoMatriculaSE.DataSolicitacao;
                                matriculaOferta.DataStatusMatricula = dtoMatriculaSE.DataStatusMatricula;
                                matriculaOferta.LinkAcesso          = dtoMatriculaSE.LinkAcesso;
                                matriculaOferta.LinkCertificado     = dtoMatriculaSE.LinkCertificado;

                                if (!string.IsNullOrWhiteSpace(dtoMatriculaSE.IDChaveExternaTurma))
                                {
                                    //Criar matricula Turma
                                    Turma turma = new BMTurma().ObterTurmaPorFornecedor(fornecedor.Login, dtoMatriculaSE.IDChaveExternaTurma);
                                    if (turma != null)
                                    {
                                        MatriculaTurma matriculaTurma = new MatriculaTurma()
                                        {
                                            Turma                = turma,
                                            MatriculaOferta      = matriculaOferta,
                                            DataMatricula        = dtoMatriculaSE.DataMatriculaTurma.Value,
                                            DataLimite           = dtoMatriculaSE.DataLimite.Value,
                                            Nota1                = dtoMatriculaSE.Nota1,
                                            Nota2                = dtoMatriculaSE.Nota2,
                                            MediaFinal           = dtoMatriculaSE.MediaFinal,
                                            ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline,
                                            Auditoria            = new Auditoria(pAutenticacao.Login),
                                        };
                                        if (matriculaOferta.MatriculaTurma == null)
                                        {
                                            matriculaOferta.MatriculaTurma = new List <MatriculaTurma>();
                                        }

                                        matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                                    }
                                }
                            }
                            else
                            {
                                //Alterar Dados da Matricula Oferta
                                bool terminou = false;
                                if (matriculaOferta.StatusMatricula != statusMatricula && (statusMatricula == enumStatusMatricula.Aprovado || statusMatricula == enumStatusMatricula.Concluido))
                                {
                                    terminou = true;
                                }
                                matriculaOferta.StatusMatricula     = statusMatricula;
                                matriculaOferta.DataStatusMatricula = dtoMatriculaSE.DataStatusMatricula;
                                matriculaOferta.LinkAcesso          = dtoMatriculaSE.LinkAcesso;
                                matriculaOferta.LinkCertificado     = dtoMatriculaSE.LinkCertificado;
                                matriculaOferta.Auditoria           = new Auditoria(pAutenticacao.Login);
                                //matriculaOferta.DataSolicitacao = dtoMatriculaSE.DataSolicitacao;

                                if (!string.IsNullOrWhiteSpace(dtoMatriculaSE.IDChaveExternaTurma))
                                {
                                    if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
                                    {
                                        matriculaOferta.MatriculaTurma[0].DataMatricula        = dtoMatriculaSE.DataMatriculaTurma.Value;
                                        matriculaOferta.MatriculaTurma[0].DataLimite           = dtoMatriculaSE.DataLimite.Value;
                                        matriculaOferta.MatriculaTurma[0].Nota1                = dtoMatriculaSE.Nota1;
                                        matriculaOferta.MatriculaTurma[0].Nota2                = dtoMatriculaSE.Nota2;
                                        matriculaOferta.MatriculaTurma[0].MediaFinal           = dtoMatriculaSE.MediaFinal;
                                        matriculaOferta.MatriculaTurma[0].ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline;

                                        if (terminou)
                                        {
                                            matriculaOferta.MatriculaTurma[0].DataTermino = DateTime.Now;
                                            manterItemTrilhaParticipacao.AtualizarStatusParticipacoesTrilhas(matriculaOferta);
                                        }

                                        matriculaOferta.MatriculaTurma[0].Auditoria = new Auditoria(pAutenticacao.Login);
                                    }
                                    else
                                    {
                                        Turma turma = new BMTurma().ObterTurmaPorFornecedor(fornecedor.Login, dtoMatriculaSE.IDChaveExternaTurma);
                                        if (turma != null)
                                        {
                                            MatriculaTurma matriculaTurma = new MatriculaTurma()
                                            {
                                                Turma                = turma,
                                                MatriculaOferta      = matriculaOferta,
                                                DataMatricula        = dtoMatriculaSE.DataMatriculaTurma.Value,
                                                DataLimite           = dtoMatriculaSE.DataLimite.Value,
                                                Nota1                = dtoMatriculaSE.Nota1,
                                                Nota2                = dtoMatriculaSE.Nota2,
                                                MediaFinal           = dtoMatriculaSE.MediaFinal,
                                                ValorNotaProvaOnline = dtoMatriculaSE.NotaOnline,
                                                Auditoria            = new Auditoria(pAutenticacao.Login)
                                            };

                                            if (matriculaOferta.MatriculaTurma == null)
                                            {
                                                matriculaOferta.MatriculaTurma = new List <MatriculaTurma>();
                                            }

                                            matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                                        }
                                    }
                                }
                            }
                            if (matriculaOferta.ID == 0)
                            {
                                oferta.ListaMatriculaOferta.Add(matriculaOferta);
                            }
                        }
                    }

                    if (oferta.ID != 0)
                    {
                        ofertaBM.EvictOferta(oferta);
                    }

                    ofertaBM.Salvar(oferta);
                }
            }
            catch (AcademicoException ex)
            {
                throw new AcademicoException(ex.Message);
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }
        }
Beispiel #22
0
        private void ValidarMetaIndividual(int pUsuario, int pSolucaoEducacional,
                                           List <int> pListaIdMetaIndividualAssociada, AuthenticationRequest autenticacao)
        {
            try
            {
                MetaIndividual mi = null;
                if (pListaIdMetaIndividualAssociada != null && pListaIdMetaIndividualAssociada.Count > 0)
                {
                    foreach (int IdMetaIndividualAssociada in pListaIdMetaIndividualAssociada)
                    {
                        using (BMMetaIndividual miBM = new BMMetaIndividual())
                            mi = miBM.ObterPorID(IdMetaIndividualAssociada);


                        if (!mi.ListaItensMetaIndividual.Any(x => x.SolucaoEducacional.ID == pSolucaoEducacional))
                        {
                            mi.ListaItensMetaIndividual.Add(new ItemMetaIndividual()
                            {
                                Auditoria          = new Auditoria(autenticacao.Login),
                                MetaIndividual     = new BMMetaIndividual().ObterPorID(mi.ID),
                                SolucaoEducacional = new BMSolucaoEducacional().ObterPorId(pSolucaoEducacional),
                            });

                            using (BMMetaIndividual miBM = new BMMetaIndividual())
                                miBM.Salvar(mi);
                        }
                    }


                    SolucaoEducacional se = null;
                    using (BMSolucaoEducacional seBM = new BMSolucaoEducacional())
                        se = seBM.ObterPorId(pSolucaoEducacional);

                    Usuario user = null;
                    using (BMUsuario userBM = new BMUsuario())
                    {
                        user = userBM.ObterPorId(pUsuario);
                    }

                    bool listaAlterada = false;
                    foreach (var tagSe in se.ListaTags)
                    {
                        if (!user.ListaTag.Any(x => x.Tag.ID == tagSe.ID))
                        {
                            user.ListaTag.Add(new UsuarioTag()
                            {
                                Usuario      = user,
                                Auditoria    = new Auditoria(autenticacao.Login),
                                Tag          = new BMTag().ObterPorID(tagSe.Tag.ID),
                                DataValidade = mi.DataValidade,
                                Adicionado   = false
                            });
                            listaAlterada = true;
                        }
                    }
                    if (listaAlterada)
                    {
                        using (BMUsuario userBM = new BMUsuario())
                            userBM.Salvar(user);
                    }
                }
            }
            catch
            {
                //TODO: Verificar se cabe alguma ação
            }
        }
Beispiel #23
0
        public IList <DTOSolucEducFormaAquisicao> ConsultarSolucaoEducacional(int pUsuario, int pFornecedor, int pFormaAquisicao)
        {
            solucaoEducacionalBM = new BMSolucaoEducacional();

            IList <SolucaoEducacional> lstSolEduc = solucaoEducacionalBM.ConsultarSolucaoEducacionalWebServices(pUsuario, pFornecedor, pFormaAquisicao);



            IList <FormaAquisicao> lstFormaAquisicao = (from fa in lstSolEduc
                                                        select fa.FormaAquisicao).ToList();



            IList <DTOSolucEducFormaAquisicao> lstResult = new List <DTOSolucEducFormaAquisicao>();


            foreach (FormaAquisicao fa in lstFormaAquisicao)
            {
                DTOSolucEducFormaAquisicao dtofa = new DTOSolucEducFormaAquisicao()
                {
                    Nome = fa.Nome,
                    CodigoFormaAquisicao    = fa.ID,
                    ListaSolucaoEducacional = new List <DTOSolucEducSolucaoEducacional>()
                };


                IList <SolucaoEducacional> lstSolEducFA = (from se in lstSolEduc
                                                           where se.FormaAquisicao.ID == fa.ID
                                                           select se).ToList();

                foreach (SolucaoEducacional se in lstSolEducFA)
                {
                    MatriculaOferta mo = (from of in (new BMOferta()).ObterPorFiltro(new Oferta()
                    {
                        SolucaoEducacional = se
                    })
                                          select of.ListaMatriculaOferta).FirstOrDefault().Where(x => x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                                                                 x.StatusMatricula != enumStatusMatricula.CanceladoAluno)
                                         .OrderByDescending(x => x.DataSolicitacao).FirstOrDefault();



                    DTOSolucEducSolucaoEducacional dtoSE = new DTOSolucEducSolucaoEducacional()
                    {
                        CodigoSolucaoEducacional = se.ID,
                        Nome = se.Nome,
                        SolucaoEducacionalMatricula = mo == null ? null : (new DTOSolucEducSolucaoEducacionalMatricula()
                        {
                            DataSolicitacao = mo.DataSolicitacao,
                            StatusMatricula = mo.StatusMatricula.ToString()
                        })
                    };



                    dtofa.ListaSolucaoEducacional.Add(dtoSE);
                }


                lstResult.Add(dtofa);
            }

            return(lstResult);
        }
Beispiel #24
0
        public void MatricularSolucaoEducacional(int idUsuario, int idSolucaoEducacional, int idOferta,
                                                 List <int> pListaIdMetaIndividualAssociada, List <int> pListaIdMetaInstitucionalAssociada, AuthenticationRequest autenticacao)
        {
            Usuario            userSelected       = new BMUsuario().ObterPorId(idUsuario);
            SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterPorId(idSolucaoEducacional);
            BMMatriculaOferta  moBM = new BMMatriculaOferta();

            if (solucaoEducacional == null)
            {
                throw new AcademicoException("Solução Educacional não encontrada");
            }

            //VALIDAR SE ELE TEM ALGUMA OFERTA EXCLUSIVA PENDENTE DE CONFIRMACAO
            if (userSelected.ListaMatriculaOferta.Any(x => x.Oferta.ID == idOferta && x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno && x.Oferta.DataFim.Value.Date >= DateTime.Now.Date))
            {
                MatriculaOferta mo = userSelected.ListaMatriculaOferta.Where(x => x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno).FirstOrDefault();

                if (mo != null)
                {
                    mo.StatusMatricula = enumStatusMatricula.Inscrito;
                    mo.Auditoria       = new Auditoria(autenticacao.Login);
                    moBM.Salvar(mo);
                    ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                    ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);

                    if (!(mo.MatriculaTurma != null && mo.MatriculaTurma.Count > 0))
                    {
                        try
                        {
                            if (mo.Oferta.TipoOferta.Equals(enumTipoOferta.Continua))
                            {
                                string retornows;
                                switch (mo.Oferta.SolucaoEducacional.Fornecedor.ID)
                                {
                                case (int)enumFornecedor.MoodleSebrae:
                                    moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient();
                                    retornows = soapCliente.MatricularAluno(
                                        userSelected.Nome,
                                        userSelected.CPF,
                                        userSelected.Email,
                                        userSelected.Cidade,
                                        mo.Oferta.SolucaoEducacional.IDChaveExterna.ToString(),
                                        mo.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString());
                                    break;

                                case (int)enumFornecedor.WebAula:
                                    Turma turma = mo.MatriculaTurma.FirstOrDefault().Turma;
                                    webaula.waIntegracaoSoapClient        wa  = new webaula.waIntegracaoSoapClient();
                                    webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest();
                                    webaula.DTOUsuario dtoUsuario             = new webaula.DTOUsuario();
                                    webaula.DTOTurma   dtoTurma = new webaula.DTOTurma();
                                    dtoTurma.IDChaveExterna = turma.IDChaveExterna;
                                    dtoUsuario.CPF          = userSelected.CPF;
                                    dtoUsuario.Email        = userSelected.Email;
                                    dtoUsuario.Nome         = userSelected.Nome;
                                    dtoUsuario.Sexo         = userSelected.Sexo;
                                    dtoUsuario.UF           = userSelected.UF.Sigla;
                                    aut.Login = mo.Oferta.SolucaoEducacional.Fornecedor.Login;
                                    aut.Senha = CriptografiaHelper.Decriptografar(mo.Oferta.SolucaoEducacional.Fornecedor.Senha);
                                    retornows = wa.Matricular(aut, dtoUsuario, dtoTurma);
                                    break;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            ErroUtil.Instancia.TratarErro(ex);
                        }
                    }

                    if (!string.IsNullOrEmpty(mo.Usuario.Email))
                    {
                        Template mensagemRecuperacaoDeSenhaSemConfirmacao = TemplateUtil.ObterInformacoes(enumTemplate.InscricaoSESucesso);
                        string   assuntoDoEmail = mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.Substring(0, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.IndexOf(Environment.NewLine));

                        Dictionary <string, string> registros = new Dictionary <string, string>();
                        registros.Add("NOMESOLUCAOEDUCACIONAL", mo.Oferta.SolucaoEducacional.Nome);
                        registros.Add("DATASISTEMA", DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm"));
                        registros.Add("NOMEALUNO", mo.Usuario.Nome);
                        //Envia e-mail para o usuário
                        EmailUtil.Instancia.EnviarEmail(mo.Usuario.Email,
                                                        assuntoDoEmail,
                                                        this.FormatarTextoEmail(registros, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate)
                                                        );
                    }

                    return;
                }
            }

            //Verificando se existe alguma matricula na SE.
            MatriculaOferta buscaMatricula = new MatriculaOferta();

            buscaMatricula.Usuario    = new Usuario();
            buscaMatricula.Usuario.ID = userSelected.ID;
            List <MatriculaOferta> possiveisMatriculas = new BMMatriculaOferta().ObterPorFiltro(buscaMatricula).ToList();

            if (possiveisMatriculas != null && possiveisMatriculas.Any(y => y.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && !(y.StatusMatricula == enumStatusMatricula.CanceladoAdm || y.StatusMatricula == enumStatusMatricula.CanceladoAluno)))
            {
                throw new AcademicoException("Erro: O usuário já está matriculado em uma oferta desta Solução Educacional");
            }

            //VALIDAR SE O USUARIO POSSUI ACESSO A SE
            bool usuarioPossuiPermissao = new BMSolucaoEducacional().VerificarSeUsuarioPossuiPermissao(idUsuario, solucaoEducacional.ID); // .ObterListaUsuariosPermitidos();

            if (!usuarioPossuiPermissao)
            {
                throw new AcademicoException("Erro: O usuário Informado não possui permissão à Solução Educacional");
            }

            //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE
            if (userSelected.ListaMatriculaOferta.Any(y => y.Usuario.ID == userSelected.ID && y.StatusMatricula == enumStatusMatricula.Inscrito))
            {
                throw new AcademicoException("Erro: O usuário já está inscrito em outra oferta.");
            }

            //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO
            if (new BMUsuarioAbandono().ValidarAbandonoAtivo(idUsuario))
            {
                throw new AcademicoException("Erro: Existe um abandono registrado para este usuário!");
            }


            Oferta oferta = new Oferta();

            oferta = solucaoEducacional.ListaOferta.FirstOrDefault(x => x.ID == idOferta);
            if (oferta == null)
            {
                throw new AcademicoException("Erro: Oferta não encontrada");
            }

            //VALIDADO OFERTA CONTINUA.
            if (oferta.TipoOferta.Equals(enumTipoOferta.Continua))
            {
                Turma t = null;
                if (oferta.SolucaoEducacional.Fornecedor.PermiteGestaoSGUS)
                {
                    t = oferta.ListaTurma.FirstOrDefault(x => x.DataFinal == null || x.DataFinal.Value.Date >= DateTime.Now.Date && x.InAberta);
                }

                int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                                                   x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count();
                MatriculaOferta matriculaOferta = new MatriculaOferta()
                {
                    Oferta          = new BMOferta().ObterPorId(oferta.ID),
                    Usuario         = new BMUsuario().ObterPorId(userSelected.ID),
                    Auditoria       = new Auditoria(autenticacao.Login),
                    DataSolicitacao = DateTime.Now,
                    UF = new BMUf().ObterPorId(userSelected.UF.ID),
                    NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID)
                };

                if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes)
                {
                    if (oferta.FiladeEspera)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera;
                    }
                    else
                    {
                        throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida");
                    }
                }
                else
                {
                    matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito;
                }

                qtdInscritosNaOferta++;

                if (t != null)
                {
                    MatriculaTurma matriculaTurma = new MatriculaTurma()
                    {
                        Turma           = new BMTurma().ObterPorID(t.ID),
                        Auditoria       = new Auditoria(autenticacao.Login),
                        DataMatricula   = DateTime.Now,
                        MatriculaOferta = matriculaOferta,
                        DataLimite      = DateTime.Today.AddDays(oferta.DiasPrazo)
                    };
                    if (matriculaOferta.MatriculaTurma == null)
                    {
                        matriculaOferta.MatriculaTurma = new List <MatriculaTurma>();
                    }
                    matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                }

                moBM.Salvar(matriculaOferta);


                //validando se a turma já está chegando ao limite.
                if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro)))
                {
                    EnviarEmailLimiteOferta(oferta, matriculaOferta);
                }


                ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);

                try
                {
                    if (matriculaOferta.Oferta.TipoOferta.Equals(enumTipoOferta.Continua) && matriculaOferta.MatriculaTurma != null)
                    {
                        string retornows;
                        switch (matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.ID)
                        {
                        case (int)enumFornecedor.MoodleSebrae:
                            moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient();
                            retornows = soapCliente.MatricularAluno(userSelected.Nome, userSelected.CPF, userSelected.Email, userSelected.Cidade, matriculaOferta.Oferta.SolucaoEducacional.IDChaveExterna.ToString(), matriculaOferta.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString());
                            break;

                        case (int)enumFornecedor.WebAula:
                            Turma turma = matriculaOferta.MatriculaTurma.FirstOrDefault().Turma;
                            webaula.waIntegracaoSoapClient        wa  = new webaula.waIntegracaoSoapClient();
                            webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest();
                            webaula.DTOUsuario dtoUsuario             = new webaula.DTOUsuario();
                            webaula.DTOTurma   dtoTurma = new webaula.DTOTurma();
                            dtoTurma.IDChaveExterna = turma.IDChaveExterna;
                            dtoUsuario.CPF          = userSelected.CPF;
                            dtoUsuario.Email        = userSelected.Email;
                            dtoUsuario.Nome         = userSelected.Nome;
                            dtoUsuario.Sexo         = userSelected.Sexo;
                            dtoUsuario.UF           = userSelected.UF.Sigla;
                            aut.Login = matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Login;
                            aut.Senha = CriptografiaHelper.Decriptografar(matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Senha);
                            retornows = wa.Matricular(aut, dtoUsuario, dtoTurma);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ErroUtil.Instancia.TratarErro(ex);
                }
                return;
            }

            //VALIDANDO A OFETA NORMAL
            if (oferta.TipoOferta.Equals(enumTipoOferta.Normal))
            {
                int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                                                   x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count();
                MatriculaOferta matriculaOferta = new MatriculaOferta()
                {
                    Oferta          = new BMOferta().ObterPorId(oferta.ID),
                    Usuario         = new BMUsuario().ObterPorId(userSelected.ID),
                    Auditoria       = new Auditoria(autenticacao.Login),
                    DataSolicitacao = DateTime.Now,
                    UF = new BMUf().ObterPorId(userSelected.UF.ID),
                    NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID)
                };

                if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes)
                {
                    if (oferta.FiladeEspera)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera;
                    }
                    else
                    {
                        throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida");
                    }
                }
                else
                {
                    matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito;
                }


                BMMatriculaOferta bmMatriculaOferta = new BMMatriculaOferta();
                bmMatriculaOferta.Salvar(matriculaOferta);
                qtdInscritosNaOferta++;

                //validando se a turma já está chegando ao limite.
                if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro)))
                {
                    EnviarEmailLimiteOferta(oferta, matriculaOferta);
                }


                ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao);
                ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao);
                return;
            }
            throw new Exception("Não foi encontrado ofertas para esse usuário!");
        }
        public DTOSolucoes ConsultarDisponibilidadeMatriculaPorUsuario(int pIdUsuario, int idSolucaoEducacional,
                                                                       int cargaHoraria)
        {
            var retorno = new DTOSolucoes();

            var usuario = new ManterUsuario().ObterUsuarioPorID(pIdUsuario);

            if (usuario != null)
            {
                var permissoesSoculaoEducacional =
                    new BMSolucaoEducacional().ObterListaDePermissoes(usuario.ID, idSolucaoEducacional)
                    .Select(f => f.SolucaoEducacional.ID)
                    .Distinct()
                    .ToList();
                var permissoesOfertas =
                    new BMOferta().ObterListaDePermissoes(usuario.ID).Select(f => f.IdOferta).Distinct().ToList();


                if (idSolucaoEducacional > 0 && permissoesSoculaoEducacional.Contains(idSolucaoEducacional))
                {
                    permissoesSoculaoEducacional.Clear();
                    permissoesSoculaoEducacional.Add(idSolucaoEducacional);
                }

                var solucoes = new ManterSolucaoEducacional().ObterPorFiltroPesquisa(new SolucaoEducacional(), true,
                                                                                     permissoesSoculaoEducacional);

                foreach (var solucaoEducacional in solucoes)
                {
                    var ofertas = solucaoEducacional.ListaOferta.Where(
                        x =>
                        (x.DataInicioInscricoes.HasValue &&
                         x.DataInicioInscricoes.Value.Date <= DateTime.Today) &&
                        x.DataFimInscricoes.HasValue &&
                        x.DataFimInscricoes.Value.Date >= DateTime.Today &&
                        permissoesOfertas.Contains(x.ID) &&
                        //x.ListaPermissao.Any(f=>f.Uf.ID == usuario.UF.ID) &&
                        !(x.ListaTurma.Any(
                              f =>
                              (f.DataFinal == null || f.DataFinal.Value.Date > DateTime.Today) &&

                              // Remover turmas canceladas das possibilidades de matrícula. #2997
                              f.Status != enumStatusTurma.Cancelada &&
                              f.InAberta == false)));

                    if (cargaHoraria > 0)
                    {
                        ofertas = ofertas.Where(f => f.CargaHoraria == cargaHoraria);
                    }

                    var se = new DTOCurso {
                        IDSolucaoEducacional = solucaoEducacional.ID
                    };

                    foreach (var oferta in ofertas.OrderBy(x => x.DataInicioInscricoes))
                    {
                        if (oferta.TipoOferta.Equals(enumTipoOferta.Exclusiva))
                        {
                            break;
                        }

                        //Verificando se existe alguma matricula na SE
                        if (ExisteAlgumaMatriculaComoInscrito(usuario.ListaMatriculaOferta, se.IDSolucaoEducacional))
                        {
                            break;
                        }

                        //VALIDAR SE O USUARIO POSSUI ACESSO A SE: 205 (permissão a se)
                        //VALIDADO NA BUSCA

                        //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE
                        //VERIFICA O LIMITE DE CURSOS SIMULTANEOS
                        int cursosEmAndamento =
                            usuario.ListaMatriculaOferta.Where(
                                x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito)).Count();
                        int limteCursosSimultaneos =
                            int.Parse(
                                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos)
                                .Registro);
                        if (cursosEmAndamento >= limteCursosSimultaneos)
                        {
                            break;
                        }

                        //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO
                        if (new BMUsuarioAbandono().ValidarAbandonoAtivo(usuario.ID))
                        {
                            break;
                        }

                        //VERIFICA SE A OFERTA INFORMADA FOI ENCONTRADA
                        //NO CADASTRO

                        if (oferta.TipoOferta.Equals(enumTipoOferta.Continua))
                        {
                        }

                        if (oferta.TipoOferta.Equals(enumTipoOferta.Normal))
                        {
                        }

                        var qtdInscritosNaOferta =
                            oferta.ListaMatriculaOferta.Count(
                                x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                      x.StatusMatricula != enumStatusMatricula.CanceladoAluno));

                        if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes && !oferta.FiladeEspera)
                        {
                            break;
                        }

                        var trancadoPorNaoPagante = false;

                        if (oferta.ListaNiveisTrancados != null &&
                            oferta.ListaNiveisTrancados.Any(x => x.ID == usuario.NivelOcupacional.ID))
                        {
                            if (!VerificarTrancadoParaPagante(usuario))
                            {
                                trancadoPorNaoPagante = true;
                            }
                        }

                        se.Ofertas.Add(new DTOOfertas
                        {
                            IDOferta                = oferta.ID,
                            CargaHoraria            = oferta.CargaHoraria,
                            TrancadoPorNaoPagamento = trancadoPorNaoPagante,
                            Nome = oferta.Nome
                        });
                    }

                    if (se.Ofertas.Any())
                    {
                        retorno.Cursos.Add(se);
                    }
                }
            }

            return(retorno);
        }