示例#1
0
        public IList <DTOHistoricoAcademicoCursos> ConsultaHistoricoAcademicoCursos(int pIdUsuario)
        {
            BMMatriculaOferta moBM = new BMMatriculaOferta();

            List <MatriculaOferta> lista = new List <MatriculaOferta>();

            lista = moBM.ObterPorUsuario(pIdUsuario).Where(x => x.StatusMatricula == enumStatusMatricula.Concluido || x.StatusMatricula == enumStatusMatricula.Aprovado).ToList();

            IList <DTOHistoricoAcademicoCursos> retorno = new List <DTOHistoricoAcademicoCursos>();

            foreach (var registro in lista)
            {
                DTOHistoricoAcademicoCursos itemAdicionar = new DTOHistoricoAcademicoCursos();
                itemAdicionar.NomeCurso = registro.Oferta.SolucaoEducacional.Nome;
                if (registro.MatriculaTurma != null && registro.MatriculaTurma.Count > 0 && registro.MatriculaTurma.FirstOrDefault().DataTermino.HasValue)
                {
                    itemAdicionar.DataConclusao = registro.MatriculaTurma.FirstOrDefault().DataTermino.Value;
                }
                itemAdicionar.FormaAquisicao = registro.Oferta.SolucaoEducacional.FormaAquisicao.Nome;
                itemAdicionar.CargaHoraria   = registro.Oferta.CargaHoraria;
                itemAdicionar.Fornecedor     = registro.Oferta.SolucaoEducacional.Fornecedor.Nome;
                if (registro.MatriculaTurma != null && registro.MatriculaTurma.Count > 0 && registro.MatriculaTurma.FirstOrDefault().MediaFinal.HasValue)
                {
                    itemAdicionar.MediaFinal = registro.MatriculaTurma.FirstOrDefault().MediaFinal.Value;
                }
                retorno.Add(itemAdicionar);
            }
            return(retorno);
        }
        private MatriculaTurma ObterObjetoMatriculaTurma(int idMatriculaOferta)
        {
            var matriculaOferta = new BMMatriculaOferta().ObterPorID(idMatriculaOferta);

            MatriculaTurma matriculaTurma = new MatriculaTurma();

            /*
             * Demanda #3474
             *
             * usuários com perfis de gestores UC e administradores, podem fazer inscrições de alunos fora do prazo de inscrição estipulado pela oferta.
             */

            if (matriculaOferta != null && matriculaOferta.MatriculaTurma != null)
            {
                matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();
            }
            else
            {
                matriculaTurma = new MatriculaTurma
                {
                    Turma           = new BMTurma().ObterPorID(int.Parse(ddlTurma.SelectedValue)),
                    MatriculaOferta = matriculaOferta,
                    DataMatricula   =
                        IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataInscricao.Text)
                                            ? Convert.ToDateTime(txtDataInscricao.Text)
                                            : DateTime.Now, //Demanda #3474
                    DataTermino =
                        IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataConclusao.Text)
                                            ? Convert.ToDateTime(txtDataConclusao.Text)
                                            : DateTime.Now //Demanda #3474
                };
            }

            if (!string.IsNullOrEmpty(txtJustificativa.Text))
            {
                matriculaTurma.Observacao = txtJustificativa.Text;
            }

            var informarDataInscricao = matriculaTurma.Turma.Oferta.DataInicioInscricoes.HasValue &&
                                        matriculaTurma.Turma.Oferta.DataFimInscricoes.HasValue &&
                                        matriculaTurma.DataMatricula.Between(
                matriculaTurma.Turma.Oferta.DataInicioInscricoes.Value.Date,
                matriculaTurma.Turma.Oferta.DataFimInscricoes.Value.Date);

            if (!informarDataInscricao)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                             matriculaTurma.Turma.Oferta.DataInicioInscricoes.HasValue &&
                                             matriculaTurma.Turma.Oferta.DataFimInscricoes.HasValue
                        ? "Data de Matrícula deve ser entre " +
                                             matriculaTurma.Turma.Oferta.DataInicioInscricoes.Value.Date.ToString("dd/MM/yyyy") + " e " +
                                             matriculaTurma.Turma.Oferta.DataFimInscricoes.Value.Date.ToString("dd/MM/yyyy")
                        : "Data de Matrícula inválida.");
                return(null);
            }

            matriculaTurma.DataLimite = matriculaTurma.CalcularDataLimite(matriculaOferta.Oferta);

            return(matriculaTurma);
        }
