/* * This file is part of SGEA - Sistema de Gestão de Eventos Acadêmicos - TADS IFNMG Campus Januária. * * SGEA is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * SGEA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with SGEA. If not, see <http://www.gnu.org/licenses/>. */ package br.edu.ifnmg.GerenciamentoEventos.Aplicacao; import br.edu.ifnmg.DomainModel.Entidade; import br.edu.ifnmg.DomainModel.Pessoa; import br.edu.ifnmg.DomainModel.Services.AutenticacaoService; import br.edu.ifnmg.DomainModel.Services.ConfiguracaoService; import br.edu.ifnmg.DomainModel.Services.LogService; import br.edu.ifnmg.DomainModel.Services.MailService; import br.edu.ifnmg.DomainModel.Services.Repositorio; import br.edu.ifnmg.GerenciamentoEventos.Infraestrutura.SessaoService; import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.EJB; import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage.Severity; import javax.faces.context.FacesContext; import javax.inject.Inject; /** * * @author petronio */ public abstract class ControllerBase { @EJB ConfiguracaoService configuracao; @Inject protected AutenticacaoService autenticacao; @Inject LogService log; @EJB MailService mail; @Inject SessaoService sessao; String assunto, mensagem; List<Pessoa> destinatarios; public Pessoa getUsuarioCorrente() { return autenticacao.getUsuarioCorrente(); } protected void Mensagem(Severity severity, String titulo, String msg) { FacesContext context = FacesContext.getCurrentInstance(); FacesMessage m = new FacesMessage(severity, msg, titulo); context.addMessage(null, m); context.getExternalContext().getFlash().setKeepMessages(true); } protected void Mensagem(String titulo, String msg) { Mensagem(FacesMessage.SEVERITY_INFO, titulo, msg); } protected void MensagemErro(String titulo, String msg) { Mensagem(FacesMessage.SEVERITY_ERROR, titulo, msg); } protected void Rastrear(Entidade obj) { if (obj.getId() == null || obj.getId() == 0L) { obj.setDataCriacao(new Date()); obj.setCriador(autenticacao.getUsuarioCorrente()); } obj.setDataUltimaAlteracao(new Date()); obj.setUltimoAlterador(autenticacao.getUsuarioCorrente()); } protected void AppendLog(String desc) { log.Append(desc); } protected void Redirect(String url){ try { FacesContext.getCurrentInstance().getExternalContext().redirect( url); } catch (IOException ex) { Logger.getLogger(ControllerBase.class.getName()).log(Level.SEVERE, null, ex); } } public void setConfiguracao(String chave, String valor) { configuracao.set(chave, valor); AppendLog("Alterando configuração global" + chave + " = " + valor); } public void setConfiguracao(Pessoa usr, String chave, String valor) { configuracao.setLocal(chave, valor); AppendLog("Alterando configuração de usuário " + chave + " = " + valor); } public String getConfiguracao(String chave) { return configuracao.get(chave); } public String getAssunto() { return assunto; } public void setAssunto(String assunto) { this.assunto = assunto; } public String getMensagem() { return mensagem; } public void setMensagem(String mensagem) { this.mensagem = mensagem; } public List<Pessoa> getDestinatarios() { return destinatarios; } public void setDestinatarios(List<Pessoa> destinatarios) { this.destinatarios = destinatarios; } public void enviarMensagem() { int sucesso = 0, erro = 0; String erros = ""; for(Pessoa p : destinatarios){ if(mail.enviar(p.getEmail(), assunto, mensagem)){ sucesso++; } else { erro++; erros += p.getEmail() + ","; } } Mensagem("Confirmação", sucesso +" e-mails enviados com sucesso!\n" + erro + " enviados com falha:\n " + erros); } public void setSessao(String key, Entidade obj) { if(sessao == null) return; if (obj != null && obj.getId() != null) { sessao.put(key, obj.getId().toString()); } else { sessao.delete(key); } } public void setSessao(String key, Date obj) { if(sessao == null) return; if (obj != null) { sessao.put(key, DateFormat.getInstance().format(obj)); } else { sessao.delete(key); } } public void setSessao(String key, String obj) { if(sessao == null) return; if (obj != null) { sessao.put(key, obj); } else { sessao.delete(key); } } public Entidade getSessao(String key, Repositorio dao) { if(sessao == null) return null; String tmp = sessao.get(key); if (tmp != null && !tmp.isEmpty()) { return (Entidade) dao.Abrir(Long.parseLong(tmp)); } return null; } public Date getSessaoData(String key) { if(sessao == null) return null; String tmp = sessao.get(key); if (tmp != null && !tmp.isEmpty()) { try { return DateFormat.getInstance().parse(tmp); } catch (ParseException ex) { Logger.getLogger(ControllerBase.class.getName()).log(Level.SEVERE, null, ex); } } return null; } public String getSessao(String key) { if(sessao == null) return null; return sessao.get(key); } }