Beispiel #1
0
        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);
        }
Beispiel #3
0
        //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++;
                    }
                }
            }
        }
Beispiel #5
0
        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.");
        }
Beispiel #6
0
        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);
        }
Beispiel #9
0
        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.");
        }
Beispiel #10
0
        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.");
                }
            }
        }