Пример #1
0
        /// <summary>
        /// Executar uma consulta de relatório em threading e enviar para a tela de Solicitações de relatórios via FileServer.
        /// Este método é um wrap do método de datatable com menos parâmetros.
        /// </summary>
        /// <param name="dt">Objeto de dados do relatório</param>
        /// <param name="saida">Tipo de saída do relatório</param>
        /// <param name="items">Itens a serem exibidos pelo ReportViewer</param>
        /// <param name="nomeRelatorio">Nome do namespace do arquivo rpt do relatório</param>
        /// <param name="nomeAmigavel">Nome amigável do relatório</param>
        /// <param name="quantidadeRegistro">Quantidade de registros do relatório</param>
        /// <param name="totalizador">Objeto com totalizador</param>
        public static void ExecutarThreadSolicitacaoRelatorio(object dt, enumTipoSaidaRelatorio saida,
                                                              ListItemCollection items, string nomeRelatorio, string nomeAmigavel, int quantidadeRegistro,
                                                              object totalizador = null)
        {
            // Obter o caminho do arquivo com um nome aleatório.
            var caminhoDiretorioUpload =
                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;

            var nomeAleatorioDoArquivoParaUploadCriptografado = WebFormHelper.ObterStringAleatoria();

            var diretorioDeUploadComArquivo = string.Concat(caminhoDiretorioUpload, @"\",
                                                            nomeAleatorioDoArquivoParaUploadCriptografado);

            ExecutarThreadSolicitacaoRelatorio(
                dt,
                saida,
                items,
                nomeRelatorio,
                nomeAmigavel,
                diretorioDeUploadComArquivo,
                nomeAleatorioDoArquivoParaUploadCriptografado,
                new ManterUsuario().ObterUsuarioLogado(),
                new ManterSolicitacaoRelatorio(),
                new ManterFileServer(),
                quantidadeRegistro,
                totalizador);

            WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                         "Seu relatório está sendo gerado e deve aparecer no menu de solicitações de relatórios em breve. O menu fica em \"SOLICITAÇÕES DE RELATÓRIOS > Histórico de solicitações\".");
        }
Пример #2
0
        protected void btnSalvar_Click1(object sender, EventArgs e)
        {
            string senhagerada;

            try
            {
                var userSalvar = ObterObjetoUsuario();
                senhagerada = txtSenha.Text;

                if (string.IsNullOrEmpty(senhagerada))
                {
                    senhagerada = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.SenhaPadrao).Registro;
                }

                //userSalvar.SenhaLms = WebFormHelper.ObterHashMD5(senhagerada);
                userSalvar.Senha = CriptografiaHelper.Criptografar(senhagerada);

                var manterUsuario = new ManterUsuario();

                manterUsuario.Salvar(userSalvar);

                manterUsuario.EnviarEmailBoasVindas(userSalvar);

                MatricularNovoUsuarioEmCursosObrigatorios(userSalvar);
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }

            WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Usuário cadastrado com sucesso!\nA senha gerada para o usuário criado foi: " + senhagerada + ".", "ListarUsuario.aspx");
        }
Пример #3
0
        /// <summary>
        /// Executar uma consulta de relatório em threading e enviar para a tela de Solicitações de relatórios via FileServer.
        /// Este método é um wrap do método para requisição em URL com menos parâmetros.
        /// </summary>
        /// <param name="requestUrl">URl da requisição</param>
        /// <param name="saida">Tipo de saída do relatório</param>
        /// <param name="nomeRelatorio">Nome técnico do relatório</param>
        /// <param name="nomeAmigavel">Nome amigável do relatório</param>
        /// <param name="quantidadeRegistro">Quantidade de registros do relatório</param>
        public static void ExecutarThreadSolicitacaoRelatorioRequisicao(string requestUrl, enumTipoSaidaRelatorio saida,
                                                                        string nomeRelatorio, string nomeAmigavel, int quantidadeRegistro)
        {
            // Obter o caminho do arquivo com um nome aleatório.
            var caminhoDiretorioUpload =
                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;

            var nomeAleatorioDoArquivoParaUploadCriptografado = WebFormHelper.ObterStringAleatoria();

            var diretorioDeUploadComArquivo = string.Concat(caminhoDiretorioUpload, @"\",
                                                            nomeAleatorioDoArquivoParaUploadCriptografado);

            // Ler requisição a partir de uma URL informada.
            var webRequest = (HttpWebRequest)WebRequest.Create(requestUrl);

            ExecutarThreadSolicitacaoRelatorioRequisicao(
                webRequest,
                saida,
                nomeRelatorio,
                nomeAmigavel,
                diretorioDeUploadComArquivo,
                nomeAleatorioDoArquivoParaUploadCriptografado,
                new ManterUsuario().ObterUsuarioLogado(),
                new ManterSolicitacaoRelatorio(),
                new ManterFileServer(),
                quantidadeRegistro);

            WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                         "Seu relatório está sendo gerado e deve aparecer no menu de solicitações de relatórios em breve. O menu fica em \"SOLICITAÇÕES DE RELATÓRIOS > Histórico de solicitações\".");
        }
