示例#1
0
        public void EnviarEmailBoasVindas(UsuarioTrilha usuarioTrilha)
        {
            var templateNovaInscricaoTrilha = TemplateUtil.ObterInformacoes(enumTemplate.BoasVindasInscricaoTriha);

            var assuntoDoEmail = string.IsNullOrEmpty(templateNovaInscricaoTrilha.Assunto) ? "Universidade Corporativa Sebrae - Nova inscrição em trilha" : templateNovaInscricaoTrilha.Assunto;
            var corpoEmail     = ObterCorpoEmail(usuarioTrilha, templateNovaInscricaoTrilha.TextoTemplate);

            EmailUtil.Instancia.EnviarEmail(usuarioTrilha.Usuario.Email, assuntoDoEmail, corpoEmail);
        }
        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");
                }
            }
        }
示例#3
0
        /// <summary>
        /// Método usado para notificar o remetente do recebimento e assinatura de um protocolo.
        /// </summary>
        /// <param name="remetente"></param>
        /// <param name="destinatario"></param>
        public void NotificarRemetente(Usuario remetente, Usuario destinatario, long numero)
        {
            if (remetente != null)
            {
                if (string.IsNullOrEmpty(destinatario.Email))
                {
                    throw new AcademicoException("Email não cadastrado");
                }

                Template email = TemplateUtil.ObterInformacoes(enumTemplate.NotificacaoEnvioProtocolo);

                var htmlNewLine = "</p>" + Environment.NewLine;
                int quebra      = 0;

                if (email != null && !string.IsNullOrEmpty(email.TextoTemplate))
                {
                    quebra = email.TextoTemplate.IndexOf(htmlNewLine, StringComparison.Ordinal) + htmlNewLine.Length;
                }

                string assuntoDoEmail = "Assinatura de protocolo realizada";
                string corpoDoEmail   = string.Format("O protocolo número {0} foi assinado pelo usuário {1}", numero, destinatario.Nome);

                if (quebra > 0)
                {
                    if (email != null && !string.IsNullOrEmpty(email.TextoTemplate))
                    {
                        assuntoDoEmail = email.Assunto;
                        corpoDoEmail   = email.TextoTemplate;
                    }
                }

                corpoDoEmail = corpoDoEmail.Replace("#REMETENTE", remetente.Nome)
                               .Replace("#DESTINATARIO", destinatario.CPF)
                               .Replace("#NUMEROPROTOCOLO", destinatario.CPF)
                               .Replace("#DATAHORA", DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm:ss"));

                //Envia e-mail para o usuário
                EmailUtil.Instancia.EnviarEmail(destinatario.Email,
                                                assuntoDoEmail,
                                                corpoDoEmail);
            }
        }
示例#4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var mo = new Sebrae.Academico.BP.ManterOferta();
            var matriculaOferta = new MatriculaOferta();
            //matriculaOferta.NomeSolucaoEducacional = txtNomeSolucaoEducacional.Text;

            string emailDoDestinatario = string.Empty;

            Template templateMensagemEmailOfertaExclusiva = TemplateUtil.ObterInformacoes(enumTemplate.MatriculaOfertaExclusivo);
            string   assuntoDoEmail = templateMensagemEmailOfertaExclusiva.Assunto;

            string corpoEmail = templateMensagemEmailOfertaExclusiva.TextoTemplate;

            emailDoDestinatario = "matriculaOferta.Usuario.Email";

            assuntoDoEmail = assuntoDoEmail.Replace("#NOME_CURSO", "matriculaOferta.NomeSolucaoEducacional");
            corpoEmail     = mo.CorpoEmail(corpoEmail, matriculaOferta);

            EmailUtil.Instancia.EnviarEmail(emailDoDestinatario.Trim(), assuntoDoEmail, corpoEmail);
        }
示例#5
0
        private void NotificarConfirmacao(Turma turma)
        {
            var envolvidos = ObterEnvolvidos(turma);

            var template = TemplateUtil.ObterInformacoes(enumTemplate.ConfirmacaoTurma);

            var assuntoDoEmail = template.Assunto;

            var corpoEmail = template.TextoTemplate;

            if (string.IsNullOrWhiteSpace(corpoEmail))
            {
                throw new AcademicoException("Não há uma template para e-mail de confirmação de turma cadastrada no sistema.");
            }

            foreach (var envolvido in envolvidos)
            {
                EmailUtil.Instancia.EnviarEmail(envolvido.Email.Trim(), assuntoDoEmail, corpoEmail);
            }
        }
