br.org.gdt.beans.GchFormularioBean.java Source code

Java tutorial

Introduction

Here is the source code for br.org.gdt.beans.GchFormularioBean.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.org.gdt.beans;

import br.org.gdt.model.GchAlternativas;
import br.org.gdt.model.GchAlternativasperguntas;
import br.org.gdt.model.GchFormulario;
import br.org.gdt.model.GchFormularioPessoa;
import br.org.gdt.model.GchPerguntas;
import br.org.gdt.model.GchTreinamentospessoas;
import br.org.gdt.model.ParametrosEmail;
import br.org.gdt.model.RecPessoa;
import br.org.gdt.resources.EncryptDecryptString;
import br.org.gdt.resources.GerenciadorEmail;
import br.org.gdt.resources.Helper;
import br.org.gdt.service.GchAlternativasPerguntaService;
import br.org.gdt.service.GchCadastroAlternativaServiceCerto;
import br.org.gdt.service.GchFormularioPessoaService;
import br.org.gdt.service.GchFormularioService;
import br.org.gdt.service.GchPerguntasService;
import br.org.gdt.service.GchRespostasService;
import br.org.gdt.service.RecPessoaService;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.xml.bind.DatatypeConverter;
import org.apache.commons.collections.IteratorUtils;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Alisson Allebrandt
 */
@ManagedBean
@SessionScoped
public class GchFormularioBean {

    public GchFormulario getGchFormulario() {
        return gchFormulario;
    }

    private boolean formAtivo = false;

    private long indexPerguntaItem = 0;
    private List<GchAlternativas> alternativasVinculadas;
    private GchFormulario gchFormulario = new GchFormulario();
    private List<GchFormulario> gchTodosFormularios;
    private Map<RecPessoa, Boolean> checked = new HashMap<RecPessoa, Boolean>();
    private GchFormularioPessoa gchFormulariopessoa = new GchFormularioPessoa();
    private List<RecPessoa> pessoasVinculadas = new ArrayList<>();

    private List<RecPessoa> pessoasEmail = new ArrayList<>();

    private RecPessoa id = new RecPessoa();
    private String Notificacao = "";

    @ManagedProperty("#{gchFormularioService}")
    private GchFormularioService gchFormularioService;

    @ManagedProperty("#{gchAlternativaCertoService}")
    private GchCadastroAlternativaServiceCerto gchAlternativasService;

    @ManagedProperty("#{gchAlternativaPerguntasService}")
    private GchAlternativasPerguntaService gchAlternativasPerguntaService;

    @ManagedProperty("#{gchPerguntaService}")
    private GchPerguntasService gchPerguntasService;

    @ManagedProperty("#{gchRespostaService}")
    private GchRespostasService gchRespostasService;

    @ManagedProperty("#{gchFormularioPessoaService}")
    private GchFormularioPessoaService gchFormularioPessoaService;

    @ManagedProperty("#{recPessoaService}")
    private RecPessoaService recPessoaService;

    public String getNotificacao() {
        return Notificacao;
    }

    public void setNotificacao(String Notificacao) {
        this.Notificacao = Notificacao;
    }

    public List<RecPessoa> getPessoasEmail() {

        pessoasEmail = recPessoaService.buscarColaboradores();

        //        Iterator<RecPessoa> pessoas = pessoasencontradas.iterator();
        //
        //        List<GchFormularioPessoa> formPess = gchFormularioPessoaService.VerificaExistenciaFormulario(gchFormulario.getFormCodigo());
        //
        //        while (pessoas.hasNext()) {
        //
        //            RecPessoa pessoaAtual = pessoas.next();
        //
        //            for (GchFormularioPessoa fp : formPess) {
        //
        //                if (pessoaAtual.getRecIdpessoa() == fp.getRecIdpessoa().getRecIdpessoa() && fp.isFormRespondido()) {
        //
        //                    pessoas.remove();
        //
        //                }
        //
        //            }
        //
        //        }
        //
        //        while (pessoas.hasNext()) {
        //            pessoasEmail.add(pessoas.next());
        //        }

        return pessoasEmail;
    }