Пример #4
0
        public void GerarNotificacaoItemTrilha(TrilhaAtividadeFormativaParticipacao participacao)
        {
            string      enderecoPortal = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro;
            Notificacao notificacao    = new Notificacao();

            notificacao.Usuario         = participacao.UsuarioTrilha.Usuario;
            notificacao.DataGeracao     = DateTime.Now;
            notificacao.DataNotificacao = DateTime.Now;
            notificacao.TipoNotificacao = enumTipoNotificacao.Academico;
            notificacao.Visualizado     = false;
            notificacao.Link            = enderecoPortal + string.Format("trilhas/trilha/{0}/nivel/{1}", participacao.UsuarioTrilha.TrilhaNivel.Trilha.ID.ToString(), participacao.UsuarioTrilha.TrilhaNivel.ID);

            string nomeDoItem = participacao.TrilhaTopicoTematico.Nome;


            if (participacao.Autorizado.HasValue && participacao.Autorizado.Value)
            {
                notificacao.TextoNotificacao = string.Format("Parabéns, sua participação no sprint {0} da trilha {1} foi aprovada! Veja aqui o resultado", nomeDoItem, participacao.UsuarioTrilha.TrilhaNivel.Trilha.Nome);
            }
            else
            {
                notificacao.TextoNotificacao = string.Format("Sua participação no sprint {0} da trilha {1} precisa ser ajustada. Por favor, edite sua participação. clique aqu", nomeDoItem, participacao.UsuarioTrilha.TrilhaNivel.Trilha.Nome);
            }
            try
            {
                new BMNotificacao().Salvar(notificacao);
            }
            catch
            {
                throw new EmailException("Erro ao gerar notificação");
            }
        }
        public void CancelarMatriculaCapacitacao(int idMatriculaCapacitacao, AuthenticationRequest autenticacao)
        {
            MatriculaCapacitacao matriculaCapacitacao = new BMMatriculaCapacitacao().ObterPorId(idMatriculaCapacitacao);

            if (matriculaCapacitacao != null &&
                matriculaCapacitacao.StatusMatricula == enumStatusMatricula.Inscrito)
            {
                TimeSpan diasMatriculados = Convert.ToDateTime(DateTime.Now) - Convert.ToDateTime(matriculaCapacitacao.DataInicio);
                if (diasMatriculados.Days > int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro))
                {
                    //Passou do Limite para cancelamento
                    throw new AcademicoException("O prazo de cancelamento expirou");
                }

                if (matriculaCapacitacao.ListaMatriculaTurmaCapacitacao != null && matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.Count > 0)
                {
                    // Embora esteja em uma lista ele sempre terá somente uma matrícula turma para cada matrícula capacitação por regra de negócio
                    new BMMatriculaTurmaCapacitacao().ExcluirLista(matriculaCapacitacao.ListaMatriculaTurmaCapacitacao);
                    matriculaCapacitacao.ListaMatriculaTurmaCapacitacao.Clear();
                }

                matriculaCapacitacao.DataFim         = DateTime.Now;
                matriculaCapacitacao.StatusMatricula = enumStatusMatricula.CanceladoAluno;
                matriculaCapacitacao.Auditoria       = new Auditoria(autenticacao.Login);
            }
            else
            {
                throw new AcademicoException("Não foi encontrada nenhuma matrícula com cancelamento permitido");
            }

            new BMMatriculaCapacitacao().Salvar(matriculaCapacitacao);
        }
Пример #6
0
        private void BaixarArquivo()
        {
            int idItemTrilha = 0;

            if (ViewState["idItemTrilha"] != null)
            {
                //Obtém o Id do Item Trilha do viewstate
                idItemTrilha = (int)ViewState["idItemTrilha"];
            }

            if (idItemTrilha > 0)
            {
                ItemTrilha itemTrilha = new ManterItemTrilha().ObterItemTrilhaPorID(idItemTrilha);

                if (itemTrilha != null)
                {
                    string caminhoFisicoDoDiretorioDeUpload =
                        ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;
                    string caminhoLogicoDoArquivo = string.Concat(caminhoFisicoDoDiretorioDeUpload,
                                                                  "\\" + itemTrilha.FileServer.NomeDoArquivoNoServidor);

                    if (!File.Exists(caminhoLogicoDoArquivo))
                    {
                        throw new FileNotFoundException("Arquivo não encontrado no servidor!");
                    }

                    Response.ContentType = itemTrilha.FileServer.TipoArquivo;
                    Response.AddHeader("content-disposition",
                                       String.Format("attachment; filename={0}", itemTrilha.FileServer.NomeDoArquivoOriginal));
                    HttpContext.Current.Response.WriteFile(caminhoLogicoDoArquivo);
                    Response.End();
                }
            }
        }