示例#3
0
        public List <DTOItemMeusCursos> ObterMeusCursos(int id_Usuario, bool portalNovo = false)
        {
            var resultado = new List <DTOItemMeusCursos>();

            try
            {
                if (id_Usuario > 0)
                {
                    var listaMatriculaOferta = new BMMatriculaOferta()
                                               .ObterPorUsuarioSemMatriculasCapacitacoes(id_Usuario);

                    PreencherDTOComInformacoesDaMatriculaOferta(resultado, listaMatriculaOferta);

                    // Busca matriculas em Trilhas e Programas
                    PreencherDTOComInformacoesDoUsuarioTrilha(id_Usuario, resultado);
                    PreencherDTOComInformacoesDaMatriculaPrograma(id_Usuario, resultado);
                }
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(resultado);
        }
示例#4
0
        public string CancelaMatriculaSolucaoEducacionalGestorUC(int idMatriculaOferta, string solicitante)
        {
            BMMatriculaOferta bmMatriculaOferta = new BMMatriculaOferta();
            MatriculaOferta   matriculaOferta   = bmMatriculaOferta.ObterPorID(idMatriculaOferta);

            if (matriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito)
            {
                matriculaOferta.StatusMatricula = enumStatusMatricula.CanceladoAdm;
                if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
                {
                    matriculaOferta.MatriculaTurma.Clear();
                }
                matriculaOferta.Auditoria = new Auditoria(solicitante);
                bmMatriculaOferta.Salvar(matriculaOferta);
            }
            else if (matriculaOferta.StatusMatricula == enumStatusMatricula.CanceladoAdm || matriculaOferta.StatusMatricula == enumStatusMatricula.CanceladoAluno)
            {
                throw new AcademicoException("A matrícula já se encontra cancelada");
            }
            else
            {
                throw new AcademicoException("O status atual da matrícula não permite o cancelamento.");
            }

            return(string.Empty);
        }
示例#5
0
        public void CancelarMatriculaSolucaoEducacional(int idMatriculaOferta, AuthenticationRequest autenticacao)
        {
            MatriculaOferta matriculaOferta = new BMMatriculaOferta().ObterPorID(idMatriculaOferta);

            if (matriculaOferta != null)
            {
                TimeSpan diasMatriculados = Convert.ToDateTime(DateTime.Now) - Convert.ToDateTime(matriculaOferta.DataSolicitacao);
                if (diasMatriculados.Days > int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro))
                {
                    //Passou do Limite para cancelamento
                    throw new AcademicoException("Prazo expirado para o cancelamento");
                }

                if (matriculaOferta.MatriculaTurma != null)
                {
                    //matriculaOferta.MatriculaTurma.StatusMatricula = enumStatusMatricula.CanceladoAluno;
                    //matriculaOferta.MatriculaTurma.Auditoria = new Auditoria(autenticacao.Login);
                }
                matriculaOferta.StatusMatricula = enumStatusMatricula.CanceladoAluno;
                if (matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
                {
                    matriculaOferta.MatriculaTurma.Clear();
                }

                matriculaOferta.Auditoria = new Auditoria(autenticacao.Login);
                new BMMatriculaOferta().Salvar(matriculaOferta);
            }
            else
            {
                throw new AcademicoException("Matrícula não encontrada");
            }
        }
示例#6
0
        private void ValidarOfertaNormal(Oferta oferta, int idUsuario, List <int> pListaIdMetaIndividualAssociada,
                                         List <int> pListaIdMetaInstitucionalAssociada, AuthenticationRequest autenticacao)
        {
            int qtdInscritosNaOferta =
                oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm &&
                                                        x.StatusMatricula != enumStatusMatricula.CanceladoAluno))
                .Count();

            Usuario usuario = new BMUsuario().ObterPorId(idUsuario);

            MatriculaOferta matriculaOferta = new MatriculaOferta()
            {
                Oferta          = new BMOferta().ObterPorId(oferta.ID),
                Usuario         = usuario,
                Auditoria       = new Auditoria(autenticacao.Login),
                DataSolicitacao = DateTime.Now,
                UF = new BMUf().ObterPorId(usuario.UF.ID),
                NivelOcupacional = new BMNivelOcupacional().ObterPorID(usuario.NivelOcupacional.ID)
            };

            if ((oferta.QuantidadeMaximaInscricoes > 0) && 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, oferta.SolucaoEducacional.ID, pListaIdMetaIndividualAssociada, autenticacao);
            ValidarMetaInstitucional(idUsuario, oferta.SolucaoEducacional.ID, pListaIdMetaInstitucionalAssociada,
                                     autenticacao);
        }
        public bool ConsultarVeracidadeCertificado(string codigo, int idUsuario)
        {
            // Certificado do tutor.
            if (codigo.Length < 32 && codigo.StartsWith("cr"))
            {
                var verificarCertificado = new ManterCertificadoTemplate().VerificarCertificadoTutor(codigo);

                if (verificarCertificado.Valido)
                {
                    return(true);
                }
            }

            var retorno = false;

            var usuario = new Usuario();

            if (idUsuario > 0)
            {
                usuario = new BMUsuario().ObterPorId(idUsuario);

                if (usuario == null)
                {
                    throw new AcademicoException("Usuário não localizado na base");
                }
            }

            if (string.IsNullOrEmpty(codigo))
            {
                throw new AcademicoException("O código do certificado não foi preenchido");
            }

            var bmMatriculaOferta = new BMMatriculaOferta();
            var buscaMatOferta    = bmMatriculaOferta.ObterPorCodigoCertificado(codigo, usuario);

            if (buscaMatOferta != null)
            {
                retorno = true;
            }
            else
            {
                BMUsuarioTrilha BMUsuarioTrilha    = new BMUsuarioTrilha();
                UsuarioTrilha   buscaUsuarioTrilha = BMUsuarioTrilha.ObterPorCodigoCertificao(codigo, usuario);
                if (buscaUsuarioTrilha != null)
                {
                    retorno = true;
                }
            }

            return(retorno);
        }
示例#8
0
        public IList <DTOMatriculasPorUF> ObterMatriculasPorUf(DateTime?dataInicio, DateTime?dataFim)
        {
            IDictionary <string, object> lstParam = new Dictionary <string, object>();

            lstParam.Add("pDataInicio",
                         (!dataInicio.HasValue ? "01/01/" + DateTime.Now.Year : dataInicio.Value.ToString("MM/dd/yyyy")) +
                         " 00:00:00");
            lstParam.Add("pDataFim",
                         (!dataFim.HasValue ? DateTime.Now.Date.ToString("MM/dd/yyyy") : dataFim.Value.ToString("MM/dd/yyyy")) +
                         " 23:59:59");

            var bmMatriculaOferta = new BMMatriculaOferta();

            return(bmMatriculaOferta.ExecutarProcedure <DTOMatriculasPorUF>("DASHBOARD_REL_GraficoMatriculadosUF",
                                                                            lstParam));
        }
