package revisionServlet;

import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Locale;

import javax.servlet.http.HttpSession;

import m05bBD.m05bRevision;
import m05bClasses.m05bComun;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;
/**
 * Date: Apr 22, 2004
 */
    
public class m05bGrabarRevisionServlet 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
 */
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

}
/**
 * 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 sCodigo, sDescripcion, sMatricula="";
       	String sFecha, sFecPre="",sFecPre2="", sRealiza, sKmpre, sKmre, sOrden,sImporte;
       	String accion, Ordenes, sMes;
       	String sql = "";
       	HttpSession session = request.getSession(true);
		Locale idiomaLocal = (Locale)session.getAttribute("Local");
		String idiomaSes = ((idiomaLocal.getLanguage()==null)?"es":idiomaLocal.getLanguage());	
	
        String campoTexto="C";
        String forFecha="dd/mm/yyyy";
        if(!idiomaSes.equals("es")){
			campoTexto="E";
			forFecha="yyyy/mm/dd";
        }
      
		java.sql.Connection conn=null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		boolean bGrabar=true;

       try	{
		
	        m05bRevision revision = (m05bRevision)session.getAttribute("m05bRevision");
	        m05bComun comun = new m05bComun();
	        m05bFileLog miLog = new m05bFileLog();
	        String persona = (String)session.getAttribute("persona");

			sCodigo = request.getParameter("Codigo");
			sDescripcion=request.getParameter("Descripcion");
			if ( sDescripcion == null)
				sDescripcion="";
			else
				sDescripcion.toUpperCase();
		    sMatricula = request.getParameter("Matricula");
		    
		    sFecha = request.getParameter("Fecha");
        	miLog.addTraza(persona, "Grabar Revision","FECHA: " + sFecha, m05bConstantes.LOG_NIVEL_BAJO);
		    /*if (sFecha == null)
		    	sFecha = "";
		    else
		    	sFecha= comun.FechaBD(sFecha,"00:00");*/
		    
		    sRealiza = request.getParameter("Realizada");
		    if (sRealiza==null)
		         sRealiza="N";
		    sKmpre=request.getParameter("KmProxRevision");
		    if (sKmpre==null || sKmpre.equals(""))	{	    
		    	sKmpre="0";
		    }		    
       		sKmpre=comun.ImportesABasedatos(sKmpre);
		    sKmre=request.getParameter("KmRevision");
		    if (sKmre==null || sKmre.equals(""))	{	    
		    	sKmre="0";
		    }		  		    
       		sKmre=comun.ImportesABasedatos(sKmre);
			sMes=request.getParameter("RevMes");
		    sFecPre=request.getParameter("FechaProx");
		    //sFecPre2=request.getParameter("FechaProx");
		    sImporte=request.getParameter("Importe");
		    if (sImporte==null || sImporte.equals(""))	{	    
		    	sImporte="0";
		    }
		    sImporte=comun.ImportesABasedatos(sImporte);
			if (sMes == null)
				sFecPre = null;
		    if (sFecPre == null)
		    	sFecPre = "";
		    else  {
		    	//Debería hacerlo únicamente cuando la fecha Prox. rev. sea diferente de vacia
		    	if(sFecPre==null || sFecPre.trim().equals(""))
		    		sFecPre=comun.addMesFechaCorta(comun.FechaBD(sFecha,"00:00",campoTexto),Integer.parseInt(sMes),campoTexto);
		    	miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","FECHA PRE: " + sFecPre, m05bConstantes.LOG_NIVEL_BAJO);
		    	//sFecPre= comun.FechaBD(sFecPre,"00:00");
		    }
		    
		    sOrden=request.getParameter("NOrden");
	    	miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","sOrden:" + sOrden, m05bConstantes.LOG_NIVEL_BAJO);		    
		    if (sOrden==null)
		          sOrden="";   
		    Ordenes=request.getParameter("Ordenes")==null?"":request.getParameter("Ordenes");
			accion=request.getParameter("Accion");

			if (!(Ordenes.equals("S"))) {
				revision.setRevi_cod(sCodigo);
				revision.setRevi_fecprox(sFecPre);
				revision.setRevi_kmre(sKmre);
				revision.setRevi_kmpre(sKmpre);
				//sRealiza="S";
				revision.setRevi_realiza(sRealiza);
				revision.setRevi_fecha(sFecha);
				revision.setRevi_matricula(sMatricula);
				revision.setRevi_descrip(sDescripcion);
			}

			try{
				m05bConexion miConex = new m05bConexion();
				conn = miConex.getConnection();
	        	miLog.addTraza(m05bConstantes.LOG_NO_USER, "sImporte","sImporte"+sImporte, m05bConstantes.LOG_NIVEL_BAJO);				
				if (accion.equals(m05bConstantes.ACC_ACTUALIZAR))  {
					pstmt = conn.prepareStatement(
						"update " + m05bConstantes.TAB_REVISIONES +
						" set "+	m05bConstantes.COL_35_DESC + " = ? " +
	                    "," + m05bConstantes.COL_35_MATRICULA + " = ? "+
	                    "," + m05bConstantes.COL_35_FECHA + " = TO_DATE (?,'"+forFecha+"')"+
	                    "," + m05bConstantes.COL_35_FECPRE + " = TO_DATE (?,'"+forFecha+"')"+
	                    "," + m05bConstantes.COL_35_REALIZA + " = ? "+
	                    "," + m05bConstantes.COL_35_KMPRE + " = ? "+
	                    "," + m05bConstantes.COL_35_KMRE + " = ? "+
	                    "," + m05bConstantes.COL_35_IMPORTE + " = ? "+
						" where	"+m05bConstantes.COL_35_CODIGO + " = " + sCodigo );
					pstmt.setString(1, sDescripcion);
					pstmt.setString(2, sMatricula);
	                pstmt.setString(3,sFecha);
	                pstmt.setString(4,sFecPre);
	                pstmt.setString(5,sRealiza);
	                pstmt.setString(6,sKmpre);
	                pstmt.setString(7,sKmre);
	                pstmt.setString(8,sImporte);
					pstmt.executeUpdate();
				}
				else if (accion.equals(m05bConstantes.ACC_INSERTAR))  {
					// Solo puede haber una revision sin realizar por matricula
					//if (sRealiza == "N") {
			        	//miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","NO REALIZADA", m05bConstantes.LOG_NIVEL_BAJO);
						//sql = "select " + m05bConstantes.COL_35_CODIGO + ", to_char(" + m05bConstantes.COL_35_FECPRE +",'"+forFecha+"')"+
								//", " 	+ m05bConstantes.COL_35_KMRE + ", " + m05bConstantes.COL_35_KMPRE + 
								//", " 	+ m05bConstantes.COL_35_REALIZA + ", to_char(" + m05bConstantes.COL_35_FECHA +",'"+forFecha+"')"+
								//", " 	+ m05bConstantes.COL_35_MATRICULA + ", " + m05bConstantes.COL_35_DESC + 
								//" from " + m05bConstantes.TAB_REVISIONES + 
								//" where	"+m05bConstantes.COL_35_MATRICULA + " = '" + sMatricula + "'" +
								//" and " + m05bConstantes.COL_35_REALIZA + " = 'N'";
						//miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","NO REALIZADA", m05bConstantes.LOG_NIVEL_BAJO);						
				       //pstmt = conn.prepareStatement(sql);
					   //rs = pstmt.executeQuery();
					   //if (rs.next() == true){
					   	   		//sCodigo=rs.getString(1);
								//revision.setRevi_cod(sCodigo);
								//revision.setRevi_fecprox(rs.getString(2));
								//revision.setRevi_kmre(rs.getString(3));
								//revision.setRevi_kmpre(rs.getString(4));
								//revision.setRevi_realiza(rs.getString(5));
								//revision.setRevi_fecha(rs.getString(6));
								//revision.setRevi_matricula(rs.getString(7));
								//revision.setRevi_descrip(rs.getString(8));
								//bGrabar=false;
					        	//miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","YA HAY UNA REVISION NO REALIZADA PARA ESE VEHICULO: " + sCodigo, m05bConstantes.LOG_NIVEL_BAJO);
		       	    			//response.sendRedirect("m05bRevisionJsp.jsp?Codigo=" + sCodigo + "&Mensaje=" + m05bConstantes.MSG_EXISTE);
				 	   //}
					//}
					if (bGrabar) {
					    miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","INSERT", m05bConstantes.LOG_NIVEL_BAJO);
						sql="insert into " + m05bConstantes.TAB_REVISIONES +
								" (" + m05bConstantes.COL_35_CODIGO + "," + m05bConstantes.COL_35_DESC +
			                    "," + m05bConstantes.COL_35_MATRICULA + "," + m05bConstantes.COL_35_FECHA +
			                    "," + m05bConstantes.COL_35_FECPRE + "," + m05bConstantes.COL_35_KMRE +
			                    "," + m05bConstantes.COL_35_KMPRE + "," + m05bConstantes.COL_35_REALIZA +
			                    "," + m05bConstantes.COL_35_ORDEN + "," + m05bConstantes.COL_35_IMPORTE +") " +
								" values " +
								"('" + sCodigo + "', ? , '" + sMatricula + 
								"', TO_DATE ('" + sFecha + "','"+forFecha+"'), TO_DATE ('" + sFecPre + "','"+forFecha+"') , " + sKmre + 
								", " + sKmpre + ", '" + sRealiza + "', '" + sOrden + "',"+sImporte+")" ;
					    miLog.addTraza(m05bConstantes.LOG_NO_USER, "Grabar Revision","INSERT SQL: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
		                pstmt = conn.prepareStatement(sql);
		                pstmt.setString(1, sDescripcion);
						pstmt.executeUpdate();
					}
				}
				else   {
					pstmt = conn.prepareStatement(
						"delete from 	M0535T00 " +
						" where COD_REVI_35 =  ? " );
					pstmt.setString(1, sCodigo);
					pstmt.executeUpdate();
				}
				if (!Ordenes.equals("S")) {
						response.sendRedirect("m05bRevisionJsp.jsp?Codigo=" + sCodigo + "&Mensaje=" + m05bConstantes.MSG_OK);
	      		} else {
	                    response.sendRedirect("m05bOrdenesTrabajoJsp.jsp?Codigo="+sOrden+"&Mensaje=" + m05bConstantes.MSG_OK);
	            }
			} 	catch (Exception SQLException) {
					miLog.addTraza(SQLException);
					response.sendRedirect("m05bError.jsp");
			} 	finally{
					if (pstmt != null)
						pstmt.close();
					if (rs != null)
						rs.close();
					if (conn != null)
						conn.close();
			}
	} catch(Throwable theException) {
		miLog.addTraza(theException);
		try {
			response.sendRedirect("m05bError.jsp");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			miLog.addTraza(e);
		}
	}
}
}