Пример #7
0
        private void BaixarArquivo()
        {
            //Obtém o Id do Item Trilha participação do viewstate
            int iditemTrilhaTopicoTematico = ViewState["iditemTrilhaTopicoTematico"] == null ? 0 : (int)ViewState["iditemTrilhaTopicoTematico"];


            if (iditemTrilhaTopicoTematico > 0)
            {
                TrilhaTopicoTematico itemTrilhaTopicoTematico = manterTrilhaTopicoTematico.ObterTrilhaTopicoTematicoPorID(iditemTrilhaTopicoTematico);

                if (itemTrilhaTopicoTematico != null)
                {
                    string caminhoFisicoDoDiretorioDeUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;
                    string caminhoLogicoDoArquivo           = string.Concat(caminhoFisicoDoDiretorioDeUpload, @"\", itemTrilhaTopicoTematico.FileServer.NomeDoArquivoNoServidor);

                    if (!File.Exists(caminhoLogicoDoArquivo))
                    {
                        throw new FileNotFoundException("Arquivo não encontrado no servidor!");
                    }


                    Response.ContentType = itemTrilhaTopicoTematico.FileServer.TipoArquivo;
                    Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", itemTrilhaTopicoTematico.FileServer.NomeDoArquivoOriginal));
                    HttpContext.Current.Response.TransmitFile(caminhoLogicoDoArquivo);
                    Response.End();
                }
            }
        }
Пример #8
0
        private FileServer ObterAnexo()
        {
            try
            {
                string caminhoDiretorioUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;
                string nomeAleatorioDoArquivoParaUploadCriptografado = WebFormHelper.ObterStringAleatoria();
                string diretorioDeUploadComArquivo = string.Concat(caminhoDiretorioUpload, @"\", nomeAleatorioDoArquivoParaUploadCriptografado);
                try
                {
                    //Salva o arquivo no caminho especificado
                    fupldArquivoEnvio.PostedFile.SaveAs(diretorioDeUploadComArquivo);
                }
                catch
                {
                    //Todo: -> Logar o Erro
                    throw new AcademicoException("Ocorreu um erro ao Salvar o arquivo");
                }

                FileServer retornoAnexo = new FileServer();
                retornoAnexo = new FileServer();
                retornoAnexo.NomeDoArquivoNoServidor = nomeAleatorioDoArquivoParaUploadCriptografado;
                retornoAnexo.NomeDoArquivoOriginal   = fupldArquivoEnvio.FileName;
                retornoAnexo.TipoArquivo             = fupldArquivoEnvio.PostedFile.ContentType;
                retornoAnexo.MediaServer             = false;
                return(retornoAnexo);
            }
            catch
            {
                //Todo: -> Logar erro
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Erro ao salvar o anexo");
                return(null);
            }
        }
        private void BaixarArquivo()
        {
            int idtrilhaAtividadeInformativaParticipacao = 0;

            if (ViewState["idtrilhaAtividadeInformativaParticipacao"] != null)
            {
                //Obtém o Id da atividade formativa participação do viewstate
                idtrilhaAtividadeInformativaParticipacao = (int)ViewState["idtrilhaAtividadeInformativaParticipacao"];
            }

            if (idtrilhaAtividadeInformativaParticipacao > 0)
            {
                classes.TrilhaAtividadeFormativaParticipacao trilhaAtividadeFormativaParticipacao = new ManterTrilhaAtividadeFormativaParticipacao().ObterTrilhaAtividadeFormativaParticipacaoPorID(idtrilhaAtividadeInformativaParticipacao);

                if (trilhaAtividadeFormativaParticipacao != null && trilhaAtividadeFormativaParticipacao.FileServer != null)
                {
                    string caminhoFisicoDoDiretorioDeUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;
                    //string caminhoLogicoDoDiretorioDeUpload = WebFormHelper.ObterCaminhoVirtualDoDiretorioDeUpload(caminhoFisicoDoDiretorioDeUpload);
                    string caminhoLogicoDoArquivo = string.Concat(caminhoFisicoDoDiretorioDeUpload, "\\" + trilhaAtividadeFormativaParticipacao.FileServer.NomeDoArquivoNoServidor);

                    if (!File.Exists(caminhoLogicoDoArquivo))
                    {
                        throw new FileNotFoundException("Arquivo não encontrado no servidor!");
                    }

                    Response.ContentType = trilhaAtividadeFormativaParticipacao.FileServer.TipoArquivo;
                    Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", trilhaAtividadeFormativaParticipacao.FileServer.NomeDoArquivoOriginal));
                    HttpContext.Current.Response.TransmitFile(caminhoLogicoDoArquivo);
                    Response.End();
                }
            }
        }
Пример #10
0
        public void SolicitarNovaProvaTrilha(int pUsuarioTrilha, AuthenticationRequest autenticacao)
        {
            var ut = BmUsuarioTrilha.ObterPorId(pUsuarioTrilha);

            if (ut == null)
            {
                throw new AcademicoException("Usuário não encontrado");
            }

            if (ut.DataLiberacaoNovaProva.HasValue)
            {
                throw new AcademicoException(string.Format("Você poderá fazer nova prova a partir do dia {0}", ut.DataLiberacaoNovaProva.Value.ToString("dd/MM/yyyy")));
            }
            int diasProrrogacao;

            if (!int.TryParse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro.ToString(), out diasProrrogacao))
            {
                diasProrrogacao = 10;
            }

            ut.DataLiberacaoNovaProva = DateTime.Today.AddDays(diasProrrogacao);
            ut.NovaProvaLiberada      = true;
            ut.Auditoria       = new Auditoria(autenticacao.Login);
            ut.StatusMatricula = enumStatusMatricula.Inscrito;

            BmUsuarioTrilha.Salvar(ut);
        }
Пример #11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var enderecoDashboardRedmine = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DashboardRedmine).Registro;

            //HtmlIframe FrameDashboard = (HtmlIframe)Page.FindControl("FrameDashboard");
            FrameDashboard.Attributes.Add("src", enderecoDashboardRedmine);
        }
