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"); } } }
/// <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); } }
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); }
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); } }
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); } }
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; } } }
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 } }
/// <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); } }
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 } }
public void MatricularSolucaoEducacional(int idUsuario, int idSolucaoEducacional, int idOferta, List <int> pListaIdMetaIndividualAssociada, List <int> pListaIdMetaInstitucionalAssociada, AuthenticationRequest autenticacao) { Usuario userSelected = new BMUsuario().ObterPorId(idUsuario); SolucaoEducacional solucaoEducacional = new BMSolucaoEducacional().ObterPorId(idSolucaoEducacional); BMMatriculaOferta moBM = new BMMatriculaOferta(); if (solucaoEducacional == null) { throw new AcademicoException("Solução Educacional não encontrada"); } //VALIDAR SE ELE TEM ALGUMA OFERTA EXCLUSIVA PENDENTE DE CONFIRMACAO if (userSelected.ListaMatriculaOferta.Any(x => x.Oferta.ID == idOferta && x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno && x.Oferta.DataFim.Value.Date >= DateTime.Now.Date)) { MatriculaOferta mo = userSelected.ListaMatriculaOferta.Where(x => x.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno).FirstOrDefault(); if (mo != null) { mo.StatusMatricula = enumStatusMatricula.Inscrito; mo.Auditoria = new Auditoria(autenticacao.Login); moBM.Salvar(mo); ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao); ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao); if (!(mo.MatriculaTurma != null && mo.MatriculaTurma.Count > 0)) { try { if (mo.Oferta.TipoOferta.Equals(enumTipoOferta.Continua)) { string retornows; switch (mo.Oferta.SolucaoEducacional.Fornecedor.ID) { case (int)enumFornecedor.MoodleSebrae: moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient(); retornows = soapCliente.MatricularAluno( userSelected.Nome, userSelected.CPF, userSelected.Email, userSelected.Cidade, mo.Oferta.SolucaoEducacional.IDChaveExterna.ToString(), mo.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString()); break; case (int)enumFornecedor.WebAula: Turma turma = mo.MatriculaTurma.FirstOrDefault().Turma; webaula.waIntegracaoSoapClient wa = new webaula.waIntegracaoSoapClient(); webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest(); webaula.DTOUsuario dtoUsuario = new webaula.DTOUsuario(); webaula.DTOTurma dtoTurma = new webaula.DTOTurma(); dtoTurma.IDChaveExterna = turma.IDChaveExterna; dtoUsuario.CPF = userSelected.CPF; dtoUsuario.Email = userSelected.Email; dtoUsuario.Nome = userSelected.Nome; dtoUsuario.Sexo = userSelected.Sexo; dtoUsuario.UF = userSelected.UF.Sigla; aut.Login = mo.Oferta.SolucaoEducacional.Fornecedor.Login; aut.Senha = CriptografiaHelper.Decriptografar(mo.Oferta.SolucaoEducacional.Fornecedor.Senha); retornows = wa.Matricular(aut, dtoUsuario, dtoTurma); break; } } } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } } if (!string.IsNullOrEmpty(mo.Usuario.Email)) { Template mensagemRecuperacaoDeSenhaSemConfirmacao = TemplateUtil.ObterInformacoes(enumTemplate.InscricaoSESucesso); string assuntoDoEmail = mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.Substring(0, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate.IndexOf(Environment.NewLine)); Dictionary <string, string> registros = new Dictionary <string, string>(); registros.Add("NOMESOLUCAOEDUCACIONAL", mo.Oferta.SolucaoEducacional.Nome); registros.Add("DATASISTEMA", DateTime.Now.ToString("dd'/'MM'/'yyyy HH:mm")); registros.Add("NOMEALUNO", mo.Usuario.Nome); //Envia e-mail para o usuário EmailUtil.Instancia.EnviarEmail(mo.Usuario.Email, assuntoDoEmail, this.FormatarTextoEmail(registros, mensagemRecuperacaoDeSenhaSemConfirmacao.DescricaoTemplate) ); } return; } } //Verificando se existe alguma matricula na SE. MatriculaOferta buscaMatricula = new MatriculaOferta(); buscaMatricula.Usuario = new Usuario(); buscaMatricula.Usuario.ID = userSelected.ID; List <MatriculaOferta> possiveisMatriculas = new BMMatriculaOferta().ObterPorFiltro(buscaMatricula).ToList(); if (possiveisMatriculas != null && possiveisMatriculas.Any(y => y.Oferta.SolucaoEducacional.ID == idSolucaoEducacional && !(y.StatusMatricula == enumStatusMatricula.CanceladoAdm || y.StatusMatricula == enumStatusMatricula.CanceladoAluno))) { throw new AcademicoException("Erro: O usuário já está matriculado em uma oferta desta Solução Educacional"); } //VALIDAR SE O USUARIO POSSUI ACESSO A SE bool usuarioPossuiPermissao = new BMSolucaoEducacional().VerificarSeUsuarioPossuiPermissao(idUsuario, solucaoEducacional.ID); // .ObterListaUsuariosPermitidos(); if (!usuarioPossuiPermissao) { throw new AcademicoException("Erro: O usuário Informado não possui permissão à Solução Educacional"); } //VALIDAR SE O USUARIO ESTA CURSANDO OUTRA SE if (userSelected.ListaMatriculaOferta.Any(y => y.Usuario.ID == userSelected.ID && y.StatusMatricula == enumStatusMatricula.Inscrito)) { throw new AcademicoException("Erro: O usuário já está inscrito em outra oferta."); } //VALIDAR SE O USUARIO ESTA COM ALGUM ABANDONO ATIVO if (new BMUsuarioAbandono().ValidarAbandonoAtivo(idUsuario)) { throw new AcademicoException("Erro: Existe um abandono registrado para este usuário!"); } Oferta oferta = new Oferta(); oferta = solucaoEducacional.ListaOferta.FirstOrDefault(x => x.ID == idOferta); if (oferta == null) { throw new AcademicoException("Erro: Oferta não encontrada"); } //VALIDADO OFERTA CONTINUA. if (oferta.TipoOferta.Equals(enumTipoOferta.Continua)) { Turma t = null; if (oferta.SolucaoEducacional.Fornecedor.PermiteGestaoSGUS) { t = oferta.ListaTurma.FirstOrDefault(x => x.DataFinal == null || x.DataFinal.Value.Date >= DateTime.Now.Date && x.InAberta); } int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm && x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count(); MatriculaOferta matriculaOferta = new MatriculaOferta() { Oferta = new BMOferta().ObterPorId(oferta.ID), Usuario = new BMUsuario().ObterPorId(userSelected.ID), Auditoria = new Auditoria(autenticacao.Login), DataSolicitacao = DateTime.Now, UF = new BMUf().ObterPorId(userSelected.UF.ID), NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID) }; if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes) { if (oferta.FiladeEspera) { matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera; } else { throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida"); } } else { matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito; } qtdInscritosNaOferta++; if (t != null) { MatriculaTurma matriculaTurma = new MatriculaTurma() { Turma = new BMTurma().ObterPorID(t.ID), Auditoria = new Auditoria(autenticacao.Login), DataMatricula = DateTime.Now, MatriculaOferta = matriculaOferta, DataLimite = DateTime.Today.AddDays(oferta.DiasPrazo) }; if (matriculaOferta.MatriculaTurma == null) { matriculaOferta.MatriculaTurma = new List <MatriculaTurma>(); } matriculaOferta.MatriculaTurma.Add(matriculaTurma); } moBM.Salvar(matriculaOferta); //validando se a turma já está chegando ao limite. if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro))) { EnviarEmailLimiteOferta(oferta, matriculaOferta); } ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao); ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao); try { if (matriculaOferta.Oferta.TipoOferta.Equals(enumTipoOferta.Continua) && matriculaOferta.MatriculaTurma != null) { string retornows; switch (matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.ID) { case (int)enumFornecedor.MoodleSebrae: moodle.IntegracaoSoapClient soapCliente = new moodle.IntegracaoSoapClient(); retornows = soapCliente.MatricularAluno(userSelected.Nome, userSelected.CPF, userSelected.Email, userSelected.Cidade, matriculaOferta.Oferta.SolucaoEducacional.IDChaveExterna.ToString(), matriculaOferta.MatriculaTurma.FirstOrDefault().Turma.IDChaveExterna.ToString()); break; case (int)enumFornecedor.WebAula: Turma turma = matriculaOferta.MatriculaTurma.FirstOrDefault().Turma; webaula.waIntegracaoSoapClient wa = new webaula.waIntegracaoSoapClient(); webaula.AuthenticationProviderRequest aut = new webaula.AuthenticationProviderRequest(); webaula.DTOUsuario dtoUsuario = new webaula.DTOUsuario(); webaula.DTOTurma dtoTurma = new webaula.DTOTurma(); dtoTurma.IDChaveExterna = turma.IDChaveExterna; dtoUsuario.CPF = userSelected.CPF; dtoUsuario.Email = userSelected.Email; dtoUsuario.Nome = userSelected.Nome; dtoUsuario.Sexo = userSelected.Sexo; dtoUsuario.UF = userSelected.UF.Sigla; aut.Login = matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Login; aut.Senha = CriptografiaHelper.Decriptografar(matriculaOferta.Oferta.SolucaoEducacional.Fornecedor.Senha); retornows = wa.Matricular(aut, dtoUsuario, dtoTurma); break; } } } catch (Exception ex) { ErroUtil.Instancia.TratarErro(ex); } return; } //VALIDANDO A OFETA NORMAL if (oferta.TipoOferta.Equals(enumTipoOferta.Normal)) { int qtdInscritosNaOferta = oferta.ListaMatriculaOferta.Where(x => (x.StatusMatricula != enumStatusMatricula.CanceladoAdm && x.StatusMatricula != enumStatusMatricula.CanceladoAluno)).Count(); MatriculaOferta matriculaOferta = new MatriculaOferta() { Oferta = new BMOferta().ObterPorId(oferta.ID), Usuario = new BMUsuario().ObterPorId(userSelected.ID), Auditoria = new Auditoria(autenticacao.Login), DataSolicitacao = DateTime.Now, UF = new BMUf().ObterPorId(userSelected.UF.ID), NivelOcupacional = new BMNivelOcupacional().ObterPorID(userSelected.NivelOcupacional.ID) }; if (qtdInscritosNaOferta >= oferta.QuantidadeMaximaInscricoes) { if (oferta.FiladeEspera) { matriculaOferta.StatusMatricula = enumStatusMatricula.FilaEspera; } else { throw new AcademicoException("Erro: A quantidade máxima de alunos foi atingida"); } } else { matriculaOferta.StatusMatricula = enumStatusMatricula.Inscrito; } BMMatriculaOferta bmMatriculaOferta = new BMMatriculaOferta(); bmMatriculaOferta.Salvar(matriculaOferta); qtdInscritosNaOferta++; //validando se a turma já está chegando ao limite. if (qtdInscritosNaOferta > (oferta.QuantidadeMaximaInscricoes - int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.LimiteAlertaInscricaoOferta).Registro))) { EnviarEmailLimiteOferta(oferta, matriculaOferta); } ValidarMetaIndividual(idUsuario, idSolucaoEducacional, pListaIdMetaIndividualAssociada, autenticacao); ValidarMetaInstitucional(idUsuario, idSolucaoEducacional, pListaIdMetaInstitucionalAssociada, autenticacao); return; } throw new Exception("Não foi encontrado ofertas para esse usuário!"); }
public 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); }