public RetornoWebService NotificarAlunosAprovadosTurmaQuestionarioPos() { var retorno = new RetornoWebService(); var matriculasTurma = new ManterMatriculaTurma().ObterDeHoje(); var mail = new ManterEmail(); var notificacao = new ManterNotificacao(); var confSistema = new ManterConfiguracaoSistema().ObterConfiguracaoSistemaPorID((int)enumConfiguracaoSistema.EnderecoPortal30Dev); foreach (var matriculaTurma in matriculasTurma) { var turma = matriculaTurma.Turma.Nome; var idTurma = matriculaTurma.Turma.ID; var email = matriculaTurma.MatriculaOferta.Usuario.Email; var usuario = matriculaTurma.MatriculaOferta.Usuario.Nome; var idUsuario = matriculaTurma.MatriculaOferta.Usuario.ID; var sidUsuario = matriculaTurma.MatriculaOferta.Usuario.SID_Usuario; var linkRedirect = string.Format("minhasinscricoes/questionario/{0}/turma/{1}", (int)enumTipoQuestionarioAssociacao.Pos, idTurma); var link = string.Format("{0}networkLoginAuto/{1}/{2}", confSistema.Registro, System.Web.HttpContext.Current.Server.UrlEncode(Base64Encode(InfraEstrutura.Core.Helper.CriptografiaHelper.Criptografar(sidUsuario))), Base64Encode(linkRedirect)); var mensagem = ObterCorpo(usuario, turma, link); var assunto = "Questionário de avaliação do curso: " + turma; mail.EnviarEmail(email, assunto, mensagem); notificacao.PublicarNotificacao(linkRedirect, mensagem, idUsuario); } return(retorno); }
protected void GerarEmails(classes.EmailEnvio emailEnvio) { var ckblstPerfil = (CheckBoxList)this.ucPermissoes1.FindControl("ckblstPerfil"); var perfisSelecionados = WebFormHelper.ObterValoresSelecionadosCheckBoxList(ckblstPerfil); var ckblstNivelOcupacional = (CheckBoxList)this.ucPermissoes1.FindControl("ckblstNivelOcupacional"); var niveisOcupacionaisSelecionados = WebFormHelper.ObterValoresSelecionadosCheckBoxList(ckblstNivelOcupacional); var rptUFs = (Repeater)ucPermissoes1.FindControl("rptUFs"); var ufsSelecionadas = WebFormHelper.ObterValoresSelecionadosRepeaterCheckBox(rptUFs, "ckUf", "ID_UF"); var statusSelecionados = WebFormHelper.ObterValoresSelecionadosCheckBoxList(chkStatus); var selectedUsers = emailEnvio.ListaPermissao.Where(x => x.Usuario != null) .Select(x => new Usuario() { ID = x.Usuario.ID }) .ToList(); var turma = string.IsNullOrWhiteSpace(txtTurma.Text) ? null : new classes.Turma { ID = int.Parse(txtTurma.Text) }; var manter = new ManterEmail(); manter.FormatarEmailEnvioFormulario(emailEnvio, perfisSelecionados, niveisOcupacionaisSelecionados, ufsSelecionadas, statusSelecionados, turma, selectedUsers); }
//Enviar email informando que está liberado uma nova prova final public void EnviarEmailNovaProva() { var mail = new ManterEmail(); var confSistema = new ManterConfiguracaoSistema().ObterConfiguracaoSistemaPorID((int)enumConfiguracaoSistema.EnderecoPortal30); var listaNovaProva = new ManterUsuarioTrilha().ObterTodosUsuarioTrilha() .Where(x => x.DataLimite != null && x.DataLiberacaoNovaProva != null && x.DataLiberacaoNovaProva.Value.Date == DateTime.Now.Date && x.Usuario.Email != null); foreach (var prova in listaNovaProva) { var mensagem = ObterMensagem(prova); var assunto = "Nova data da prova final " + prova.TrilhaNivel.Trilha.Nome + " - " + prova.TrilhaNivel.Nome; mail.EnviarEmail(prova.Usuario.Email, assunto, mensagem, throwException: false); } }
private void EnviarEmail(classes.EmailEnvio emailEnvio, bool ignorarEnviados, out int quantidadeEnviados, out int emailsComErro, bool validar = false) { emailsComErro = 0; quantidadeEnviados = 0; ManterEmail manterEmail = new ManterEmail(); if (!validar) { foreach (var registro in _manterEmailEnvio.ObterEmailsParaEnvio(emailEnvio, ignorarEnviados)) { try { if (!string.IsNullOrEmpty(registro.Usuario.Email)) { manterEmail.EnviarEmail(registro.Usuario.Email, emailEnvio.Assunto, emailEnvio.Texto); registro.Enviado = true; registro.DataEnvio = DateTime.Now; quantidadeEnviados++; } } catch { emailsComErro++; } } } else { foreach (var registro in _emailEnvioEdicao.ListaEmailsGerados) { try { if (!string.IsNullOrEmpty(registro.Usuario.Email)) { manterEmail.EnviarEmail(registro.Usuario.Email, _emailEnvioEdicao.Assunto, _emailEnvioEdicao.Texto); registro.Enviado = true; registro.DataEnvio = DateTime.Now; quantidadeEnviados++; } } catch { emailsComErro++; } } } }
private void ExecutarThreadEnvioInforme(classes.EnvioInforme envio) { var destinatarios = new ManterEnvioInforme().ObterDestinatarios(envio); var assunto = envio.Informe.Numero + " " + envio.Informe.ObterMesAno(); var manterEmail = new ManterEmail(); var manterEnvioInforme = new ManterEnvioInforme(); // Pode ser lento. var mensagem = new ManterInforme().ObterTemplateHTML(envio.Informe); var imagens = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Header", Server.MapPath("../../img/newsletter/header.jpg")), new KeyValuePair <string, string>("Footer", Server.MapPath("../../img/newsletter/footer.jpg")), new KeyValuePair <string, string>("RightArrow", Server.MapPath("../../img/newsletter/right-arrow.jpg")), new KeyValuePair <string, string>("PageFlip", Server.MapPath("../../img/newsletter/page-flip.jpg")) }; var thread = new Thread(() => { foreach (var email in destinatarios) { try { manterEmail.EnviarEmail(email, assunto, mensagem, imagens); } catch (Exception) { // Ignored. } } envio.DataEnvio = DateTime.Now; manterEnvioInforme.Salvar(envio); }) { IsBackground = true }; // Let the chaos COMMENCE! thread.Start(); WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "As mensagens estão sendo enviadas para " + destinatarios.Count() + " email(s) automaticamente. Este processo pode demorar dependendo da quantidade de receptores."); }
private void EnviarQuestionarioEficacia() { // Recupera lista de usuários que devem receber as notificações var questionarios = new ManterQuestionarioAssociacao().ObterTodosEficaciaDia(); var mail = new ManterEmail(); foreach (var questionario in questionarios) { foreach (var matricula in questionario.Turma.ListaMatriculas) { var mensagem = ObterMensagem(questionario.Turma, matricula.MatriculaOferta.Usuario); var assunto = "Questionário de eficácia"; mail.EnviarEmail(matricula.MatriculaOferta.Usuario.Email, assunto, mensagem, throwException: false); } } }
//Notifica os Alunos que já tiveram o primeiro envio e mantem a logica de 3 envio 1 a cada 7 dias e inativa o maior de 30 dias public void NotificarAlunosQuestionarioAssociacaoEnvio() { var mail = new ManterEmail(); var notificacao = new ManterNotificacao(); var confSistema = new ManterConfiguracaoSistema().ObterConfiguracaoSistemaPorID((int)enumConfiguracaoSistema.EnderecoPortal30); var manterQuestionariosAssociacaoEnvio = new ManterQuestionarioAssociacaoEnvio(); var questionariosAssociacaoEnvio = manterQuestionariosAssociacaoEnvio.ObterPorIntervalo(Intervalo); foreach (var questionarioAssociacaoEnvio in questionariosAssociacaoEnvio) { var dtoNotificarAluno = new DTONotificarAlunoQuestionarioPos() { Usuario = questionarioAssociacaoEnvio.Usuario, Turma = questionarioAssociacaoEnvio.QuestionarioAssociacao.Turma }; NotificarAlunos(dtoNotificarAluno, mail, notificacao, confSistema); manterQuestionariosAssociacaoEnvio.Atualizar(questionarioAssociacaoEnvio); } }
//Notificar Alunos public DTONotificarAlunoQuestionarioPos NotificarAlunos(DTONotificarAlunoQuestionarioPos dtoNotificarAluno, ManterEmail mail, ManterNotificacao notificacao, ConfiguracaoSistema confSistema) { var turma = dtoNotificarAluno.Turma.Nome; var idTurma = dtoNotificarAluno.Turma.ID; var email = dtoNotificarAluno.Usuario.Email; var usuario = dtoNotificarAluno.Usuario.Nome; var idUsuario = dtoNotificarAluno.Usuario.ID; var sidUsuario = dtoNotificarAluno.Usuario.SID_Usuario; var linkRedirect = string.Format("minhasinscricoes/questionario/pos/turma/{0}", idTurma); var link = string.Format("{0}networkLoginAuto/{1}/{2}", confSistema.Registro, System.Web.HttpContext.Current.Server.UrlEncode(Base64Encode(InfraEstrutura.Core.Helper.CriptografiaHelper.Criptografar(sidUsuario))), Base64Encode(linkRedirect)); var mensagem = ObterCorpo(usuario, turma, link); var assunto = "Questionário de avaliação do curso: " + turma; mail.EnviarEmail(email, assunto, mensagem, throwException: false); //notificacao.PublicarNotificacao(linkRedirect, mensagem, idUsuario); return(dtoNotificarAluno); }
private void ValidarAvaliacao(bool aprovar) { try { var turma = ObterTurma(); var usuarioLogado = new ManterUsuario().ObterUsuarioLogado(); if (UsuarioPodeValidarAvaliacao(turma, usuarioLogado)) { var avaliacao = turma.Avaliacoes.FirstOrDefault(); if (avaliacao != null) { var manterMatriculaOferta = new ManterMatriculaOferta(); var manterAvaliacao = new ManterAvaliacao(); var emailsAlunos = new List <string>(); // Alterar status das matrículas. foreach (var respostaId in avaliacao.Respostas.Where(x => x.Questao.Tipo == enumTipoQuestao.Resultado).Select(x => x.ID)) { // Busca a resposta denovo do banco pois o NHibernate tá pirando com o Lazy. var resposta = manterAvaliacao.ObterQuestaoRespostaPorId(respostaId); var matricula = resposta.MatriculaTurma.MatriculaOferta; // Adicionar emails para envio posterior. if (aprovar && !string.IsNullOrWhiteSpace(matricula.Usuario.Email)) { emailsAlunos.Add(matricula.Usuario.Email); } if (resposta.StatusMatricula != null) { matricula.StatusMatricula = (enumStatusMatricula)resposta.StatusMatricula.ID; manterMatriculaOferta.Salvar(matricula); } } // Mandar e-mail aos alunos caso a avaliação seja aprovada. if (aprovar) { var manterEmail = new ManterEmail(); var template = new ManterTemplate().ObterTemplatePorID((int)enumTemplate.ResultadoAvaliacao); var thread = new Thread(() => { foreach (var email in emailsAlunos) { manterEmail.EnviarEmail(email, template.Assunto ?? template.DescricaoTemplate, template.TextoTemplate); } }) { IsBackground = true }; thread.Start(); } // Finalizar status da avaliação e setar o usuário que analisou. avaliacao.Status = aprovar ? enumStatusAvaliacao.Aprovada : enumStatusAvaliacao.AguardandoResposta; avaliacao.Analista = usuarioLogado; manterAvaliacao.Salvar(avaliacao); WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Avaliação " + (!aprovar ? "não" : "") + " aprovada com sucesso", "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID); return; } } } catch (Exception) { // ignored. } WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Houve um erro na validação da avaliação. Tente novamente."); }
protected void btnEnviarAvaliacao_OnClick(object sender, EventArgs e) { if (BloquearCampos) { WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não é possível alterar esta avaliação, pois ela está bloqueada."); return; } // Salvar os dados da tela antes de enviar, só para se certificar. btnSalvar_OnClick(null, null); // O evento de salvar persiste a avaliação salva na variável AvaliacaoSalva. var avaliacao = AvaliacaoSalva; var manterAvaliacao = new ManterAvaliacao(); var qtQuestoes = manterAvaliacao.ObterQuestoes().Count(); var qtMatriculas = ObterTurma().ListaMatriculas.Count(); var manterUsuario = new ManterUsuario(); var usuarioLogado = manterUsuario.ObterUsuarioLogado(); if (avaliacao.Status == enumStatusAvaliacao.AguardandoResposta) { if (avaliacao.IsRespondido(qtQuestoes, qtMatriculas) && usuarioLogado.IsConsultorEducacional()) { var template = new ManterTemplate().ObterTemplatePorID((int)enumTemplate.AvaliacaoGestor); if (template == null) { WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não foi possível enviar e-mail ao gestor. Tente novamente."); return; } // Obter todos os gestores da UF do usuário logado. var usuarioFiltro = new classes.Usuario { ListaPerfil = new List <classes.UsuarioPerfil> { new classes.UsuarioPerfil { Perfil = new classes.Perfil { ID = (int)enumPerfil.GestorUC } } }, UF = new classes.Uf { ID = usuarioLogado.UF.ID } }; var gestores = manterUsuario.ObterPorFiltro(usuarioFiltro) .Where(x => x.Email != null && x.Email != "") // Selecionar somente os campos que interessam. .Select(x => new classes.Usuario { Email = x.Email, Nome = x.Nome }) .ToList(); // Caso não haja gestores para atualizar, notifica o usuário e impede a alteração. if (!gestores.Any()) { WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não há gestor na UF " + usuarioLogado.UF.Sigla + " para validar a avaliação dos alunos."); return; } var manterEmail = new ManterEmail(); var textoTemplate = template.TextoTemplate; // Reza a lenda que cada oferta desses cursos só possui uma turma. Vamos torcer para isso ser verdade. var turma = avaliacao.Turma; textoTemplate = textoTemplate // Substituir o nome da solução duas vezes porque tem duas tags de solução. .Replace("#SOLUCAO", turma.Oferta.SolucaoEducacional.Nome) .Replace("#SOLUCAO", turma.Oferta.SolucaoEducacional.Nome) .Replace("#OFERTA", turma.Oferta.Nome) .Replace("#TURMA", turma != null ? turma.Nome : "") .Replace("#CONSULTOR", turma != null && turma.ConsultorEducacional != null ? turma.ConsultorEducacional.Nome : ""); // Executa o envio de e-mails via Threading para deixar o fluxo mais rápido. var thread = new Thread(() => { foreach (var gestor in gestores) { try { var templateFinal = textoTemplate.Replace("#GESTOR", gestor.Nome); manterEmail.EnviarEmail(gestor.Email, template.Assunto ?? template.DescricaoTemplate, templateFinal); } catch (Exception) { // Ignored. } } }) { IsBackground = true }; thread.Start(); avaliacao.Status = enumStatusAvaliacao.AguardandoGestor; manterAvaliacao.Salvar(avaliacao); WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Avaliação enviada ao gestor e aguardando análise.", "GerenciamentoMatricula.aspx?oferta=" + avaliacao.Turma.Oferta.ID); } else { WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Você precisa responder todas as questões antes de enviar sua avaliação ao Gestor."); } } }