示例#9
0
        public void ValidarMatriculaExistente(int idUsuario, int idSolucaoEducacional)
        {
            MatriculaOferta buscaMatricula = new MatriculaOferta();

            buscaMatricula.Usuario    = new Usuario();
            buscaMatricula.Usuario.ID = idUsuario;
            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");
            }
        }
示例#10
0
        public IList <DTOConcluintesEspacoOcupacional> ObterConcluintesExternos(DateTime inicio, DateTime fim, int idUf)
        {
            var lstParam = new Dictionary <string, object>
            {
                { "DataInicio", inicio },
                { "DataFim", fim }
            };

            if (idUf != 0)
            {
                lstParam.Add("IdUf", idUf);
            }

            var bmMatriculaOferta = new BMMatriculaOferta();

            return
                (bmMatriculaOferta.ExecutarProcedure <DTOConcluintesEspacoOcupacional>(
                     "DASHBOARD_REL_CONCLUINTES_EXTERNOS", lstParam));
        }
示例#11
0
        public IList <DTOMatriculasPorMes> ObterMatriculasPorMes(DateTime?dataInicio, DateTime?dataFim, int idUf)
        {
            IDictionary <string, object> lstParam = new Dictionary <string, object>();

            lstParam.Add("pDataInicio",
                         (!dataInicio.HasValue ? "01/01/" + DateTime.Now.Year : dataInicio.Value.ToString("MM/dd/yyyy")) +
                         " 00:00:00");
            lstParam.Add("pDataFim",
                         (!dataFim.HasValue ? DateTime.Now.Date.ToString("MM/dd/yyyy") : dataFim.Value.ToString("MM/dd/yyyy")) +
                         " 23:59:59");

            if (idUf != 0)
            {
                lstParam.Add("IdUf", idUf);
            }

            var bmMatriculaOferta = new BMMatriculaOferta();

            return(bmMatriculaOferta.ExecutarProcedure <DTOMatriculasPorMes>("DASHBOARD_REL_MatriculasPorMes", lstParam));
        }