Пример #12
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");
            }
        }
        private static bool UsuarioPossuiLimiteInscricoesSimultaneas(int usuarioId,
                                                                     ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            var listaMatriculaOferta =
                new ManterMatriculaOferta().ObterPorUsuario(usuarioId).Select(x => new MatriculaOferta
            {
                ID = x.ID,
                StatusMatricula = x.StatusMatricula
            });

            var cursosInscrito = listaMatriculaOferta.Count(x => x.StatusMatricula == enumStatusMatricula.Inscrito);

            int limteCursosSimultaneos;

            if (
                int.TryParse(
                    ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos).Registro,
                    out limteCursosSimultaneos))
            {
                if (cursosInscrito < limteCursosSimultaneos)
                {
                    return(false);
                }

                retorno.TextoDisponibilidade = string.Format("Você só pode realizar {0} em simultâneo.",
                                                             limteCursosSimultaneos);
                retorno.CodigoDisponibilidade = (int)enumDisponibilidadeSolucaoEducacional.NaoPossuiDisponibilidade;

                return(true);
            }

            return(false);
        }
Пример #14
0
        private FileServer salvaArquivoBase64Sprint(string imagem, string nomeOriginalArquivo, string tipoArquivo, string login)
        {
            FileServer fileServer = new FileServer();

            MemoryStream memoryStream = CommonHelper.ObterMemoryStream(imagem, false);

            fileServer = CommonHelper.ObterObjetoFileServer(memoryStream);

            //Define o tipo de arquivo (/Quebra a string para obter o tipo do arquivo. Ex: bmp, jpeg, etc...)
            fileServer.TipoArquivo           = tipoArquivo;
            fileServer.MediaServer           = false;
            fileServer.NomeDoArquivoOriginal = nomeOriginalArquivo;
            fileServer.Auditoria             = new Auditoria(login);

            //Salva a imagem no disco
            ConfiguracaoSistema caminhoParaDiretorioDeUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload);

            try
            {
                string caminhoCompletoComNomeDoArquivo = string.Concat(caminhoParaDiretorioDeUpload.Registro, "\\", fileServer.NomeDoArquivoNoServidor);

                //Salva a imagem no disco
                using (FileStream file = new FileStream(caminhoCompletoComNomeDoArquivo, FileMode.Create, FileAccess.Write))
                {
                    memoryStream.WriteTo(file);
                    file.Close();
                };
            }
            catch (IOException ex)
            {
                throw ex;
            }

            return(fileServer);
        }
Пример #15
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);
        }
Пример #16
0
        private static void EnviarArquivoParaRepositorio(MemoryStream memoryStream, string nomeArquivoNoServidor)
        {
            var caminhoDiretorioUpload =
                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;

            var diretorioDeUploadComArquivo = string.Concat(caminhoDiretorioUpload, @"\",
                                                            nomeArquivoNoServidor);

            File.WriteAllBytes(diretorioDeUploadComArquivo, memoryStream.ToArray());
        }
Пример #17
0
        //Trilha Game
        public dynamic CadastrarSolucaoTrilheiro(UsuarioTrilha usuarioTrilha, DTOSolucaoTrilheiro dtoSolucaoTrilheiro, UsuarioTrilha matricula)
        {
            FileServer fileServer = null;

            if (!string.IsNullOrEmpty(dtoSolucaoTrilheiro.Arquivo))
            {
                //Fazer upload do arquivo
                var memoryStream = CommonHelper.ObterMemoryStream(dtoSolucaoTrilheiro.Arquivo);

                fileServer = CommonHelper.ObterObjetoFileServer(memoryStream);

                var caminhoDiretorioUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;

                // Escrever o arquivo na pasta.
                CommonHelper.EnviarArquivoParaRepositorio(caminhoDiretorioUpload, memoryStream, fileServer.NomeDoArquivoNoServidor);

                fileServer.TipoArquivo           = CommonHelper.ObterTipoDoArquivo(dtoSolucaoTrilheiro.Arquivo);
                fileServer.MediaServer           = true;
                fileServer.NomeDoArquivoOriginal = dtoSolucaoTrilheiro.NomeDoArquivoOriginal;
                fileServer.Auditoria             = new Auditoria(matricula.Usuario.CPF);
                new BMFileServer().Salvar(fileServer);
            }

            //item Trilha
            var item = new ItemTrilha
            {
                ID                           = 0,
                DataCriacao                  = DateTime.Now,
                Nome                         = dtoSolucaoTrilheiro.Nome,
                Local                        = dtoSolucaoTrilheiro.Orientacao,
                LinkConteudo                 = dtoSolucaoTrilheiro.LinkConteudo,
                ReferenciaBibliografica      = dtoSolucaoTrilheiro.ReferenciaBibliografica,
                QuantidadePontosParticipacao = 1,
                SolucaoEducacional           = null,
                Missao                       = new ManterMissao().ObterPorID(dtoSolucaoTrilheiro.MissaoId),
                Usuario                      = usuarioTrilha.Usuario,
                FormaAquisicao               = new ManterFormaAquisicao().ObterFormaAquisicaoPorID(dtoSolucaoTrilheiro.IdTipo),
                Ativo                        = true,
                Aprovado                     = enumStatusSolucaoEducacionalSugerida.Aprovado,
                FileServer                   = fileServer,
                CargaHoraria                 = dtoSolucaoTrilheiro.GetCargaHoriaEmMinutos()
            };

            bmItemTrilha.Salvar(item);

            // Retorna os dados para re-inserção na tela.
            return(new DtoTrilhaSolucaoSebrae
            {
                Id = item.ID,
                Nome = item.Nome,
                FormaAquisicaoId = item.FormaAquisicao.ID,
                FormaAquisicao = item.FormaAquisicao.Nome,
                Orientacao = !string.IsNullOrWhiteSpace(item.Local) ? item.Local : "Sem Orientação"
            });
        }
