package gastostarjetaServlet;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.StringTokenizer;

import javax.servlet.http.HttpSession;

import m05bClasses.m05bComun;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;


/**
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (17/06/05)
 */
public class m05bVerificarGastosTarjServlet extends javax.servlet.http.HttpServlet {m05bFileLog miLog = new m05bFileLog();
/**
 * Process incoming HTTP POST requests
 *
 * @param request Object that encapsulates the request to the servlet
 * @param response Object that encapsulates the response from the servlet
 */
	java.sql.Connection conn=null;
	
    String persona = "";
    m05bComun miComun = new m05bComun();
    
public void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {

	performTask(request, response);

}
/**
 * Returns the servlet info string.
 */
public String getServletInfo() {

	return super.getServletInfo();

}
/**
 * Initializes the servlet.
 */
public void init() {
	// insert code to initialize the servlet here
}

/**
 * Actualiza la ubicacion del vehículo.
 */
public void fncVerificar(String codigo, String km, String litros, String verificacion, String matricula, String fecha) 
		throws java.lang.Exception {

       String sql;
	   PreparedStatement pstmt = null;
	   String sKm3="";

       try {
	            miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "LITROS: " + litros, m05bConstantes.LOG_NIVEL_BAJO);
       	   
				sql = "update " + m05bConstantes.TAB_OPEBANCOS +
						" set " + m05bConstantes.COL_18_KM + " = " + km +
						" , " + m05bConstantes.COL_18_LITROS + " = " + litros + 
						" , " + m05bConstantes.COL_18_VERIFIC + " = '" + verificacion + "'" +
						" where "+ m05bConstantes.COL_18_CONTROL +" = '" + codigo + "'" ;

				pstmt = conn.prepareStatement(sql);
				pstmt.executeUpdate();
				// Actualizar los km y la fecha actuales del vehiculo
				if ((km==null)||(km.equals(""))){
				 	 sKm3 = "0";
				     sKm3=miComun.ImportesABasedatos(sKm3);
		       }else{
		       	sKm3=km;
		       }				
			    sql="update	" + m05bConstantes.TAB_VEHICULOS +
						" set " + m05bConstantes.COL_34_KMACTUALES + " = " + sKm3 + 
						" ,  " + m05bConstantes.COL_34_FKMACT + "= TO_DATE ('" + fecha + "','dd/mm/yyyy') " +
						" where " + m05bConstantes.COL_34_MATRICULA + " = '" + matricula + "' AND TO_CHAR("+
			            m05bConstantes.COL_34_FKMACT+",'YYYY/mm/dd')<=TO_CHAR(TO_DATE('"+fecha+"','dd/mm/yyyy'),'yyyy/mm/dd') AND  "+m05bConstantes.COL_34_KMACTUALES +
				        "<='"+sKm3+"'";
				
				pstmt = conn.prepareStatement(sql);
				pstmt.executeUpdate();
	   } catch (Exception ex) {
	   	   		miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "fncVerificar2 - EXCEPTION: " + ex.toString(), m05bConstantes.LOG_NIVEL_BAJO);
	  			throw new Exception(ex);
	   } 	finally{
				if (pstmt != null)
					pstmt.close();
	   }
}  // Fin funcion fncVerificar

/**
 * Process incoming requests for information
 *
 * @param request Object that encapsulates the request to the servlet
 * @param response Object that encapsulates the response from the servlet
 */
public void performTask(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) {

       String sRegistro, sCodigo, sKm, sLitros, sVerificacion, sFecha, sLista, sURL="", sTipo="", sMatricula="",sConceptos="";
       
	   

       try  {
	        HttpSession session = request.getSession(true);
       	    persona = (String)session.getAttribute("persona");
       	   
            sMatricula = request.getParameter("Matricula");

            sLista = request.getParameter("listaBD");
            
            sTipo = request.getParameter("Tipo")== null?"T":request.getParameter("Tipo");
            sConceptos = request.getParameter("Conceptos")== null?"":request.getParameter("Conceptos");
            
			m05bConexion miConex = new m05bConexion();
			conn = miConex.getConnection();
			conn.setAutoCommit(false);  // Al final si todo ha ido bien se hace commit
            
			String delimReg= "@", delimDato="#";
			StringTokenizer stReg = new StringTokenizer(sLista,delimReg);
			while (stReg.hasMoreTokens()) {
			         sRegistro=stReg.nextToken();
					 sCodigo=""; sKm=""; sLitros=""; sVerificacion="";
					 StringTokenizer stDato = new StringTokenizer(sRegistro,delimDato);
					 if (stDato.hasMoreTokens()) {
				         sCodigo=stDato.nextToken();
						 sKm=stDato.nextToken();
						if ((sKm.equals("null"))||(sKm.equals("")))		
							sKm=null;
						else
                         sKm=miComun.ImportesABasedatos(sKm);
						 sLitros=stDato.nextToken();
						 if ((sLitros.equals("null"))||(sLitros.equals("")))		
							 sLitros=null;
						 sVerificacion=stDato.nextToken();
						 sFecha=stDato.nextToken();
					 	 fncVerificar(sCodigo, sKm, sLitros, sVerificacion, sMatricula, sFecha);
			         }  // Fin if
			}  // Fin while
			//Si todo ha ido bien se actualizan los cambios en la BD
		    conn.commit();

			sURL = "m05bVehGastosJsp.jsp?Matricula=" + sMatricula + "&Habilitar=false&Mensaje=true&Tipo=" +sTipo+"&Conceptos="+sConceptos;
			response.sendRedirect(sURL);
		} 	catch (Exception SQLException) {
					try {
			  			conn.rollback();  // Ha habido problemas, se deshacen todos los cambios
			  		} catch (SQLException e1){
			   	   		miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "EXCEPTION-E1: OutletMaintenanceS.service: PERFORM TASK-1 - " + e1, m05bConstantes.LOG_NIVEL_BAJO);
			  		}
					miLog.addTraza(SQLException);
		}	catch(Throwable theException) {
					// uncomment the following line when unexpected exceptions
					// are occuring to aid in debugging the problem.
					miLog.addTraza(theException);
		} 	finally {
					if (conn != null) {
						try {
				  			conn.close();
				  		} catch (SQLException e2){
				   	   		miLog.addTraza(m05bConstantes.LOG_NO_USER, m05bConstantes.LOG_NO_SRC, "EXCEPTION-E1: OutletMaintenanceS.service: PERFORM TASK-2 - " + e2, m05bConstantes.LOG_NIVEL_BAJO);
				  		}
				  	} // Fin if
		}  // Fin finally
	
}  // Fin performTask
	
}// Fin m05bModificarGastosTarjetaServlet