示例#12
0
        public IList <DTOProcInscricoesPorStatusENivel> ConsultarRelatorioInscricoesPorStatusENivel(string statuses,
                                                                                                    string niveisOcupacionais, int?idUf, int?idSolucaoEducacional, DateTime?dataInicial, DateTime?dataFinal, IEnumerable <int> pUfResponsavel)
        {
            var parametros = new Dictionary <string, object>
            {
                {
                    "p_Statuses", statuses
                },
                {
                    "p_NiveisOcupacionais", niveisOcupacionais
                },
                {
                    "p_UF", idUf
                },
                {
                    "p_SolucaoEducacional", idSolucaoEducacional
                },
                {
                    "p_DataInicioMatricula", dataInicial
                },
                {
                    "p_DataFimMatricula", dataFinal
                }
            };

            if (pUfResponsavel != null && pUfResponsavel.Any())
            {
                parametros.Add("P_UFResponsavel", string.Join(", ", pUfResponsavel));
            }
            else
            {
                parametros.Add("P_UFResponsavel", DBNull.Value);
            }

            var bmMatriculaOferta = new BMMatriculaOferta();

            return
                (bmMatriculaOferta.ExecutarProcedure <DTOProcInscricoesPorStatusENivel>(
                     "SP_REL_INSCRICOES_POR_STATUS_E_NIVEL", parametros));
        }
        public List <DTOItemHistoricoAcademico> ConsultarHistorico(int id_Usuario)
        {
            try
            {
                var listaMatriculaOferta = new BMMatriculaOferta()
                                           .ObterPorUsuario(id_Usuario)
                                           .Where(x => x.StatusMatricula != enumStatusMatricula.CanceladoAdm && x.StatusMatricula != enumStatusMatricula.PendenteConfirmacaoAluno)
                                           .ToList();

                var resultado = PreencherDTOComInformacoesDaMatriculaOferta(listaMatriculaOferta, id_Usuario);

                PreencherDTOComInformacoesDoUsuarioTrilha(id_Usuario, resultado);
                PreencherDTOComInformacoesDaMatriculaPrograma(id_Usuario, resultado);
                PreencherDTOComInformacoesDoHistoricoExtraCurricular(id_Usuario, resultado);
                PreencherDTOComInformacoesDoHistoricoSGTC(id_Usuario, resultado);

                return(resultado.OrderByDescending(x => ConverterData(x.DataInicio)).ToList());
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        public void EnviarDadosOferta(int idOferta)
        {
            var matriculaFiltro = new MatriculaOferta {
                Oferta = new Oferta {
                    ID = idOferta
                }
            };

            var listaProcessar = new BMMatriculaOferta().ObterPorFiltro(matriculaFiltro).ToList();

            foreach (var item in listaProcessar)
            {
                var soapCliente = new moodle.IntegracaoSoapClient();

                var firstOrDefault = item.MatriculaTurma.FirstOrDefault();

                if (firstOrDefault != null)
                {
                    soapCliente.MatricularAluno(item.Usuario.Nome, item.Usuario.CPF, item.Usuario.Email,
                                                item.Usuario.Cidade, item.Oferta.CodigoMoodle.ToString(), firstOrDefault.Turma.IDChaveExterna);
                }
            }
        }
示例#15
0
        public DTOMatriculas ObterMatriculasConcluintes(DateTime?inicio, DateTime?fim, int idUf)
        {
            inicio = inicio.HasValue ? inicio : DateTime.Now.AddYears(-1);

            fim = fim.HasValue ? fim : DateTime.Now;

            var listPrm = new Dictionary <string, object>
            {
                { "DataInicio", inicio },
                { "DataFim", fim }
            };

            if (idUf != 0)
            {
                listPrm.Add("IdUf", idUf);
            }

            var bmMatriculaOferta = new BMMatriculaOferta();

            return
                (bmMatriculaOferta.ExecutarProcedure <DTOMatriculas>("DASHBOARD_REL_CONCLUINTES", listPrm)
                 .FirstOrDefault());
        }
示例#16
0
        public void AtualizarMatriculaOferta(MatriculaOferta pMatriculaOferta, bool verificarPoliticaDeConsequencia = true, bool fazerMerge = false)
        {
            try
            {
                ValidarMatriculaOfertaInformada(pMatriculaOferta);

                // Verifica se o usuário está bloqueado pelas políticas de consequência.
                if (verificarPoliticaDeConsequencia)
                {
                    _bmMatriculaOferta.VerificarPoliticaDeConsequencia(pMatriculaOferta);
                }

                var bmMatriculaOferta = new BMMatriculaOferta();

                if (fazerMerge)
                {
                    bmMatriculaOferta.FazerMerge(pMatriculaOferta);
                }
                else
                {
                    bmMatriculaOferta.Salvar(pMatriculaOferta);
                }

                //TODO: para retirar esse try catch é preciso atualizar os lugares que dependem desse metodo.
            }
            catch (PoliticaConsequenciaException)
            {
                throw;
            }
            catch
            {
                throw new AcademicoException(string.Format(
                                                 "Houve um erro no salvamento da matrícula do aluno {0} ({1})", pMatriculaOferta.Usuario.Nome,
                                                 pMatriculaOferta.Usuario.CPF));
            }
        }
示例#17
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!");
        }
示例#18
0
 public ManterMatriculaOferta()
 {
     _bmMatriculaOferta = new BMMatriculaOferta();
 }
 public ManterFormacaoDeMultiplicadores()
 {
     _bmMatriculaOferta = new BMMatriculaOferta();
     _bmOferta          = new BMOferta();
 }
示例#20
0
        public bool ManterMatriculaTurma(int idMatriculaOferta, int idTurma, double mediaFinal, AuthenticationProviderRequest autenticacao)
        {
            try
            {
                RegistrarLogExecucaoFornecedor((new BMFornecedor()).ObterPorFiltro(new Fornecedor()
                {
                    Login = autenticacao.Login
                }).FirstOrDefault(), "ManterMatriculaTurma");

                var bmMatriculaTurma  = new BMMatriculaTurma();
                var bmMatriculaOferta = new BMMatriculaOferta();
                var bmTurma           = new BMTurma();

                MatriculaTurma matriculaTurma = new MatriculaTurma();
                matriculaTurma.MatriculaOferta    = new MatriculaOferta();
                matriculaTurma.Turma              = new Turma();
                matriculaTurma.MatriculaOferta.ID = idMatriculaOferta;
                matriculaTurma.Turma.ID           = idTurma;

                matriculaTurma = bmMatriculaTurma.ObterPorFiltro(matriculaTurma).FirstOrDefault();

                if (matriculaTurma != null)
                {
                    MatriculaOferta matriculaOferta = bmMatriculaOferta.ObterPorID(idMatriculaOferta);
                    Turma           turma           = bmTurma.ObterPorID(idTurma);

                    matriculaTurma.MediaFinal = matriculaOferta.StatusMatricula == enumStatusMatricula.Abandono
                        ? null
                        : (double?)mediaFinal;

                    if (matriculaTurma.MediaFinal == 0)
                    {
                        matriculaTurma.MediaFinal = null;
                    }

                    if (!matriculaTurma.DataTermino.HasValue)
                    {
                        matriculaTurma.DataTermino = DateTime.Now;
                    }

                    decimal notaMinima = turma.NotaMinima.HasValue ? turma.NotaMinima.Value : 7;
                    decimal notaFinal  = matriculaTurma.MediaFinal.HasValue ? Convert.ToDecimal(matriculaTurma.MediaFinal.Value) : decimal.Zero;

                    if (notaFinal >= notaMinima)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Aprovado;
                    }
                    else
                    {
                        // Se já tiver terminada a turma vamos reprovar o aluno e ele não obteve nota para ser aprovado vamos reprovar ele
                        if (matriculaTurma.DataLimite < DateTime.Now)
                        {
                            // Se não obteve nenhuma nota é abandono
                            if (notaFinal == 0)
                            {
                                matriculaOferta.StatusMatricula = enumStatusMatricula.Abandono;
                            }
                            // Do contrário é deve ser reprovado
                            else
                            {
                                matriculaOferta.StatusMatricula = enumStatusMatricula.Reprovado;
                            }
                        }
                    }

                    matriculaTurma.Auditoria.UsuarioAuditoria = matriculaOferta.Auditoria.UsuarioAuditoria = autenticacao.Login;
                    matriculaOferta.Auditoria.DataAuditoria   = matriculaTurma.Auditoria.DataAuditoria = DateTime.Now;

                    bmMatriculaTurma.Salvar(matriculaTurma);
                    bmMatriculaOferta.Salvar(matriculaOferta);

                    //CASO A OFERTA FOR CONTINUA, VERIFICA E ATUALIZA O ITEM TRILHA DO USUARIO
                    new BP.ManterItemTrilhaParticipacao().vinculaMatriculaOferta(matriculaOferta);

                    new BP.ManterItemTrilhaParticipacao().AtualizarStatusParticipacoesTrilhas(matriculaOferta);
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
        public RetornoWebService AtualizarNotaAlunoMoodle(string chaveExternaSolucao, string chaveExternaTurma,
                                                          string codCurso, string idUsuario, string nota, string dataConclusao)
        {
            try
            {
                //Pega a última turma
                var turma = new BMTurma().ObterUltimaTurmaPorChaveExterna(chaveExternaTurma);

                //Pega o id do pelo cpf(idUsuario) usuário
                var usuario = new BMUsuario().ObterPorCPF(idUsuario);

                if (usuario?.ID > 0)
                {
                    //Pegar a MatriculaOferta
                    var bmMatriculaOrfeta = new BMMatriculaOferta();
                    var matriculaOferta   = bmMatriculaOrfeta.ObterPorOfertaEUsuario(turma.Oferta.ID, usuario.ID);

                    //Pegar a MatriculaTurma
                    var matriculaTurma = new BMMatriculaTurma().ObterMatriculaTurma(usuario.ID, turma.Oferta.ID);

                    double notaFinal;

                    if (double.TryParse(nota, out notaFinal))
                    {
                        matriculaTurma.MediaFinal = notaFinal;
                    }

                    matriculaTurma.DataTermino = DateTime.Now;

                    new BMMatriculaTurma().Salvar(matriculaTurma);

                    if (notaFinal >= 7)
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Aprovado;
                    }
                    else
                    {
                        matriculaOferta.StatusMatricula = enumStatusMatricula.Reprovado;
                    }

                    bmMatriculaOrfeta.Salvar(matriculaOferta);

                    return(new RetornoWebService()
                    {
                        Erro = 0, Mensagem = string.Empty
                    });
                }

                return(new RetornoWebService()
                {
                    Erro = 1, Mensagem = "usuario não encontrado"
                });
            }
            catch (Exception ex)
            {
                return(new RetornoWebService()
                {
                    Erro = 1, Mensagem = ex.Message
                });
            }
        }
        /// <summary>
        /// Método usado para gerar o certificado de cursos normais e de trilha
        /// </summary>
        /// <param name="pTexto"></param>
        /// <param name="pIdMatriculaOferta"></param>
        /// <param name="pIdUsuarioTrilha"></param>
        /// <returns></returns>
        public static string FormatarTextoCertificadoTrilhaTurma(string pTexto, int pIdMatriculaPrograma,
                                                                 int pIdMatriculaOferta, int pIdUsuarioTrilha)
        {
            var tI = new CultureInfo("pt-Br", true).TextInfo;

            if (pIdMatriculaPrograma > 0)
            {
                var matriculaCapacitacao = new BMMatriculaCapacitacao().ObterPorId(pIdMatriculaPrograma);
                if (matriculaCapacitacao != null)
                {
                    var nomeUsuario     = tI.ToTitleCase(matriculaCapacitacao.Usuario.Nome.ToLower());
                    var dataInicioTurma = string.Empty;
                    var dataFimTurma    = string.Empty;

                    if (matriculaCapacitacao.ListaMatriculaTurmaCapacitacao != null &&
                        matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.Any())
                    {
                        if (matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault().TurmaCapacitacao !=
                            null &&
                            matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                            .TurmaCapacitacao.DataInicio.HasValue)
                        {
                            dataInicioTurma =
                                matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                                .TurmaCapacitacao.DataInicio.Value.ToString("dd/MM/yyyy");
                        }
                        if (matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault().TurmaCapacitacao !=
                            null &&
                            matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                            .TurmaCapacitacao.DataFim.HasValue)
                        {
                            dataFimTurma =
                                matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                                .TurmaCapacitacao.DataFim.Value.ToString("dd/MM/yyyy");
                        }
                    }

                    pTexto = pTexto
                             .Replace("#CODIGOCERTIFICADO", matriculaCapacitacao.CDCertificado)
                             .Replace("#DATEGERACAOCERTIFICADO",
                                      matriculaCapacitacao.DataGeracaoCertificado.HasValue
                                ? matriculaCapacitacao.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                             .Replace("#DATAGERACAOCERTIFICADO",
                                      matriculaCapacitacao.DataGeracaoCertificado.HasValue
                                ? matriculaCapacitacao.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                             .Replace("#DATASISTEMAEXTENSO", DateTime.Now.ToLongDateString().ToString())
                             .Replace("#DATASISTEMA", DateTime.Now.ToString("dd/MM/yyyy"))
                             .Replace("#DATAHORASISTEMA", DateTime.Now.ToString("dd/MM/yyyy HH:mm"))
                             .Replace("#ALUNO", nomeUsuario)
                             .Replace("#CPF", WebFormHelper.FormatarCPF(matriculaCapacitacao.Usuario.CPF))
                             .Replace("#EMAILALUNO", matriculaCapacitacao.Usuario.Email)
                             .Replace("#OFERTA", matriculaCapacitacao.Capacitacao.Nome)
                             .Replace("#NOMEPROGRAMA", matriculaCapacitacao.Capacitacao.Programa.Nome)
                             .Replace("#DATAINICIOOFERTA", matriculaCapacitacao.Capacitacao.DataInicio.ToString("dd/MM/yyyy"))
                             .Replace("#DATAFIMOFERTA",
                                      matriculaCapacitacao.Capacitacao.DataFim.HasValue
                                ? matriculaCapacitacao.Capacitacao.DataFim.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                             .Replace("#DATAMATRICULA",
                                      matriculaCapacitacao.ListaMatriculaTurmaCapacitacao != null
                                ? matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                                      .DataMatricula.ToString("dd/MM/yyyy")
                                : string.Empty);

                    var matriculaTurmaCapacitacao = matriculaCapacitacao.ListaMatriculaTurmaCapacitacao != null
                        ? matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                        : null;

                    var dataTermino = matriculaTurmaCapacitacao != null &&
                                      matriculaTurmaCapacitacao.MatriculaCapacitacao != null &&
                                      matriculaTurmaCapacitacao.MatriculaCapacitacao.DataFim.HasValue
                        ? matriculaTurmaCapacitacao.MatriculaCapacitacao.DataFim.Value.ToString("dd/MM/yyyy")
                        : "";

                    pTexto = pTexto.Replace("#DATATERMINO", dataTermino);

                    pTexto.Replace("#TURMA",
                                   matriculaCapacitacao.ListaMatriculaTurmaCapacitacao != null
                            ? matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.FirstOrDefault()
                                   .TurmaCapacitacao.Nome
                            : string.Empty)
                    .Replace("#STATUS", matriculaCapacitacao.StatusMatriculaFormatado)
                    .Replace("#DATAINICIOTURMA", dataInicioTurma)
                    .Replace("#DATAFIMTURMA", dataFimTurma);


                    return(pTexto);
                }
            }

            if (pIdMatriculaOferta > 0)
            {
                MatriculaOferta matriculaOferta = new BMMatriculaOferta().ObterPorID(pIdMatriculaOferta);
                if (matriculaOferta != null)
                {
                    var nomeUsuario = tI.ToTitleCase(matriculaOferta.Usuario.Nome.ToLower());

                    var dataInicioTurma = string.Empty;
                    var dataFimTurma    = string.Empty;

                    var matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();

                    if (matriculaOferta.MatriculaTurma != null && matriculaTurma != null)
                    {
                        if (matriculaTurma.Turma != null)
                        {
                            dataInicioTurma = matriculaTurma.Turma.DataInicio.ToString("dd/MM/yyyy");
                        }
                        if (matriculaTurma.Turma != null && matriculaTurma.Turma.DataFinal.HasValue)
                        {
                            dataFimTurma = matriculaTurma.Turma.DataFinal.Value.ToString("dd/MM/yyyy");
                        }
                    }

                    int totalHoras = matriculaOferta.Oferta.SolucaoEducacional.ListaItemTrilha
                                     .Where(x => x.Aprovado == enumStatusSolucaoEducacionalSugerida.Aprovado)
                                     .Sum(x => x.CargaHoraria);

                    return(pTexto
                           .Replace("#DATASISTEMAEXTENSO", DateTime.Now.ToLongDateString().ToString())
                           .Replace("#DATASISTEMA", DateTime.Now.ToString("dd/MM/yyyy"))
                           .Replace("#DATAHORASISTEMA", DateTime.Now.ToString("dd/MM/yyyy HH:mm"))
                           .Replace("#ALUNO", nomeUsuario)
                           .Replace("#CPF", WebFormHelper.FormatarCPF(matriculaOferta.Usuario.CPF))
                           .Replace("#EMAILALUNO", matriculaOferta.Usuario.Email)
                           .Replace("#CARGAHORARIASOLUCAOSEBRAE", totalHoras.ToString())
                           .Replace("#OFERTA", matriculaOferta.Oferta.Nome)
                           .Replace("#CARGAHORARIA", matriculaOferta.Oferta.CargaHoraria.ToString())
                           .Replace("#NOMESE", matriculaOferta.Oferta.SolucaoEducacional.Nome)
                           .Replace("#DATAINICIOOFERTA",
                                    matriculaTurma != null ? matriculaTurma.Turma.DataInicio.ToString("dd/MM/yyyy") : "")
                           .Replace("#DATAFIMOFERTA",
                                    matriculaTurma.Turma.DataFinal.HasValue
                                ? matriculaTurma.Turma.DataFinal.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                           .Replace("#DATAMATRICULA",
                                    matriculaOferta.MatriculaTurma != null
                                ? matriculaTurma.DataMatricula.ToString("dd/MM/yyyy")
                                : string.Empty)
                           .Replace("#DATATERMINO",
                                    matriculaOferta.MatriculaTurma != null &&
                                    matriculaTurma.DataTermino.HasValue
                                ? matriculaTurma
                                    .DataTermino.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                           .Replace("#EMENTA", matriculaOferta.Oferta.SolucaoEducacional.Ementa)
                           .Replace("#TURMA",
                                    matriculaOferta.MatriculaTurma != null ? matriculaTurma.Turma.Nome : string.Empty)
                           .Replace("#PROFESSOR", matriculaTurma != null && matriculaTurma.Turma.Professores.Any()
                            ? string.Join(", ", matriculaTurma.Turma.Professores.Select(x => x.Nome).ToArray())
                            : string.Empty)
                           .Replace("#LOCAL", matriculaTurma.Turma.Local != null ? matriculaTurma.Turma.Local : "Sem Local")
                           .Replace("#CODIGOCERTIFICADO", matriculaOferta.CDCertificado)
                           .Replace("#MEDIAFINALTURMA",
                                    matriculaOferta.MatriculaTurma != null &&
                                    matriculaTurma.MediaFinal.HasValue
                                ? matriculaTurma.MediaFinal.Value.ToString()
                                : string.Empty)
                           .Replace("#DATEGERACAOCERTIFICADO",
                                    matriculaOferta.DataGeracaoCertificado.HasValue
                                ? matriculaOferta.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                           .Replace("#DATAGERACAOCERTIFICADO",
                                    matriculaOferta.DataGeracaoCertificado.HasValue
                                ? matriculaOferta.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                                : string.Empty)
                           .Replace("#NOTAFINAL",
                                    matriculaOferta.MatriculaTurma != null &&
                                    matriculaTurma.MediaFinal.HasValue
                                ? matriculaTurma.MediaFinal.Value.ToString()
                                : string.Empty)
                           .Replace("#STATUS", matriculaOferta.StatusMatriculaFormatado)
                           .Replace("#DATAINICIOTURMA", dataInicioTurma)
                           .Replace("#DATAFIMTURMA", dataFimTurma)
                           .Replace("#TEXTOPORTAL", matriculaOferta.Oferta.SolucaoEducacional.Apresentacao != null
                            ? Regex.Replace(matriculaOferta.Oferta.SolucaoEducacional.Apresentacao, "<.*?>",
                                            string.Empty)
                            : string.Empty)
                           .Replace("#INFORMACOESADICIONAIS", matriculaOferta.Oferta.InformacaoAdicional != null
                            ? Regex.Replace(matriculaOferta.Oferta.InformacaoAdicional, "<.*?>", string.Empty)
                            : string.Empty)
                           .Replace("#AREATEMATICA", matriculaOferta.Oferta.SolucaoEducacional.ListaAreasTematicas.Any()
                            ? string.Join(", ",
                                          matriculaOferta.Oferta.SolucaoEducacional.ListaAreasTematicas.Select(
                                              x => x.AreaTematica.Nome).ToArray())
                            : string.Empty)
                           );
                }
            }

            if (pIdUsuarioTrilha > 0)
            {
                MatriculaOferta matriculaOferta = new BMMatriculaOferta().ObterPorID(pIdMatriculaOferta);

                var bmUsuarioTrilha = new BMUsuarioTrilha();
                var usuarioTrilha   = bmUsuarioTrilha.ObterPorId(pIdUsuarioTrilha);
                if (usuarioTrilha == null || !usuarioTrilha.StatusMatricula.Equals(enumStatusMatricula.Aprovado))
                {
                    return("Erro ao gerar o certificado");
                }
                var nomeUsuario = tI.ToTitleCase(usuarioTrilha.Usuario.Nome.ToLower());

                var cargaHoraria = bmUsuarioTrilha.ObterTotalCargaHoraria(usuarioTrilha);

                return(pTexto
                       .Replace("#DATASISTEMAEXTENSO", DateTime.Now.ToLongDateString().ToString())
                       .Replace("#DATASISTEMA", DateTime.Now.ToString("dd/MM/yyyy"))
                       .Replace("#DATAHORASISTEMA", DateTime.Now.ToString("dd/MM/yyyy HH:mm"))
                       .Replace("#ALUNO", nomeUsuario)
                       .Replace("#CPF", WebFormHelper.FormatarCPF(usuarioTrilha.Usuario.CPF))
                       .Replace("#EMAILALUNO", usuarioTrilha.Usuario.Email)
                       .Replace("#TRILHANIVEL", usuarioTrilha.TrilhaNivel.Nome)
                       .Replace("#TRILHA", usuarioTrilha.TrilhaNivel.Trilha.Nome)
                       .Replace("#DATALIMITE", usuarioTrilha.DataLimite.ToString("dd/MM/yyyy"))
                       .Replace("#DATAINICIOTRILHA", usuarioTrilha.DataInicio.ToString("dd/MM/yyyy"))
                       .Replace("#CARGAHORARIASOLUCAOSEBRAE", cargaHoraria.ToString())
                       .Replace("#DATAFIMTRILHA",
                                usuarioTrilha.DataFim.HasValue
                            ? usuarioTrilha.DataFim.Value.ToString("dd/MM/yyyy")
                            : string.Empty)
                       .Replace("#MEDIAFINALTRILHA",
                                usuarioTrilha.NotaProva.HasValue ? usuarioTrilha.NotaProva.Value.ToString() : string.Empty)
                       .Replace("#CODIGOCERTIFICADO", usuarioTrilha.CDCertificado)
                       .Replace("#CARGAHORARIA", cargaHoraria.ToString())
                       .Replace("#DATEGERACAOCERTIFICADO",
                                usuarioTrilha.DataGeracaoCertificado.HasValue
                            ? usuarioTrilha.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                            : string.Empty)
                       .Replace("#DATAGERACAOCERTIFICADO",
                                usuarioTrilha.DataGeracaoCertificado.HasValue
                            ? usuarioTrilha.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy")
                            : string.Empty));
            }
            return("Erro ao gerar o certificado");
        }
        public static CertificadoTemplate ConsultarCertificado(int pIdMatriculaPrograma, int pIdMatriculaOferta,
                                                               int pIdUsuarioTrilha, int emitidoPeloGestor)
        {
            if (pIdMatriculaPrograma > 0)
            {
                var matriculaCapacitacao = (new BMMatriculaCapacitacao()).ObterPorId(pIdMatriculaPrograma);
                if (matriculaCapacitacao == null)
                {
                    return(null);
                }
                if (matriculaCapacitacao.Capacitacao.Certificado == null)
                {
                    return(null);
                }
                if (matriculaCapacitacao.Capacitacao.Certificado.ID == 0)
                {
                    return(null);
                }
                if (matriculaCapacitacao.StatusMatricula == enumStatusMatricula.Aprovado ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.Concluido ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoMultiplicador ||
                    matriculaCapacitacao.StatusMatricula ==
                    enumStatusMatricula.AprovadoComoMultiplicadorComAcompanhamento ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitador ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitadorComAcompanhamento ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoConsultor ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoConsultorComAcompanhamento ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoModerador ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoModeradorComAcompanhamento |
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitadorConsultor ||
                    matriculaCapacitacao.StatusMatricula == enumStatusMatricula.AprovadoComoGestor)
                {
                    if (string.IsNullOrEmpty(matriculaCapacitacao.CDCertificado))
                    {
                        matriculaCapacitacao.CDCertificado          = WebFormHelper.ObterStringAleatoria();
                        matriculaCapacitacao.DataGeracaoCertificado = DateTime.Now;
                        if (emitidoPeloGestor > 0)
                        {
                            matriculaCapacitacao.CertificadoEmitidoPorGestor = emitidoPeloGestor;
                        }
                        new BMMatriculaCapacitacao().Salvar(matriculaCapacitacao);
                    }

                    return(new BMCertificadoTemplate().ObterPorID(matriculaCapacitacao.Capacitacao.Certificado.ID));
                }
                return(null);
            }

            if (pIdMatriculaOferta > 0)
            {
                var mo = new BMMatriculaOferta().ObterPorID(pIdMatriculaOferta);

                if (!(mo != null && mo.Oferta.CertificadoTemplate != null && mo.Oferta.CertificadoTemplate.ID > 0))
                {
                    return(null);
                }

                if (mo.StatusMatricula == enumStatusMatricula.Aprovado ||
                    mo.StatusMatricula == enumStatusMatricula.Concluido ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoMultiplicador ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoMultiplicadorComAcompanhamento ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitador ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitadorComAcompanhamento ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoConsultor ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoConsultorComAcompanhamento ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoModerador ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoModeradorComAcompanhamento |
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoFacilitadorConsultor ||
                    mo.StatusMatricula == enumStatusMatricula.AprovadoComoGestor
                    )
                {
                    if (string.IsNullOrEmpty(mo.CDCertificado))
                    {
                        mo.CDCertificado          = WebFormHelper.ObterStringAleatoria();
                        mo.DataGeracaoCertificado = DateTime.Now;
                        if (emitidoPeloGestor > 0)
                        {
                            mo.CertificadoEmitidoPorGestor = emitidoPeloGestor;
                        }
                        new BMMatriculaOferta().Salvar(mo);
                    }

                    return(new BMCertificadoTemplate().ObterPorID(mo.Oferta.CertificadoTemplate.ID));
                }

                return(null);
            }

            if (pIdUsuarioTrilha > 0)
            {
                var           bmUsuarioTrilha = new BMUsuarioTrilha();
                UsuarioTrilha ut = bmUsuarioTrilha.ObterPorId(pIdUsuarioTrilha);

                if (
                    !(ut != null && ut.TrilhaNivel.CertificadoTemplate != null &&
                      ut.TrilhaNivel.CertificadoTemplate.ID > 0))
                {
                    return(null);
                }

                // inicio #2720
                // ajuste feito pois não existe status concluido para usuariotrilha, deve ser aprovado.
                if (ut.StatusMatricula == enumStatusMatricula.Concluido)
                {
                    ut.StatusMatricula = enumStatusMatricula.Aprovado;
                    bmUsuarioTrilha.Salvar(ut);
                }
                // fim #2720

                if (ut.StatusMatricula == enumStatusMatricula.Aprovado)
                {
                    if (string.IsNullOrEmpty(ut.CDCertificado))
                    {
                        ut.CDCertificado          = WebFormHelper.ObterStringAleatoria();
                        ut.DataGeracaoCertificado = DateTime.Now;
                        bmUsuarioTrilha.Salvar(ut);
                    }

                    return(new BMCertificadoTemplate().ObterPorID(ut.TrilhaNivel.CertificadoTemplate.ID));
                }
                else
                {
                    return(null);
                }
            }

            else
            {
                return(null);
            }
        }
        public CertificadoTemplate ObterCertificado(int pIdMatriculaOferta, int pIdUsuarioTrilha)
        {
            CertificadoTemplate certificadoTemplate = null;

            try
            {
                if (pIdMatriculaOferta > 0)
                {
                    MatriculaOferta mo = new BMMatriculaOferta().ObterPorID(pIdMatriculaOferta);

                    if (!(mo != null && mo.Oferta.CertificadoTemplate != null && mo.Oferta.CertificadoTemplate.ID > 0))
                    {
                        return(certificadoTemplate);
                    }

                    if (mo.StatusMatricula == enumStatusMatricula.Concluido)
                    {
                        if (string.IsNullOrEmpty(mo.CDCertificado))
                        {
                            mo.CDCertificado          = InfraEstrutura.Core.Helper.WebFormHelper.ObterStringAleatoria();
                            mo.DataGeracaoCertificado = DateTime.Now;
                            new BMMatriculaOferta().Salvar(mo);
                        }

                        certificadoTemplate = new BMCertificadoTemplate().ObterPorID(mo.Oferta.CertificadoTemplate.ID);
                    }
                    else
                    {
                        return(null);
                    }
                }

                else if (pIdUsuarioTrilha > 0)
                {
                    UsuarioTrilha ut = new BMUsuarioTrilha().ObterPorId(pIdUsuarioTrilha);

                    if (!(ut != null && ut.TrilhaNivel.CertificadoTemplate != null && ut.TrilhaNivel.CertificadoTemplate.ID > 0))
                    {
                        return(certificadoTemplate);
                    }

                    if (ut.StatusMatricula == enumStatusMatricula.Aprovado)
                    {
                        if (string.IsNullOrEmpty(ut.CDCertificado))
                        {
                            ut.CDCertificado          = InfraEstrutura.Core.Helper.WebFormHelper.ObterStringAleatoria();
                            ut.DataGeracaoCertificado = DateTime.Now;
                            new BMUsuarioTrilha().Salvar(ut);
                        }

                        return(new BMCertificadoTemplate().ObterPorID(ut.TrilhaNivel.CertificadoTemplate.ID));
                    }
                    else
                    {
                        return(certificadoTemplate);
                    }
                }

                else
                {
                    return(certificadoTemplate);
                }
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                ErroUtil.Instancia.TratarErro(ex);
            }

            return(certificadoTemplate);
        }