Пример #18
0
        public void ProcessRequest(HttpContext context)
        {
            string Identificador;

            if (context.Request.QueryString["Identificador"] == null)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Acesso negado!");
                return;
            }

            Identificador = context.Request.QueryString["Identificador"].ToString();
            if (!string.IsNullOrEmpty(Identificador))
            {
                Type tipoArquivo;
                context.Response.Clear();
                //FileServer fs = new FileServer();
                //fs.NomeDoArquivoNoServidor = Identificador;
                //fs.MediaServer = false;
                //contentMediaServer = manterFileServer.ObterFileServerPorFiltro(fs).FirstOrDefault();

                try
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (FileStream file = new FileStream(string.Concat(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro, @"\",
                                                                              Identificador), FileMode.Open, FileAccess.Read))
                        {
                            byte[] bytes = new byte[file.Length];
                            file.Read(bytes, 0, (int)file.Length);
                            ms.Write(bytes, 0, (int)file.Length);
                            tipoArquivo = file.GetType();
                        }

                        // Removendo caracteres especiais que travam no chrome.
                        //contentMediaServer.NomeDoArquivoOriginal =
                        //    RemoverCaracterEspecial(contentMediaServer.NomeDoArquivoOriginal);

                        //context.Response.AddHeader("Content-Disposition", "attachment; filename=" + contentMediaServer.NomeDoArquivoOriginal);
                        context.Response.ContentType     = tipoArquivo.Name;
                        context.Response.ContentEncoding = Encoding.UTF8;
                        context.Response.BinaryWrite(ms.ToArray());
                        context.Response.Flush();
                    }
                }
                catch (Exception ex)
                {
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Erro filetype 1 - " + ex.ToString());
                    return;
                }
            }
        }
Пример #19
0
        private void ValidarArquivoDeEnvio(string nomeArquivo = "")
        {
            //Arquivo de Envio
            if (fupldArquivoEnvio != null && fupldArquivoEnvio.PostedFile != null &&
                fupldArquivoEnvio.PostedFile.ContentLength > 0)
            {
                try
                {
                    string nomeArquivoFinal = fupldArquivoEnvio.FileName;

                    if (!string.IsNullOrEmpty(nomeArquivo))
                    {
                        nomeArquivoFinal = nomeArquivo + "." + fupldArquivoEnvio.FileName.Split('.').Last();
                    }

                    var caminhoDiretorioUpload =
                        ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro;
                    var nomeAleatorioDoArquivoParaUploadCriptografado = WebFormHelper.ObterStringAleatoria();
                    var diretorioDeUploadComArquivo = string.Concat(caminhoDiretorioUpload, @"\",
                                                                    nomeAleatorioDoArquivoParaUploadCriptografado);

                    try
                    {
                        //Salva o arquivo no caminho especificado
                        fupldArquivoEnvio.PostedFile.SaveAs(diretorioDeUploadComArquivo);
                    }
                    catch
                    {
                        //Todo: -> Logar o Erro
                        throw new AcademicoException("Ocorreu um erro ao Salvar o arquivo");
                    }

                    _itemTrilhaEdicao.FileServer = new FileServer
                    {
                        NomeDoArquivoNoServidor = nomeAleatorioDoArquivoParaUploadCriptografado,
                        NomeDoArquivoOriginal   = nomeArquivoFinal,
                        TipoArquivo             = fupldArquivoEnvio.PostedFile.ContentType,
                        MediaServer             = false
                    };
                }
                catch (AcademicoException ex)
                {
                    throw ex;
                }
                catch
                {
                    //Todo: -> Logar erro
                    throw new AcademicoException("Ocorreu um Erro ao Salvar o arquivo");
                }
            }
        }