示例#6
0
        private void NotificarCancelamento(Turma turma)
        {
            var envolvidos = ObterEnvolvidos(turma);

            var template = TemplateUtil.ObterInformacoes(enumTemplate.CancelamentoTurma);

            var assuntoDoEmail = template.Assunto;

            var corpoEmail = template.TextoTemplate;

            if (string.IsNullOrWhiteSpace(corpoEmail))
            {
                throw new AcademicoException("Não há uma template para e-mail de cancelamento de turma cadastrada no sistema.");
            }

            corpoEmail = corpoEmail.Replace("#JUSTIFICATIVA", turma.ObterJustificativa());

            foreach (var envolvido in envolvidos)
            {
                EmailUtil.Instancia.EnviarEmail(envolvido.Email.Trim(), assuntoDoEmail, corpoEmail);
            }
        }
示例#7
0
        public void EnviarEmailParaAlunosDaOferta(IList <MatriculaOferta> matriculas, bool pendentes)
        {
            var templateMensagemEmailOfertaExclusiva = TemplateUtil.ObterInformacoes(enumTemplate.EnvioEmailParaInscritoOferta);

            if (pendentes)
            {
                templateMensagemEmailOfertaExclusiva = TemplateUtil.ObterInformacoes(enumTemplate.EnvioEmailParaPendenteDeConfirmacao);
            }

            foreach (var matriculaOferta in matriculas)
            {
                try
                {
                    var assuntoDoEmail = templateMensagemEmailOfertaExclusiva.Assunto;

                    var corpoEmail = templateMensagemEmailOfertaExclusiva.TextoTemplate;

                    var emailDoDestinatario = matriculaOferta.Usuario.Email;


                    if (matriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito || matriculaOferta.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)
                    {
                        assuntoDoEmail = assuntoDoEmail.Replace("#NOME_CURSO", matriculaOferta.NomeSolucaoEducacional);
                        corpoEmail     = CorpoEmail(corpoEmail, matriculaOferta);

                        EmailUtil.Instancia.EnviarEmail(emailDoDestinatario.Trim(),
                                                        assuntoDoEmail, corpoEmail);
                    }
                }
                catch
                {
                    //Se der erro no envio de E-mail, pega o próximo aluno e tenta enviar o e-mail novamente
                    continue;
                    throw;
                }
            }
        }
示例#8
0
        private static void EnviarEmailLimiteOferta(Oferta oferta, MatriculaOferta matriculaOferta)
        {
            try
            {
                Template template = TemplateUtil.ObterInformacoes(enumTemplate.NotificacaoLimiteOferta);

                string assuntoDoEmail = template.DescricaoTemplate.Substring(0, template.DescricaoTemplate.IndexOf(Environment.NewLine));

                string textoEmail = template.TextoTemplate;

                textoEmail = textoEmail
                             .Replace("#NOMESOLUCAOEDUCACIONAL#", matriculaOferta.Oferta.SolucaoEducacional.Nome)
                             .Replace("#NOMEOFERTA#", matriculaOferta.Oferta.Nome)
                             .Replace("#QTDINSCRITOSOFERTA#", oferta.ListaMatriculaOferta.Count.ToString());

                EmailUtil.Instancia.EnviarEmail(oferta.EmailResponsavel,
                                                assuntoDoEmail,
                                                textoEmail);
            }
            catch
            {
                //NADA A FAZER
            }
        }
示例#9
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);
            }
        }
