/*
 * Global.java
 *
 * Created on November 23, 2007, 10:08 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package global;

import analiseacidentestrabalho.Utilizador;
//import com.sun.org.apache.bcel.internal.generic.GETFIELD;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import utils.JSFUtils;

/**
 *
 * @author lluis2
 */
public class Global {
    public final static int ESTADO_SEG = 1;
    public final static int ESTADO_RH1 = 2;    
    public final static int ESTADO_HS = 3;     
    public final static int ESTADO_RH2 = 4;  
    //public final static int ESTADO_MEDICINA = 5;      
    public final static int ESTADO_CONSOLIDACAO = 5;          
    //public final static int ESTADO_ASSINATURAS = 7;            
    public final static int ESTADO_ASSINATURA_SEG = 6;        
    public final static int ESTADO_ASSINATURA_RH = 7;            
    //public final static int ESTADO_IMPRESSAO = 8;        
    public final static int ESTADO_FECHAR = 8;        
    public final static int ESTADO_CONCLUIDO = 9;  
    
    
    public final static int ESTADO_ASSINATURA_1 = 1;            
    public final static int ESTADO_ASSINATURA_2 = 2;                
    public final static int ESTADO_ASSINATURA_3 = 3; 
    
    public final static int TIPO_UTILIZADOR_SEGURANCA = 1;
    public final static int TIPO_UTILIZADOR_RH = 2;    
    public final static int TIPO_UTILIZADOR_HS = 3;    
    public final static int TIPO_UTILIZADOR_MEDICO = 5;    
    public final static int TIPO_UTILIZADOR_GESTOR = 6;    
    public final static int TIPO_UTILIZADOR_DIRECTOR_GERAL_RH = 7;    
    public final static int TIPO_UTILIZADOR_DIRECTOR_SIPRP = 8; 
    public final static int TIPO_UTILIZADOR_DIRECTOR_LOJA = 9; 
    public final static int TIPO_UTILIZADOR_DIRECTOR_NACIONAL_SEGURANCA = 10;     
    
    public final static int AUCHAN = 32; 
    
    
    public final static String SERVIDOR_SMTP = "smtp.netcabo.pt";
    public final static String SERVIDOR_SMTP_PASSWORD = "EVOLUTE";    
    public final static String ENDERECO_ENVIO = "acidentes.auchan@siprp.pt";
    //public final static String ENDERECO_ENVIO = "lluis@evolute.pt";    //testes
    
    public final static String IMAGE_FOLDER = "/home/siprp/imagens_acidentes";    
    //public final static String IMAGE_FOLDER = "/home/lluis/imagens_acidentes";        
    public final static String RESOURCES_IMAGE_FOLDER = "/resources/images";  
    
    public static final String PDF_FOLDER_URL = "/resources/pdf"; 
    
    
    //public static final String PLANOS_ACTUACAO_URL = "http://localhost:8084/PlanosActuacao/faces/ListaPlanos.jsp";  //testes
    //public static final String PLANOS_ACTUACAO_URL = "http://192.168.111.24:8084/PlanosActuacao/faces/ListaPlanos.jsp";  //testes portatil
    public static final String PLANOS_ACTUACAO_URL = "https://www.siprp.pt/PlanosActuacao/faces/ListaPlanos.jsp";  //real
    
    public static final String LOGOS_FOLDER = "/resources/images";  
    
    /** Creates a new instance of Global */
    public Global() {
    }
    
    public void copyImage(File fSource, File fDest)
    {
        try
        {
            InputStream in = new FileInputStream(fSource);
            OutputStream out = new FileOutputStream(fDest);

            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();                    
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
    
    public void deleteFolderFiles(File folder)
    {
        File files[] = folder.listFiles();
        for(int i=0;i<files.length;i++)  
        {
            if(files[i].isFile())
            {
                files[i].delete();
            }
        }
    }
    
    public void showPdf(String pdfFilePath) throws Exception
    {
        
         File pdfFile = new File(pdfFilePath);
         FileInputStream fis = new FileInputStream(pdfFile);   
         byte[] buf = new byte[(int)pdfFile.length()];  
         while ((fis.read(buf)) > 0)
         {  
             //fos.write(buf, 0, buf.length);  
         }  
         fis.close();
        FacesContext ctx = FacesContext.getCurrentInstance();
        if (!ctx.getResponseComplete())
        {         
            HttpServletResponse response = (HttpServletResponse)ctx.getExternalContext().getResponse();
            String contentType = "application/pdf";            
            response.setContentType(contentType);
            response.setHeader("Content-Disposition","attachment;filename=\"" + "Ajuda.pdf" + "\"");

            ServletOutputStream out = response.getOutputStream();

            //out.write(model.getInfo().getBytes());
            out.write(buf, 0, buf.length); 
            out.flush();
            out.close();
            ctx.responseComplete();  
            ctx.release();
        }
    }   
    
    public static void redirectToPlanos(FacesContext fc, Utilizador currentUser)
    {
        String curUser = "?user=" + currentUser.getId().toString();
        String estab = "";
        if(currentUser.getTipo().intValue() == Global.TIPO_UTILIZADOR_GESTOR)
        {
            //obtem estabelecimento da lista de estabelecimentos
            estab = "&estab_gestor=" + currentUser.getEstabelecimento_gestor().intValue();
        }
        fc = fc.getCurrentInstance();
        try
        {
            JSFUtils.redirect(fc, Global.PLANOS_ACTUACAO_URL + curUser + estab);
            //JSFUtils.dispatch(fc, Global.PLANOS_ACTUACAO_URL + curUser);                        
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        
    }
    
}