Пример #20
0
        public void ValidarSeUsuarioJaEstaMatriculado(IList <MatriculaOferta> listaMatriculaOferta)
        {
            IList <MatriculaOferta> ListaMatriculaOferta = listaMatriculaOferta;
            int cursosEmAndamento =
                ListaMatriculaOferta.Where(x => x.StatusMatricula.Equals(enumStatusMatricula.Inscrito)).Count();
            int limteCursosSimultaneos =
                int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos).Registro);

            if (cursosEmAndamento >= limteCursosSimultaneos)
            {
                throw new AcademicoException(string.Format("Você já está matriculado em {0} ou mais soluções",
                                                           limteCursosSimultaneos.ToString()));
            }
        }
        public void CadastrarHistorico(ItemTrilhaParticipacao itemParticipacao, bool enviarEmail)
        {
            try
            {
                new BMItemTrilhaParticipacao().Salvar(itemParticipacao);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (enviarEmail)
            {
                try
                {
                    var template   = TemplateUtil.ObterInformacoes(enumTemplate.MensagemMonitorTrilha);
                    var mensagem   = template.TextoTemplate;
                    var nomeTrilha = itemParticipacao.UsuarioTrilha.TrilhaNivel.Trilha.Nome;
                    var anexo      = string.Empty;
                    if (itemParticipacao.FileServer != null)
                    {
                        anexo =
                            ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoSGUS).Registro +
                            "/ExibirFileServer.ashx?Identificador=" +
                            itemParticipacao.FileServer.NomeDoArquivoNoServidor;
                    }
                    mensagem = mensagem.Replace("#NOMETRILHA", nomeTrilha)
                               .Replace("#TRILHANIVEL", itemParticipacao.UsuarioTrilha.TrilhaNivel.Nome)
                               .Replace("#TEXTOMONITOR", itemParticipacao.TextoParticipacao)
                               .Replace("#TOPICOTEMATICO", itemParticipacao.ItemTrilha.Missao.PontoSebrae.Nome)
                               .Replace("#ITEMAVALIADO", itemParticipacao.ItemTrilha.Nome)

                               .Replace("#NOMEMONITOR", itemParticipacao.Monitor.Nome)
                               .Replace("#EMAILMONITOR", itemParticipacao.Monitor.Email)
                               .Replace("#NOME", itemParticipacao.UsuarioTrilha.Usuario.Nome)
                               .Replace("#ANEXO", anexo);

                    var destinatario = itemParticipacao.UsuarioTrilha.Usuario.Email;
                    var assunto      = "Analisamos sua participação na trilha " + nomeTrilha;

                    EmailUtil.Instancia.EnviarEmail(destinatario, assunto, mensagem);
                }
                catch
                {
                    throw new EmailException("Erro ao enviar o email");
                }
            }
        }
Пример #22
0
        public void ProcessRequest(HttpContext context)
        {
            int            Identificador  = 0;
            RequestContext requestContext = context.Request.RequestContext;

            // Utilizado para obter id de requests por querystring e por sistema de rotas
            if (!int.TryParse(requestContext.RouteData.Values["Id"] as string, out Identificador))
            {
                if (context.Request.QueryString["Identificador"] == null || !int.TryParse(context.Request.QueryString["Identificador"].ToString(), out Identificador))
                {
                    context.Response.ContentType = "text/plain";
                    context.Response.Write("Acesso negado!");
                    return;
                }
            }

            if (Identificador > 0)
            {
                context.Response.Clear();
                contentMediaServer = manterFileServer.ObterFileServerPorID(Identificador);

                if (contentMediaServer != null)
                {
                    try
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            using (FileStream file = new FileStream(string.Concat(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.RepositorioUpload).Registro, @"\", contentMediaServer.NomeDoArquivoNoServidor), FileMode.Open, FileAccess.Read))
                            {
                                byte[] bytes = new byte[file.Length];
                                file.Read(bytes, 0, (int)file.Length);
                                ms.Write(bytes, 0, (int)file.Length);
                            }
                            context.Response.AddHeader("Content-Disposition", "attachment; filename=" + contentMediaServer.NomeDoArquivoOriginal);
                            context.Response.ContentType = contentMediaServer.TipoArquivo;
                            context.Response.BinaryWrite(ms.ToArray());
                            context.Response.Flush();
                        }
                    }
                    catch (Exception ex)
                    {
                        context.Response.ContentType = "text/plain";
                        context.Response.Write("Erro filetype 1 - " + ex.ToString());
                        return;
                    }
                }
            }
        }
        public void GerarNotificacaoItemTrilha(ItemTrilhaParticipacao itemParticipacao)
        {
            var enderecoPortal =
                ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro;

            var notificacao = new Notificacao
            {
                Usuario         = itemParticipacao.UsuarioTrilha.Usuario,
                UsuarioTrilha   = itemParticipacao.UsuarioTrilha,
                DataGeracao     = DateTime.Now,
                DataNotificacao = DateTime.Now,
                TipoNotificacao = enumTipoNotificacao.Academico,
                Visualizado     = false,
                Link            = enderecoPortal +
                                  string.Format("trilha/mapa/{0}", itemParticipacao.UsuarioTrilha.TrilhaNivel.ID)
            };

            var nomeDoItem = itemParticipacao.ItemTrilha.Nome;

            var nomeTrilha =
                new ManterItemTrilha().ObterItemTrilhaPorID(itemParticipacao.ItemTrilha.ID)
                .Missao.PontoSebrae.TrilhaNivel.Trilha.Nome;

            if (itemParticipacao.Autorizado.HasValue && itemParticipacao.Autorizado.Value)
            {
                notificacao.TextoNotificacao =
                    string.Format(
                        "Parabéns, sua participação na Solução Sebrae {0} da trilha {1} foi aprovada!",
                        nomeDoItem, nomeTrilha);
            }
            else
            {
                notificacao.TextoNotificacao =
                    string.Format(
                        "Sua participação na Solução Sebrae \"{0}\" na trilha {1} precisa ser ajustada. Por favor, edite sua participação. clique aqui",
                        nomeDoItem, nomeTrilha);
            }
            try
            {
                new BMNotificacao().Salvar(notificacao);
            }
            catch
            {
                throw new EmailException("Erro ao gerar notificação");
            }
        }
