package ordenreparacionServlet;


import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.http.HttpSession;

import m05bBD.m05bOrdRepara;
import m05bClasses.m05bCampos;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;

public class m05bGrabarOrdenReparacionServlet 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, sCodigoAnt, sNOrden, sConcepto, sTiempo, sImporte="0", sEmpleado;
       String FEntrada="", HEntrada="";
       String sql="", accion;
	   double lImporte = 0.0;
       java.sql.Connection conn=null;
	   PreparedStatement pstmt = null;
       
       try {

			HttpSession session = request.getSession(true);
			String persona = (String) session.getAttribute("persona");
	
	        m05bOrdRepara ordrepara = (m05bOrdRepara)session.getAttribute("m05bOrdRepara");
			sCodigo = request.getParameter("CODIGO")==null?"0":request.getParameter("CODIGO");
			miLog.addTraza(persona, "Grabar Ord Repa", "CODIGO: " +  sCodigo, m05bConstantes.LOG_NIVEL_BAJO);
			ordrepara.setOrp_codigo(sCodigo);
			sCodigoAnt = request.getParameter("Codigo");
			miLog.addTraza(persona, "Grabar Ord Repa", "CODIGO ANT: " +  sCodigoAnt, m05bConstantes.LOG_NIVEL_BAJO);
			sNOrden=request.getParameter("NOrden");
			ordrepara.setOrp_orden(sNOrden);
			sConcepto=request.getParameter("Descripcion")==null?"":request.getParameter("Descripcion");
	     	ordrepara.setOrp_concepto(sConcepto);
			miLog.addTraza(persona, "Grabar Ord Repa", "CONCEPTO: " +  sConcepto, m05bConstantes.LOG_NIVEL_BAJO);
	        sTiempo=request.getParameter("Tiempo");
	        ordrepara.setOrp_tiempo(sTiempo);
	        sEmpleado=request.getParameter("Empleado");
	        ordrepara.setOrp_empleado(sEmpleado);
	        sImporte=request.getParameter("Importe")==null?"0":request.getParameter("Importe");
			// Calcular precio-hora del empleado
			m05bCampos miCampo = new m05bCampos();
			String sTarifa = miCampo.tarifaEmpl(sEmpleado)==null?"0":miCampo.tarifaEmpl(sEmpleado);
			if ( (sTarifa != null) && (sTiempo != null) && !(sTiempo.equals("")) ) {
				lImporte = Double.parseDouble(sTarifa) * Double.parseDouble(sTiempo);
			}
	        ordrepara.setOrp_importe(""+lImporte);
	        
	        accion=request.getParameter("Accion");

			FEntrada = (String) session.getAttribute("OTFEntrada");
			HEntrada = (String) session.getAttribute("OTHEntrada");

			try{
				m05bConexion miConex = new m05bConexion();
				conn = miConex.getConnection();
				if (accion.equals(m05bConstantes.ACC_ACTUALIZAR))  {
				    sql=" update	" +m05bConstantes.TAB_ORDEREPAR+
				    		" set "+m05bConstantes.COL_19_IMPORTE+"	 = " + lImporte+
		                    ", "+m05bConstantes.COL_19_CODIGO+"	 ='"+sCodigo+
		                    "', "+m05bConstantes.COL_19_CONCEPTO+" = '"+sConcepto+
		                    "', "+m05bConstantes.COL_19_TIEMPO+" = '"+sTiempo+
		                    "', "+m05bConstantes.COL_19_EMPLEADO+" = '"+sEmpleado+
				    		"'  where "+m05bConstantes.COL_19_CODIGO+"	 ='"+sCodigoAnt+
				    		"' AND "+m05bConstantes.COL_19_COD_ORD+"='"+sNOrden+"'";
		                pstmt = conn.prepareStatement(sql);
						miLog.addTraza(persona, "Grabar Ord Repa", "SQL: " +  sql, m05bConstantes.LOG_NIVEL_BAJO);
				}
				else if (accion.equals(m05bConstantes.ACC_INSERTAR))  {
					sql = "insert into " +m05bConstantes.TAB_ORDEREPAR+
						"("+m05bConstantes.COL_19_COD_ORD+","+m05bConstantes.COL_19_CODIGO+","+
	                    m05bConstantes.COL_19_CONCEPTO+","+m05bConstantes.COL_19_IMPORTE+","+
	                    m05bConstantes.COL_19_EMPLEADO+","+m05bConstantes.COL_19_TIEMPO+") " +
	                    " values " +"('"+sNOrden+"' ,'"+sCodigo+"','"+sConcepto+"',"+lImporte+
	                    " ,'"+sEmpleado+"','"+sTiempo+"' )";
					pstmt = conn.prepareStatement(sql);
					miLog.addTraza(persona, "Grabar Ord Repa", "SQL: " +  sql, m05bConstantes.LOG_NIVEL_BAJO);
				}
				else   {
					pstmt = conn.prepareStatement(
						"delete from " +m05bConstantes.TAB_ORDEREPAR+
						" where "+m05bConstantes.COL_19_CODIGO+" =  ? " +
						" AND "+m05bConstantes.COL_19_COD_ORD+" = ?");
					pstmt.setString(1, sCodigoAnt);
					pstmt.setString(2, sNOrden);
				}
				pstmt.executeUpdate();

		    	// Llamar a funcion que actualiza importes de reparaciones y OT
				miCampo.actImporteOT(sNOrden,sCodigo,""+lImporte);
				    				
				
				//response.sendRedirect("m05bVehOrdRepaJsp.jsp?NOrden="+sNOrden + "&FEntrada=" + FEntrada + "&HEntrada=" + HEntrada);
				if(sEmpleado != null && !sEmpleado.equals("") && !accion.equals(m05bConstantes.ACC_ELIMINAR)){
					response.sendRedirect("m05bOrdRepaJsp.jsp?Codigo=&Empleado=" +sEmpleado + "&Mensaje=false&NOrden=" +sNOrden +"&FEntrada=" + FEntrada + "&HEntrada=" + HEntrada);
				}else{
					if(accion != null && accion.equals(m05bConstantes.ACC_ELIMINAR)){
						response.sendRedirect("m05bVehOrdRepaJsp.jsp?NOrden=" + sNOrden + "&FEntrada=" + FEntrada + "&HEntrada=" + HEntrada);	
					}else{
						response.sendRedirect("m05bOrdRepaJsp.jsp?Codigo=&Mensaje=false&NOrden=NOrden");
					}	
				}	

			} 	catch (SQLException ex1) {
					miLog.addTraza(ex1);
					if (ex1.getErrorCode() == m05bConstantes.ERR_DUPLICADOS)
						response.sendRedirect("m05bVehOrdRepaJsp.jsp?NOrden="+sNOrden + "&FEntrada=" + FEntrada + "&HEntrada=" + HEntrada + "&Mensaje=" + m05bConstantes.MSG_EXISTE );
					else
						response.sendRedirect("m05bError.jsp");
			}	finally{
					if (pstmt != null)
						pstmt.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);
			}
	}
}

}