示例#10
0
        public static void EnviarEmailLimiteOferta(Oferta oferta, MatriculaOferta matriculaOferta)
        {
            try
            {
                var template = TemplateUtil.ObterInformacoes(enumTemplate.NotificacaoLimiteOferta);

                var assuntoDoEmail = template.Assunto;

                var textoEmail = template.TextoTemplate;

                textoEmail = textoEmail
                             .Replace("#NOMESOLUCAOEDUCACIONAL#", matriculaOferta.Oferta.SolucaoEducacional.Nome)
                             .Replace("#NOMEOFERTA#", matriculaOferta.Oferta.Nome)
                             .Replace("#QTDINSCRITOSOFERTA#", oferta.ListaMatriculaOferta.Count.ToString());

                EmailUtil.Instancia.EnviarEmail(oferta.EmailResponsavel,
                                                assuntoDoEmail,
                                                textoEmail);
            }
            catch
            {
                //NADA A FAZER
            }
        }
示例#11
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!");
        }
示例#12
0
        public string MatriculaSolucaoEducacionalGestorUC(int idOferta, string cpf, int idStatusMatricula, int idTurma, string solicitante, string dataInscricao = "", string dataConclusao = "")
        {
            var manterUsuario = new ManterUsuario();
            var usuario       = manterUsuario.ObterPorCPF(cpf);
            var usuarioLogado = new BMUsuario().ObterPorCPF(solicitante);

            if (!(idStatusMatricula == 2 || idStatusMatricula == 6 || idStatusMatricula == 8))
            {
                throw new AcademicoException("Status da matrícula inválido");
            }
            if (usuario == null)
            {
                throw new AcademicoException("CPF não localizado na base");
            }

            var oferta = new BMOferta().ObterPorId(idOferta);

            if (oferta == null)
            {
                throw new AcademicoException("Oferta não localizada na base");
            }

            if (oferta.ListaMatriculaOferta == null)
            {
                oferta.ListaMatriculaOferta = new List <MatriculaOferta>();
            }

            if (oferta.ListaMatriculaOferta.Any(x => x.Usuario.ID == usuario.ID && (x.StatusMatricula == enumStatusMatricula.Inscrito || x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)))
            {
                throw new AcademicoException("Usuário já inscrito nesta oferta");
            }

            //VERIFICA PRÉ-REQUISITO
            if (oferta.SolucaoEducacional.ListaPreRequisito.Any())
            {
                var aprovados = new List <enumStatusMatricula> {
                    enumStatusMatricula.Aprovado,
                    enumStatusMatricula.Concluido
                };

                foreach (var item in oferta.SolucaoEducacional.ListaPreRequisito)
                {
                    if (!usuario.ListaMatriculaOferta.Any(x => aprovados.Contains(x.StatusMatricula) && x.Oferta.SolucaoEducacional.ID == item.PreRequisito.ID))
                    {
                        throw new AcademicoException("Erro: Existem soluções como pré-requisito que não estão cursadas");
                    }
                }
            }

            if (usuarioLogado.UF.ID != (int)enumUF.NA)
            {
                if (usuario.UF.ID != usuarioLogado.UF.ID)
                {
                    throw new AcademicoException("Este usuário não é do seu estado");
                }
            }

            var ofertaEstado = oferta.ListaPermissao.FirstOrDefault(f => f.Uf != null && f.Uf.ID == usuario.UF.ID);

            if (ofertaEstado == null)
            {
                throw new AcademicoException("Erro: A vaga não é permitida para o seu estado");
            }
            if (ofertaEstado.QuantidadeVagasPorEstado > 0)
            {
                var qtdMatriculaOfertaPorEstado = oferta.ListaMatriculaOferta.Count(x => !x.IsUtilizado() && x.UF.ID == ofertaEstado.Uf.ID);

                if (qtdMatriculaOfertaPorEstado >= ofertaEstado.QuantidadeVagasPorEstado && !oferta.FiladeEspera)
                {
                    throw new AcademicoException("Erro: As vagas já foram preenchidas para o seu estado");
                }
            }

            if (usuario.ListaMatriculaOferta.Any(x => x.Usuario.ID == usuario.ID && x.Oferta.ID == oferta.ID && x.Oferta.SolucaoEducacional.ID == oferta.SolucaoEducacional.ID && (x.StatusMatricula == enumStatusMatricula.Inscrito ||
                                                                                                                                                                                   x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno ||
                                                                                                                                                                                   x.StatusMatricula == enumStatusMatricula.Aprovado ||
                                                                                                                                                                                   x.StatusMatricula == enumStatusMatricula.Concluido
                                                                                                                                                                                   )))
            {
                throw new AcademicoException("Usuário já cursou esta Solução Educacional");
            }

            var matriculaOferta = new MatriculaOferta
            {
                Usuario         = usuario,
                Oferta          = oferta,
                DataSolicitacao = DateTime.Now,
                StatusMatricula = (enumStatusMatricula)idStatusMatricula,
                UF = usuario.UF,
                NivelOcupacional = usuario.NivelOcupacional,
                Auditoria        = new Auditoria(solicitante)
            };

            (new ManterMatriculaOferta()).VerificarPoliticaDeConsequencia(matriculaOferta);

            if (matriculaOferta.StatusMatricula == enumStatusMatricula.Inscrito)
            {
                Turma turma;
                if (idTurma > 0)
                {
                    turma = oferta.ListaTurma.FirstOrDefault(x => x.ID == idTurma);
                    if (turma == null)
                    {
                        throw new AcademicoException("A turma informada não pertence a oferta informada");
                    }
                }
                else
                {
                    turma = oferta.ListaTurma.FirstOrDefault();
                }

                if (turma != null)
                {
                    if (!turma.InAberta)
                    {
                        throw new AcademicoException("A turma não está aberta para inscrições");
                    }

                    if (!usuarioLogado.IsGestor() && (turma.Oferta.DataInicioInscricoes > DateTime.Now || (turma.Oferta.DataFimInscricoes.HasValue && turma.Oferta.DataFimInscricoes.Value < DateTime.Now)))
                    {
                        throw new AcademicoException("A oferta selecionada está fora do período de inscrição");
                    }

                    //Verifica se a quantidade de matriculas para a turma foi preenchida.
                    if (turma.QuantidadeMaximaInscricoes > 0 && turma.QuantidadeAlunosMatriculadosNaTurma >= turma.QuantidadeMaximaInscricoes)
                    {
                        throw new AcademicoException("Todas as vagas para esta turma foram preenchidas");
                    }

                    var matriculaTurma = new MatriculaTurma
                    {
                        Turma           = turma,
                        MatriculaOferta = matriculaOferta,
                        DataMatricula   = DateTime.Now,
                        Auditoria       = new Auditoria(solicitante)
                    };

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

                    matriculaTurma.DataMatricula = DateTime.Now;
                    if (!usuarioLogado.IsGestor() && matriculaOferta.Oferta.DataInicioInscricoes.HasValue && matriculaOferta.Oferta.DataFimInscricoes.HasValue && !matriculaTurma.DataMatricula.Date.Between(matriculaOferta.Oferta.DataInicioInscricoes.Value, matriculaOferta.Oferta.DataFimInscricoes.Value))
                    {
                        throw new AcademicoException(
                                  "Data de matrícula fora do periodo de inscrição da turma que é de " +
                                  matriculaTurma.Turma.DataInicio.ToString("dd/MM/yyyy") + " a " +
                                  (matriculaTurma.Turma.DataFinal != null
                                ? matriculaTurma.Turma.DataFinal.Value.ToString("dd/MM/yyyy")
                                : ""));
                    }

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

                    matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                }
            }

            new BMMatriculaOferta().Salvar(matriculaOferta);

            try
            {
                if (matriculaOferta.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)
                {
                    var templateMensagemEmailOfertaExclusiva = TemplateUtil.ObterInformacoes(enumTemplate.EnvioEmailParaPendenteDeConfirmacao);

                    var assuntoDoEmail = templateMensagemEmailOfertaExclusiva.Assunto;

                    var corpoEmail = templateMensagemEmailOfertaExclusiva.TextoTemplate;

                    var emailDoDestinatario = matriculaOferta.Usuario.Email;

                    if (matriculaOferta.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)
                    {
                        assuntoDoEmail = assuntoDoEmail.Replace("#NOME_CURSO", matriculaOferta.NomeSolucaoEducacional);
                        corpoEmail     = new ManterOferta().CorpoEmail(corpoEmail, matriculaOferta);

                        EmailUtil.Instancia.EnviarEmail(emailDoDestinatario.Trim(), assuntoDoEmail, corpoEmail);
                    }
                }
            }
            catch
            {
                // ignored
            }

            return(string.Empty);
        }