You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SIPRP/trunk/PlanosActuacao/src/java/planosactuacao/EnviarCorrecao.java

385 lines
13 KiB

/*
* EnviarCorrecao.java
*
* Created on Nov 13, 2008, 11:26:00 AM
*/
package planosactuacao;
import com.evolute.utils.error.ErrorLogger;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.StaticText;
import com.sun.webui.jsf.component.TextArea;
import com.sun.webui.jsf.model.Option;
import db.entidades.PlanoActuacao;
import db.entidades.Utilizador;
import db.providers.PlanosDataProvider;
import db.providers.UtilizadoresDataProvider;
import global.Global;
import java.util.List;
import java.util.ListIterator;
import javax.faces.FacesException;
import javax.faces.event.ValueChangeEvent;
import mail.Mail;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*
* @author lluis
*/
public class EnviarCorrecao extends AbstractPageBean
{
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception
{
}
private StaticText lblMsg = new StaticText();
public StaticText getLblMsg()
{
return lblMsg;
}
public void setLblMsg(StaticText st)
{
this.lblMsg = st;
}
private TextArea txtObservacoes = new TextArea();
public TextArea getTxtObservacoes()
{
return txtObservacoes;
}
public void setTxtObservacoes(TextArea ta)
{
this.txtObservacoes = ta;
}
private DropDown drpIrPara = new DropDown();
public DropDown getDrpIrPara()
{
return drpIrPara;
}
public void setDrpIrPara(DropDown dd)
{
this.drpIrPara = dd;
}
private Button butCancelar = new Button();
public Button getButCancelar()
{
return butCancelar;
}
public void setButCancelar(Button b)
{
this.butCancelar = b;
}
private Button butEnviar = new Button();
public Button getButEnviar()
{
return butEnviar;
}
public void setButEnviar(Button b)
{
this.butEnviar = b;
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public EnviarCorrecao()
{
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
@Override
public void init()
{
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try
{
_init();
}
catch (Exception e)
{
ErrorLogger.logException( e );
log("EnviarCorrecao Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
}
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess()
{
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
@Override
public void prerender()
{
initialize();
lblMsg.setText(getSessionBean1().getMsg());
getSessionBean1().setMsg("");
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
@Override
public void destroy()
{
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1()
{
return (SessionBean1) getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected ApplicationBean1 getApplicationBean1()
{
return (ApplicationBean1) getBean("ApplicationBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1()
{
return (RequestBean1) getBean("RequestBean1");
}
public void drpIrPara_processValueChange(ValueChangeEvent event)
{
}
private void initialize()
{
Utilizador u = getSessionBean1().getCurrentUser();
com.sun.webui.jsf.model.Option[] listOptions = null;
if(u.getTipo().intValue() == Global.DIRECTOR_LOJA)
{
listOptions = new com.sun.webui.jsf.model.Option[1];
listOptions[0] = new Option(new Integer(Global.FASE_SEGURANCA_PREENCHIMENTO), "Respons<6E>vel de seguran<61>a");
}
else if(u.getTipo().intValue() == Global.DIRECTOR_NACIONAL_SEGURANCA)
{
listOptions = new com.sun.webui.jsf.model.Option[2];
listOptions[0] = new Option(new Integer(Global.FASE_SEGURANCA_PREENCHIMENTO), "Respons<6E>vel de seguran<61>a");
listOptions[1] = new Option(new Integer(Global.FASE_DIR_LOJA_VALIDACAO), "Director de loja");
}
getSessionBean1().setIrParaOptions(listOptions);
getSessionBean1().setIrParaChoice(new Integer( Global.FASE_SEGURANCA_PREENCHIMENTO ));
//drpIrPara.setItems(listOptions);
//drpIrPara.setSelected(new Integer( Global.FASE_SEGURANCA_PREENCHIMENTO ));
}
public String butCancelar_action()
{
return "editar_plano";
}
public String butEnviar_action()
{
Utilizador u = getSessionBean1().getCurrentUser();
// PlanosDataProvider pdp = new PlanosDataProvider();
PlanoActuacao p = getSessionBean1().getPlanoActuacao();
p.setFase_anterior( p.getFase() );
int dns_next_fase = 0;
int fase = 0;
Integer irPara = ( Integer ) drpIrPara.getSelected();
fase = irPara.intValue();
if ( u.getTipo().intValue() == Global.DIRECTOR_LOJA )
{
p.setValidacao_director_loja( new Boolean( false ) );
}
else if ( u.getTipo().intValue() == Global.DIRECTOR_NACIONAL_SEGURANCA )
{
p.setValidacao_dns( new Boolean( false ) );
}
p.setCorrecao( "y" );
p.setFase_antes_correcao( p.getFase() );
p.setFase( new Integer( fase ) );
String observacoes = "";
if ( txtObservacoes.getText() != null )
{
if ( u.getTipo().intValue() == Global.DIRECTOR_LOJA )
{
observacoes = "Observa&ccedil;&otilde;es do Director de Loja:&nbsp;";
}
else if ( u.getTipo().intValue() == Global.DIRECTOR_NACIONAL_SEGURANCA )
{
observacoes = "Observa&ccedil;&otilde;es do Director Nacional de Seguran&ccedil;a:&nbsp;";
}
observacoes += ( String ) txtObservacoes.getText();
p.setObs_correcao( observacoes );
}
try
{
PlanosDataProvider pdp = PlanosDataProvider.getInstance();
pdp.updatePlano( p );
enviarMail( p );
return "lista_planos";
}
catch ( Exception ex )
{
ErrorLogger.logException( ex );
getSessionBean1().setMsg( "Erro no envio do plano para a fase " + Global.FASES_TEXTO[ fase - 1 ] );
}
return null;
}
private void enviarMail( PlanoActuacao p )
{
String assunto = "";
String mail_text = "";
int fase = p.getFase().intValue();
int tipo_utilizador = 0;
switch( fase )
{
case Global.FASE_SEGURANCA_PREENCHIMENTO :
tipo_utilizador = Global.RESPONSAVEL_SEGURANCA;
assunto = "Plano de Actuação da Avaliação de Riscos de " + p.getData_visita_str() + " - Pedido de Correcção";
mail_text = "<p>Exmo. (a) Senhor (a),</p>";
mail_text += "<p>O Plano de Actua&ccedil;&atilde;o referente &agrave; auditoria de Avalia&ccedil;&atilde;o de Riscos Laborais realizada no passado dia " + p.getData_visita_str() + " foi devolvido para correc&ccedil;&atilde;o.</p>";
mail_text += "<p>Proceda, por favor, em www.siprp.com &agrave;(s) respectiva(s) correc&ccedil;&atilde;o(&otilde;es) de acordo com as indica&ccedil;&otilde;es e volte a reenviar o processo para a fase seguinte.</p>";
mail_text += "<p>Caso tenha alguma d&uacute;vida ou necessite de qualquer esclarecimento, contacte, por favor, a &Aacute;rea T&eacute;cnica da SIPRP atrav&eacute;s do telefone 213 504 540.</p>";
mail_text += "<p>Cumprimentos,</p>";
mail_text += "<p>A equipa da SIPRP</p>";
mail_text += "<p><center><b>Por favor n&atilde;o responda a esta mensagem, dado tratar-se de um e-mail autom&aacute;tico</b></center></p>";
break;
case Global.FASE_DIR_LOJA_VALIDACAO :
tipo_utilizador = Global.DIRECTOR_LOJA;
assunto = "Plano de Actuação da Avaliação de Riscos de " + p.getData_visita_str() + " - Pedido de Correcção";
mail_text = "<p>Exmo. (a) Senhor (a),</p>";
mail_text += "<p>O Plano de Actua&ccedil;&atilde;o referente &agrave; auditoria de Avalia&ccedil;&atilde;o de Riscos Laborais realizada no passado dia " + p.getData_visita_str() + " foi devolvido para correc&ccedil;&atilde;o.</p>";
mail_text += "<p>Proceda, por favor, em www.siprp.com &agrave;(s) respectiva(s) correc&ccedil;&atilde;o(&otilde;es) de acordo com as indica&ccedil;&otilde;es do Director Nacional de Seguran&ccedil;a e volte a reenviar o processo para a fase seguinte.</p>";
mail_text += "<p>Cumprimentos.</p>";
mail_text += "<p><center><b>Por favor n&atilde;o responda a esta mensagem, dado tratar-se de um e-mail autom&aacute;tico</b></center></p>";
break;
}
String responsavel_loja = "n";
if ( tipo_utilizador == Global.RESPONSAVEL_SEGURANCA )
{
responsavel_loja = "y";
}
try
{
Mail mail = new Mail();
UtilizadoresDataProvider udp = UtilizadoresDataProvider.getInstance();
List< Utilizador > list = udp.getUtilizadoresListByTipo( tipo_utilizador, responsavel_loja, p.getEstabelecimento_id() );
ListIterator iter = list.listIterator();
while ( iter.hasNext() )
{
Utilizador u = ( Utilizador ) iter.next();
System.out.println( "USER MAIL NEXT FASE : " + u.getLogin() + " ; " + u.getEmail() );
try
{
mail.send( u.getEmail(), Mail.ENDERECO_ENVIO, assunto, mail_text );
System.out.println( "EMAIL ENVIADO !!" );
}
catch ( Exception ex1 )
{
ErrorLogger.logException( ex1 );
System.out.println( "MAIL ERROR : " + ex1.getMessage() );
}
}
}
catch ( Exception ex )
{
ErrorLogger.logException( ex );
}
}
}