package com.fitbank.servlet;

import com.fitbank.homebanking.HBParam;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;


public class LoadServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;
    private String error = "";
        
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        try  {
            String text = "";
            String button = "";
            String extra = "";
            out.println("<body class=\"tundra\" id='container'>");
            out.println("<style type=\"text/css\">");
            out.println("@import \"dojo-release-1.0.2/dojo/resources/dojo.css\";");
            out.println("@import \"dojo-release-1.0.2/dijit/themes/bc/tundra.css\";");
            out.println("@import \"css/app.css\";");
            out.println("@import \"${u_site}/css/required.css\";");
            out.println("</style>");
            out.println("<table width=\"100%\"><tr><td width=\"80%\" valign=\"top\">");
            out.println("<br>");
            out.println("<center><br>");
            out.println("<div style=\"width:90%;\" class=\"titleTransaction\">Carga de Archivo</div>");
            out.println("</br></center>");
            out.println("");
            out.println("<form name=\"frm\" id=\"frm\">");
            if( procesaFicheros(req) ){
                text = "Carga Satisfactoria";
                button = " onClick=\"javascript:top.showPage('18610001_1.jsf');\" value=\"Siguiente\" ";
                extra = "&nbsp;&nbsp;&nbsp;" +
                        "<input type=\"button\" class=\"dijitStretch dijitButtonNode dijitButtonContents\" " +
                        " onClick=\"javascript:top.showPage('18610001.jsf');\" value=\"Cancelar\"></input>";
            }else{
                text = "Se ha producido un error interno. Por favor vuelva a intentar. <br><br>" + error;
                button = " onClick=\"javascript:top.showPage('18610001.jsf');\" value=\"Volver a Cargar\" ";
            }
            out.println("<center>" +
                        "<table class=\"ta\" cellpadding=\"0\" cellspacing=\"2\" align=\"center\" style=\"width:500px;\">" +
                        "<tr><td style=\"width:500px;height:20px;\"><br><br>" + text + "<br><br></td></tr></table></center>");
            out.println("<p align=\"center\"><input type=\"button\" class=\"dijitStretch dijitButtonNode dijitButtonContents\" " +
                        button + "></input>"+extra+"</p>");
            out.println("<br><br><br><center>" + 
                        "<table class=\"ta\" cellpadding=\"0\" cellspacing=\"2\" align=\"center\" style=\"width:500px;\">" + 
                        "<tr>" + 
                        "<td style=\"width:500px;height:20px;\" valign=\"top\" colspan=\"5\">" + 
                        "............................................................................................................................................................" + 
                        "</td>" + 
                        "</tr>" +
                        "<tr>" + 
                        "<td style=\"width:30%;height:10px;\"><b>Paso 1:</b>&nbsp;Selección de Archivo</td>" + 
                        "<td style=\"width:30%;height:10px;color:#FF0000\"><b>&gt;&gt;Paso 2:</b>&nbsp;Carga de Archivo</td>" + 
                        "<td style=\"width:30%;height:10px;\"><b>&gt;&gt;Paso 3:</b>&nbsp;Registro de Planilla</td>" + 
                        "</tr>" + 
                        "<tr>" + 
                        "<td style=\"width:500px;height:1px;\" colspan=\"5\">" + 
                        "............................................................................................................................................................" + 
                        "</td>" + 
                        "</tr>" + 
                        "</table>" + 
                        "</center>" + 
                        "<br>" +
                        "<center>" + 
                        "<br>" + 
                        "<div style=\"width:90%;\" class=\"glosaTransaction\">" + 
                        "&nbsp;" + 
                        "</div>" + 
                        "</br>" + 
                        "</center>");
            
            out.println("</td><td width=\"20%\" valign=\"top\">");
            out.println("<center><iframe src=\"marketing.jsp\" frameborder=\"0\" scrolling=\"no\" width=\"180px\" height=\"600px\"/></center>");
            out.println("</td></tr></table>");
            out.println("</form>");
            out.println("</body>");
            resp.setCharacterEncoding("iso88591");
            resp.setContentType("text/html; charset=windows-1252");
            resp.setHeader("Pragma", "no-cache");
            resp.setHeader("Cache-Control", "no-cache");
        } catch (Exception ex)  {
            ex.printStackTrace();
        } finally  {
            out.close(); 
        }
    }

    public boolean procesaFicheros(HttpServletRequest req) {
        boolean flag = false;
        boolean flag_file = false;
        try {
            DiskFileUpload fu = new DiskFileUpload();
            fu.setSizeMax(1024*1024);
            fu.setSizeThreshold(1024*1024);
            fu.setRepositoryPath(HBParam.getInstance().getStringValue("upload.path"));
            List fileItems = fu.parseRequest(req);
            if(fileItems == null){
                flag = false;
                error = "No se seleccionó ningún archivo";
            }
            Iterator i = fileItems.iterator();
            FileItem actual = null;
            while (i.hasNext()){
                actual = (FileItem)i.next();
                String fileName = actual.getName();
                if(fileName != null && fileName.indexOf(".txt") != -1){
                    File fichero = new File(fileName);
                    Object cusuario = req.getSession().getAttribute("CUSUARIO");
                    flag_file = true;
                    if( cusuario != null && cusuario.toString().compareTo("") != 0 ){
                        String name = cusuario.toString();
                        fichero = new  File(HBParam.getInstance().getStringValue("upload.path") + name + ".txt");
                        actual.write(fichero);
                        flag = true;
                        break;
                    }else{
                        flag = false;
                        error = "El Usuario no se encuentra en Sesión";
                    }
                }
            }
            if(!flag_file){
                error = "No seleccionó un archivo con extensión válida.";
            }
        }
        catch(Exception e) {
            e.printStackTrace();
            error = e.getMessage();
            flag = false;
        }
        return flag;
    }
    
}