    public void setPessoasEmail(List<RecPessoa> pessoasEmail) {
        this.pessoasEmail = pessoasEmail;
    }

    public RecPessoaService getRecPessoaService() {
        return recPessoaService;
    }

    public void setRecPessoaService(RecPessoaService recPessoaService) {
        this.recPessoaService = recPessoaService;
    }

    public Map<RecPessoa, Boolean> getChecked() {
        return checked;
    }

    public void setChecked(Map<RecPessoa, Boolean> checked) {
        this.checked = checked;
    }

    public GchFormularioPessoa getGchFormulariopessoa() {
        return gchFormulariopessoa;
    }

    public void setGchFormulariopessoa(GchFormularioPessoa gchFormulariopessoa) {
        this.gchFormulariopessoa = gchFormulariopessoa;
    }

    public List<RecPessoa> getPessoasVinculadas() {
        return pessoasVinculadas;
    }

    public void setPessoasVinculadas(List<RecPessoa> pessoasVinculadas) {
        this.pessoasVinculadas = pessoasVinculadas;
    }

    public RecPessoa getId() {
        return id;
    }

    public void setId(RecPessoa id) {
        this.id = id;
    }

    public GchFormularioPessoaService getGchFormularioPessoaService() {
        return gchFormularioPessoaService;
    }

    public void setGchFormularioPessoaService(GchFormularioPessoaService gchFormularioPessoaService) {
        this.gchFormularioPessoaService = gchFormularioPessoaService;
    }

    public List<GchAlternativas> getAlternativasVinculadas() {
        return alternativasVinculadas;
    }

    public void setAlternativasVinculadas(List<GchAlternativas> alternativasVinculadas) {
        this.alternativasVinculadas = alternativasVinculadas;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 83 * hash + Objects.hashCode(this.gchFormularioService);
        hash = 83 * hash + Objects.hashCode(this.gchAlternativasService);
        hash = 83 * hash + Objects.hashCode(this.gchAlternativasPerguntaService);
        hash = 83 * hash + Objects.hashCode(this.gchPerguntasService);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final GchFormularioBean other = (GchFormularioBean) obj;
        if (!Objects.equals(this.gchFormularioService, other.gchFormularioService)) {
            return false;
        }
        if (!Objects.equals(this.gchAlternativasService, other.gchAlternativasService)) {
            return false;
        }
        if (!Objects.equals(this.gchAlternativasPerguntaService, other.gchAlternativasPerguntaService)) {
            return false;
        }
        if (!Objects.equals(this.gchPerguntasService, other.gchPerguntasService)) {
            return false;
        }
        return true;
    }

    private List<PerguntasAlternativas> PergAlt;

    public GchAlternativasPerguntaService getGchAlternativasPerguntaService() {
        return gchAlternativasPerguntaService;
    }

    public void setGchAlternativasPerguntaService(GchAlternativasPerguntaService gchAlternativasPerguntaService) {
        this.gchAlternativasPerguntaService = gchAlternativasPerguntaService;
    }

    public GchPerguntasService getGchPerguntasService() {
        return gchPerguntasService;
    }

    public void setGchPerguntasService(GchPerguntasService gchPerguntasService) {
        this.gchPerguntasService = gchPerguntasService;
    }

    public GchRespostasService getGchRespostasService() {
        return gchRespostasService;
    }

    public void setGchRespostasService(GchRespostasService gchRespostasService) {
        this.gchRespostasService = gchRespostasService;
    }

    public GchFormularioBean() {

    }

    public void VerificaNotificacao() {

        if (!Notificacao.isEmpty()) {

            Helper.mostrarNotificacao("Sucesso", Notificacao, "success");

            Notificacao = "";
        }

    }

    public String DirecionaGrafico(GchFormulario formulario) {

        return "Estatisticas";

    }

    public void IsSelected(long alt) {

        //        System.out.println("alt" + alt);

    }

    public void cancel() {
        this.formAtivo = false;
        this.gchFormulario = new GchFormulario();
    }