Пример #24
0
        public IEnumerable <DTOEvento> ObterEventos()
        {
            try
            {
                var url  = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UrlCredenciamento).Registro;
                var json = JsonUtil.ObterJson(url + "evento/listartodos");

                if (!string.IsNullOrEmpty(json))
                {
                    return(JsonConvert.DeserializeObject <List <DTOEvento> >(json).ToArray());
                }

                return(new List <DTOEvento>());
            }
            catch (System.Exception)
            {
                throw new AcademicoException("Não foi possível recuperar os eventos do sistema de credenciamento");
            }
        }
Пример #25
0
        public IEnumerable <DTOEvento> ObterPresencasEventoFinalizado(DateTime data)
        {
            try
            {
                var url  = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UrlCredenciamento).Registro;
                var json = JsonUtil.ObterJson(url + "evento/listarParticipacoesEmFinalizados/" + DateTime.Now.ToString("yyyy-MM-dd"));

                if (!string.IsNullOrEmpty(json))
                {
                    return(JsonConvert.DeserializeObject <List <DTOEvento> >(json).ToArray());
                }

                return(null);
            }
            catch (System.Exception)
            {
                throw new AcademicoException("Não foi possível recuperar os eventos do sistema de credenciamento");
            }
        }
Пример #26
0
        public List <DTOProtocolo> AcompanharProtocolo(int numeroProtocolo)
        {
            var listaProtocolos = bmProtocolo.ObterTodosPorNumero(numeroProtocolo).ToList();
            List <DTOProtocolo> dtoProtocolos = new List <DTOProtocolo>();

            foreach (var protocolo in listaProtocolos)
            {
                var dtoProtocolo = new DTOProtocolo
                {
                    ID              = protocolo.ID,
                    Numero          = protocolo.Numero,
                    DataEnvio       = protocolo.DataEnvio.ToString("dd/MM/yyyy HH:mm:ss"),
                    DataRecebimento = protocolo.DataRecebimento != null?protocolo.DataRecebimento.Value.ToString("dd/MM/yyyy HH:mm:ss") : "",
                                          Descricao              = protocolo.Descricao,
                                          NomeRemetente          = protocolo.Remetente != null ? protocolo.Remetente.Nome : "",
                                          NomeDestinatario       = protocolo.Destinatario != null ? protocolo.Destinatario.Nome : "",
                                          AssinaturaRecebimento  = protocolo.UsuarioAssinatura != null ? protocolo.UsuarioAssinatura.Nome : "",
                                          ID_UsuarioDestinatario = protocolo.Destinatario != null ? protocolo.Destinatario.ID : 0,
                                          ID_UsuarioRemetente    = protocolo.Remetente != null ? protocolo.Remetente.ID : 0,
                                          Anexos = protocolo.Anexos.ToList().Select(a => new DTOFileServer
                    {
                        IdFileServer          = a.FileServer.ID,
                        FileServerLink        = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoSGUS, null).Registro + string.Format(@"/ExibirFileServer.ashx?Identificador={1}", HttpContext.Current.Request.Url, a.FileServer.NomeDoArquivoNoServidor),
                        NomeDoArquivoOriginal = a.FileServer.NomeDoArquivoOriginal,
                        Usuario   = a.Usuario.Nome,
                        DataEnvio = a.FileServer.DataAlteracao?.ToString("dd/MM/yyyy")
                    }).ToList(),
                                          Despacho = protocolo.Despacho,
                                          DespachoReencaminhamento = protocolo.DespachoReencaminhamento,
                                          ProtocoloPai             = protocolo.ProtocoloPai?.ID,
                                          Arquivado = protocolo.Arquivado
                };

                dtoProtocolos.Add(dtoProtocolo);
            }

            return(dtoProtocolos.OrderByDescending(x => x.Numero).ToList());
        }
Пример #27
0
        /// <summary>
        /// Método usado para notificar o destinatário caso aconteça o envio de um protocolo.
        /// </summary>
        /// <param name="remetente"></param>
        /// <param name="destinatario"></param>
        public void NotificarDestinatario(Usuario remetente, Usuario destinatario, Protocolo protocolo)
        {
            if (destinatario != null)
            {
                if (string.IsNullOrEmpty(destinatario.Email))
                {
                    throw new AcademicoException("Email não cadastrado");
                }

                Template email           = TemplateUtil.ObterInformacoes(enumTemplate.NotificacaoEnvioProtocolo);
                var      documentos      = protocolo.Anexos.Select(x => x.FileServer.NomeDoArquivoOriginal);
                var      nomesDocumentos = string.Join(", ", documentos);

                var endereco = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal30, null).Registro;

                email.TextoTemplate = email.TextoTemplate
                                      .Replace("#NUMEROPROTOCOLO", protocolo.Numero.ToString())
                                      .Replace("#DOCUMENTO ", nomesDocumentos)
                                      .Replace("#DESCRIMINACAO", protocolo.Descricao)
                                      .Replace("#LINKACESSO", endereco + "protocolos/detalhes/" + protocolo.Numero.ToString());

                EmailUtil.Instancia.EnviarEmail(destinatario.Email, email.Assunto, email.TextoTemplate);
            }
        }