    public void cancelDialog() {

        this.formAtivo = false;
        this.gchFormulariopessoa = new GchFormularioPessoa();
        checked = new HashMap<RecPessoa, Boolean>();
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            context.getExternalContext().redirect("Formularios.xhtml");
        } catch (IOException ex) {

        }

    }

    public void add() {

        this.formAtivo = true;
        this.gchFormulario = new GchFormulario();

    }

    public void alimentarVariaveis() {

        RequestContext requestContext = RequestContext.getCurrentInstance();
        requestContext.execute("MontarPerguntasAlternativas()");

    }

    public void LeituraParametroLink() {

    }

    public String salvarPessoasFormulario() {

        if (gchFormulariopessoa != null) {

            RequestContext contextReq = RequestContext.getCurrentInstance();

            Iterator<RecPessoa> keyIterrator = checked.keySet().iterator();

            ArrayList<ParametrosEmail> parametros = new ArrayList<>();

            ParametrosEmail ItemParametro;
            FacesContext context = FacesContext.getCurrentInstance();

            EncryptDecryptString cripto = new EncryptDecryptString();

            //Configuraes da caixa de e-mail padro do sistema
            String emailResponsavel = "murphyrhnotifica@gmail.com";
            String senha = "murphy2017";
            String assunto = "Preenchimento de Formulrio";
            String url = context.getExternalContext().getRequestServerName() + ":"
                    + context.getExternalContext().getRequestServerPort()
                    + context.getExternalContext().getApplicationContextPath()
                    + "/ModuloCapitalHumano/ResponderFormulario.xhtml?%1s";
            String mensagem = "";

            boolean vinculou = false;
            parametros.clear();

            while (keyIterrator.hasNext()) {

                RecPessoa pessoa = keyIterrator.next();
                Boolean value = checked.get(pessoa);

                if (value) {

                    //Seta null para no dar pau no Hibernate
                    gchFormulariopessoa.setFormPesCodigo(0);

                    gchFormulariopessoa.setRecIdpessoa(pessoa);
                    gchFormulariopessoa.setFormulario(gchFormulario);
                    gchFormulariopessoa.setFormRespondido(false);

                    gchFormularioPessoaService.save(gchFormulariopessoa);

                    String parametroUrl = gchFormulario.getFormCodigo() + "&" + pessoa.getRecIdpessoa();

                    String parametroBase64 = DatatypeConverter.printBase64Binary(parametroUrl.getBytes());

                    String urlFormatada = String.format(url, "id=" + parametroBase64);

                    String msgFormatada = "<html></br></br><div style='border:2px solid #0094ff;'><h2 style='background:#87CEEB;color:white;padding:10px;color: #222;'>Formulrio "
                            + gchFormulario.getFormNome()
                            + "</h2><div style='color:#333;padding:10px;'><p style='font-size:120%;text-shadow: 0px 2px 3px #555;'>Voc acaba de receber um formulrio com algumas perguntas para que possamos lhe conhecer melhor. O prazo de respostas  at \""
                            + gchFormulario.getFormPrazoResposta().toString()
                            + "\"</p></br>Para acess-lo clique <a href='http://" + urlFormatada
                            + "'>aqui</a></br></br><h3>Instrues de Preenchimento</h3></br><p>- Responda com sinceridade!</p><p>- Somente  possvel marcar uma alternativa por pergunta!</p><p>- S  possvel responder o formulrio uma nica vez!</p></div><h4 style='background:#ADD8E6;padding:8px;'>Murphy RH - Todos os direitos Reservados</h4></div></html>";

                    //Cria item de parametro de email
                    ItemParametro = new ParametrosEmail();

                    ItemParametro.setRemetente(emailResponsavel);
                    ItemParametro.setSenha(senha);
                    ItemParametro.setAssunto(assunto);
                    ItemParametro.setMensagem(msgFormatada);
                    ItemParametro.setDestinatario(pessoa.getRecEmail());
                    ItemParametro.setFormularioPessoa(gchFormulariopessoa);

                    parametros.add(ItemParametro);

                    vinculou = true;

                }
            }

            this.formAtivo = false;
            gchFormulariopessoa = new GchFormularioPessoa();
            checked = new HashMap<RecPessoa, Boolean>();
            keyIterrator.remove();
            //Se vinculou ao menos 1 envia e-mail
            if (vinculou) {

                GerenciadorEmail novoEnvio = new GerenciadorEmail();

                try {
                    novoEnvio.EnviarEmail(parametros);
                    parametros.clear();
                } catch (Exception ex) {
                    Logger.getLogger(GchFormularioBean.class.getName()).log(Level.SEVERE, null, ex);
                }

            }

            String MsgNotificacao = "Formulrio disponibilizado para as pessoas selecionadas!";
            Helper.mostrarNotificacao("Sucesso", MsgNotificacao, "success");

        }
        gchTodosFormularios = null; //isso faz com que a listagem se atualize
        return "Formularios";
    }

    public String SalvarFormulario() {

        Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext()
                .getRequestParameterMap();

        //Busca parametros concatenados 
        String parametrosCapa = params.get("formFormulario:TxbParametrosCapa");
        String parametrosPerguntas = params.get("formFormulario:TxbParametrosPergunta");
        String parametrosAlternativas = params.get("formFormulario:TxbParametrosAlternativas");

        String inputsCapa[] = parametrosCapa.split("");
        String Perguntas[] = parametrosPerguntas.split("");
        String Alternativas[] = parametrosAlternativas.split("");

        GchFormulario formulario = new GchFormulario();

        Date date = null;

        if (inputsCapa.length == 0 || inputsCapa[0].isEmpty()) {

            Helper.mostrarNotificacao("Validao de Campos",
                    "Os dados da capa do formulrio devem ser preenchidos!", "error");

        } else {

            if (Perguntas.length == 0 || Perguntas[0].isEmpty()) {

                Helper.mostrarNotificacao("Validao de Campos",
                        " preciso inserir ao menos uma pergunta ao formulrio", "error");

            } else {

                if (Alternativas.length == 0 || Alternativas[0].isEmpty()) {

                    Helper.mostrarNotificacao("Validao de Campos",
                            " necessrio vincular ao menos uma alternativa a pergunta", "error");

                } else {

                    try {

                        // -------------- Inputs da Capa --------------------------//
                        formulario.setFormNome(inputsCapa[0]); //Nome do Formulrio
                        formulario.setFormDescricao(inputsCapa[1]); // Descricao do Formulrio

                        DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");

                        date = (Date) formatter.parse(inputsCapa[2]);

                        formulario.setFormPrazoResposta(date);

                        gchFormularioService.save(formulario);

                    } catch (ParseException ex) {
                        Logger.getLogger(GchFormularioBean.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    //      Somente continua se a quantidade de linhas de perguntas for igual a de alternativas
                    if (Perguntas.length == Alternativas.length) {

                        GchPerguntas pergunta;
                        String[] altPergunta;
                        GchAlternativasperguntas altperg;

                        // ----------- Informaes das perguntas ------------------//
                        for (int i = 0; i < Perguntas.length; i++) {

                            pergunta = new GchPerguntas();

                            pergunta.setPerDescricao(Perguntas[i]);
                            pergunta.setFormulario(formulario);

                            gchPerguntasService.save(pergunta);

                            /* Busca todas alternativas de cada pergunta e armazena no array
                             - O ponto de quebra  o caractere  e o mesmo  concatenado no arquivo ControleFormularios.Js
                             */
                            altPergunta = Alternativas[i].split("");

                            //Percorre alternativas da pergunta
                            for (int j = 0; j < altPergunta.length; j++) {

                                GchAlternativas novaAlternativa = gchAlternativasService
                                        .findById(Long.parseLong(altPergunta[j]));

                                altperg = new GchAlternativasperguntas();

                                altperg.setGchAlternativas(novaAlternativa);
                                altperg.setPerCodigo(pergunta);

                                gchAlternativasPerguntaService.save(altperg);

                            }
                        }

                        //Salvou com sucesso, retorna para pgina de listagem
                        Notificacao = "O formulrio " + gchFormulario.getFormNome()
                                + " foi cadastrado com sucesso!";

                        gchFormulario = new GchFormulario();

                    }

                    gchTodosFormularios = null; //isso faz com que a listagem se atualiz
                    return "Formularios";

                }

            }

        }
        return null;
    }

    public void responderFormulario() {

        FacesContext context = FacesContext.getCurrentInstance();
        try {
            context.getExternalContext().redirect("ResponderFormulario.xhtml");
        } catch (IOException ex) {

        }
    }

    public void addNovaPergunta() {

        RequestContext requestContext = RequestContext.getCurrentInstance();
        requestContext.execute("AddNovaPergunta()");

    }

    public void vincularPessoas(GchFormulario formulario) {

        gchFormulario = formulario;

        if (pessoasEmail.size() > 0) {

            RequestContext context = RequestContext.getCurrentInstance();
            context.execute("PF('dialogSelecaoPessoas').show();");
        } else {

            Helper.mostrarNotificacao("Informao", "Nenhum colaborador disponvel para enviar o formulrio",
                    "info");

        }
    }

    public void removerPergunta(int index) {

        this.gchFormulario.getPerguntas().remove(index);
    }

    public String excluir(GchFormulario gchFormulario) {

        String MsgNotificacao = "";

        try {

            if (gchFormulario != null) {

                // Se no encontrou formulrio vinculado
                if (!VerificaExclusaoFormulario(gchFormulario.getFormCodigo())) {

                    gchFormularioService.delete(gchFormulario.getFormCodigo());
                    gchTodosFormularios.remove(gchFormulario);
                    MsgNotificacao = "O formulrio <b>" + gchFormulario.getFormNome()
                            + " </b>foi excludo com sucesso!";
                    Helper.mostrarNotificacao("Sucesso", MsgNotificacao, "success");

                } else {

                    MsgNotificacao = "O formulrio <b>" + gchFormulario.getFormNome()
                            + " </b>j foi respondido e no ser excludo !";
                    Helper.mostrarNotificacao("Erro", MsgNotificacao, "error");

                }

            }

        } catch (Exception ex) {

            //Formulrio j vinculado a uma pessoa
            if (ex.toString().indexOf("fk_avlxdbfi5b3pnkm06qlu5v4ax") > 0) {

                MsgNotificacao = "Este formulrio j foi disponibilizado para os colaboradores!";
                Helper.mostrarNotificacao("Erro", MsgNotificacao, "error");
            } else {

                MsgNotificacao = "Uma Exceo no tratada impediu a excluso do formulrio!";
                Helper.mostrarNotificacao("Erro", MsgNotificacao + ex.toString(), "error");

            }
        }

        RequestContext.getCurrentInstance().update("formFormulario:tabelFormularios");

        return "Formularios";
    }

    public boolean VerificaExclusaoFormulario(long id) {

        return gchRespostasService.VerificaExistenciaFormulario(id);
    }

    public void setGchFormulario(GchFormulario gchFormulario) {
        this.gchFormulario = gchFormulario;
    }

    public List<GchFormulario> getGchTodosFormularios() {

        if (gchTodosFormularios == null) {
            gchTodosFormularios = gchFormularioService.findAll();
        }

        return gchTodosFormularios;
    }

    public boolean isFormAtivo() {
        return formAtivo;
    }

    public void setFormAtivo(boolean formAtivo) {
        this.formAtivo = formAtivo;
    }

    public long getIndexPerguntaItem() {
        return indexPerguntaItem;
    }

    public void setIndexPerguntaItem(long indexPerguntaItem) {
        this.indexPerguntaItem = indexPerguntaItem;
    }

    public List<PerguntasAlternativas> getPergAlt() {
        return PergAlt;
    }

    public void setPergAlt(List<PerguntasAlternativas> PergAlt) {
        this.PergAlt = PergAlt;
    }

    public GchFormularioService getGchFormularioService() {
        return gchFormularioService;
    }

    public void setGchFormularioService(GchFormularioService gchFormularioService) {
        this.gchFormularioService = gchFormularioService;
    }

    public GchCadastroAlternativaServiceCerto getGchAlternativasService() {
        return gchAlternativasService;
    }

    public void setGchAlternativasService(GchCadastroAlternativaServiceCerto gchAlternativasService) {
        this.gchAlternativasService = gchAlternativasService;
    }

}