Пример #28
0
        private void NotificarUsuariosQueDesejamReceberNotificacaoOferta(Oferta oferta)
        {
            if (oferta.TipoOferta.Equals(enumTipoOferta.Exclusiva))
            {
                return;
            }
            IList <Usuario> ListaUsuariosQueDesejamReceberNotificacaoOferta = new BMUsuario().ObterUsuariosQueDesejamReceberNotificacaoOferta();

            if (ListaUsuariosQueDesejamReceberNotificacaoOferta != null && ListaUsuariosQueDesejamReceberNotificacaoOferta.Count > 0)
            {
                BMNotificacao notificacaoBM = new BMNotificacao();

                Notificacao notificacao = null;

                foreach (Usuario u in ListaUsuariosQueDesejamReceberNotificacaoOferta)
                {
                    notificacao = new Notificacao()
                    {
                        DataGeracao      = DateTime.Now,
                        DataNotificacao  = DateTime.Now,
                        Usuario          = new BMUsuario().ObterPorId(u.ID),
                        TextoNotificacao = "Há vaga para o curso de seu interesse",
                    };

                    if (oferta.SolucaoEducacional.IdNode > 0)
                    {
                        notificacao.Link = string.Concat(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro,
                                                         string.Format("/Inscricoes/Inscricao/{0}", oferta.SolucaoEducacional.IdNode));
                    }
                    else
                    {
                        notificacao.Link = string.Concat(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoPortal).Registro, "/Inscricoes/");
                    }
                }
            }
        }
Пример #29
0
        public void AtualizaNodeDrupal(CategoriaConteudo registro, string url)
        {
            try
            {
                if (!(registro.IdNode > 0))
                {
                    return;
                }

                string sbTodasTaxonomias = this.PrepararEntradaDeDadosParaOServicoDrupal(registro);

                int idNodePai = 0;

                if (registro.CategoriaConteudoPai != null && registro.CategoriaConteudoPai.ID > 0 && !registro.CategoriaConteudoPai.IdNode.HasValue)
                {
                    throw new AlertException("Dados salvaos no banco de dados. Não foi possível enviar os dados para o Portal. Favor publicar a categoria pai primeiro");
                }

                if (registro.CategoriaConteudoPai != null && registro.CategoriaConteudoPai.IdNode.HasValue)
                {
                    idNodePai = registro.CategoriaConteudoPai.IdNode.Value;
                }

                bool ativo = true;

                string linkParaImagem = string.Empty;

                //if (registro.Imagem != null && registro..ID > 0)
                //{
                //    ConfiguracaoSistema caminhoParaDiretorioDeUpload = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoSGUS);
                //    linkParaImagem = CommonHelper.ObterLinkParaArquivoDeImagem(caminhoParaDiretorioDeUpload.Registro, registro.Imagem.ID);
                //}
                var postParameters = new Dictionary <string, string> {
                    { "login", ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UsuarioSOAPPortal).Registro },
                    { "senha", ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.SenhaSOAPPortal).Registro },
                    { "id_solucao_educacional", string.Empty },
                    { "titulo", registro.Nome },
                    { "corpo", registro.Apresentacao },
                    { "lista_taxs", sbTodasTaxonomias },
                    { "status", ativo.ToString() },
                    { "node_id", registro.IdNode.ToString() },
                    { "parent_id", idNodePai.ToString() },
                    { "imagem", linkParaImagem }
                };
                var result = JsonUtil.GetJson <DTOJsonResultNodeId>(url, "POST", postParameters);

                /*cursos_soap_updateRequest c = new cursos_soap_updateRequest(
                 *      ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.UsuarioSOAPPortal).Registro ,
                 *      ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.SenhaSOAPPortal).Registro,
                 *      string.Empty,
                 *      registro.Nome,
                 *      registro.Apresentacao,
                 *      sbTodasTaxonomias,
                 *      ativo.ToString(),
                 *      registro.IdNode.ToString(),
                 *      idNodePai.ToString(),
                 *      linkParaImagem,
                 *      registro.CargaHoraria);
                 *
                 * soap_server_port_type s = new soap_server_port_typeClient();
                 * cursos_soap_updateResponse cursosSoapCreateResponse = s.cursos_soap_update(c);*/

                int nodeRetorno = int.Parse(result.status);

                if (nodeRetorno != registro.IdNode)
                {
                    CategoriaConteudo categoriaConteudo = new BMCategoriaConteudo().ObterPorID(registro.ID);
                    categoriaConteudo.IdNode = int.Parse(result.status);
                    new BMCategoriaConteudo().Alterar(categoriaConteudo);
                }
            }
            catch (AlertException ex)
            {
                throw ex;
            }
            catch (Exception)
            {
                throw new AlertException("Dados salvos no banco de dados. Erro ao sincronizar com o Portal");
            }
        }
Пример #30
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!");
        }