package restriccionServlet;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

/**
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (29/07/2005)
 */
public class m05bGrabarRestriccionServlet 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) throws java.io.IOException {


       String sDni="", sDescripcion="";
       String sql="", sAccion, sOrigen="";
	   java.sql.Connection conn = null;
	   PreparedStatement pstmt = null;
	   ResultSet rs = null;
	   sAccion = request.getParameter("Accion")==null?"":request.getParameter("Accion");
		
       try 	{

			m05bFileLog miLog = new m05bFileLog();

			sDni = request.getParameter("Dni").toUpperCase();
			sDescripcion = request.getParameter("Descripcion")==null?"":request.getParameter("Descripcion").toUpperCase();
			String sDescripcionEu = request.getParameter("DescripcionEu")==null?"":request.getParameter("DescripcionEu").toUpperCase();
			sOrigen = request.getParameter("Origen")==null?"":request.getParameter("Origen");
			miLog.addTraza("Anabel", "Grabar Restriccion", "ORIGEN: " + sOrigen, m05bConstantes.LOG_NIVEL_BAJO);
			miLog.addTraza("", "", "ACCION: " + sAccion, m05bConstantes.LOG_NIVEL_BAJO);
			boolean existeDni = true;
			boolean insertaRestriccion = false;
			m05bConexion miConex = new m05bConexion();
			conn = miConex.getConnection();	

			if (sAccion.equals(m05bConstantes.ACC_ACTUALIZAR))  {
					sql = "update	" + m05bConstantes.TAB_RESTRICCIONES  + 
						" set	" + m05bConstantes.COL_47_DESCRIPCION + " = '" + sDescripcion + "'" +
						" ,E"+m05bConstantes.COL_47_DESCRIPCION +"='"+sDescripcionEu+"'"+
						" where	" + m05bConstantes.COL_47_DNI + " = '" + sDni + "'";
			} else if (sAccion.equals(m05bConstantes.ACC_ELIMINAR))  {
					sql = "delete from " + m05bConstantes.TAB_RESTRICCIONES + 
						" where	" + m05bConstantes.COL_47_DNI + " = '" + sDni + "'" ;
			} else {  
				// Chequear si ya existe una restriccion para ese DNI
						   sql = "select " + m05bConstantes.COL_47_DESCRIPCION + 
								"   from " + m05bConstantes.TAB_RESTRICCIONES + 
								" where " + m05bConstantes.COL_47_DNI + " = '" + sDni + "'";
					       pstmt = conn.prepareStatement(sql);
						   rs = pstmt.executeQuery();
						   if (rs.next() == true){ 		
			       	    			sDescripcion = rs.getString(1);
									miLog.addTraza("", "", "Existe una restriccion para ese dni: " + sDni + " - " + sDescripcion, m05bConstantes.LOG_NIVEL_BAJO);
					 	   } else {
									miLog.addTraza("", "", "NO Existe una restriccion para ese dni: " + sDni , m05bConstantes.LOG_NIVEL_BAJO);
				// Chequear si ya existe el DNI
								sql = "select 1 from " + m05bConstantes.TAB_PERSONAL + 
									" where " + m05bConstantes.COL_21_DNI + " = '" + sDni + "'";
								miLog.addTraza("", "", "SQL: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
							    pstmt = conn.prepareStatement(sql);
								rs = pstmt.executeQuery();
								if (rs.next() == true){ 		
									sql = "insert into " + m05bConstantes.TAB_RESTRICCIONES  + 
										" (" + m05bConstantes.COL_47_DNI + ", " + m05bConstantes.COL_47_DESCRIPCION + ", E" + m05bConstantes.COL_47_DESCRIPCION + ")" + 
										" VALUES ('"+ sDni + "', '" + sDescripcion + "', '" + sDescripcionEu + "')" ;
									pstmt = conn.prepareStatement(sql);
									pstmt.executeUpdate();
				 					insertaRestriccion = true;
							 	} else {
									miLog.addTraza("", "", "NO Existe ese dni: " + sDni , m05bConstantes.LOG_NIVEL_BAJO);
									existeDni = false;
								}
							}
			}
			if ( (sAccion.equals(m05bConstantes.ACC_ACTUALIZAR))  || (sAccion.equals(m05bConstantes.ACC_ELIMINAR))  ) {
				miLog.addTraza("", "", "SQL: " + sql, m05bConstantes.LOG_NIVEL_BAJO);
				pstmt = conn.prepareStatement(sql);
				pstmt.executeUpdate();
				insertaRestriccion = true;
			}
			if (sOrigen.equals("P")) {
					response.sendRedirect("m05bPersonalJsp.jsp?Codigo="+ sDni + "&Mensaje=false");
			} else if (!existeDni) {
				miLog.addTraza("", "", "DNI no existe", m05bConstantes.LOG_NIVEL_BAJO);
				response.sendRedirect("m05bRestriccionesJsp.jsp?Codigo="+ sDni + "&Mensaje="+m05bConstantes.MSG_NOEXISTEDNI+"&Origen="+sOrigen+"&Descripcion="+ sDescripcion + "&Accion=" + sAccion);
			} else {
				if (insertaRestriccion) {
					response.sendRedirect("m05bRelRestriccionesJsp.jsp");
				} else {
					response.sendRedirect("m05bRestriccionesJsp.jsp?Codigo="+ sDni + "&Mensaje="+m05bConstantes.MSG_EXISTE+"&Origen="+sOrigen+"&Descripcion="+ sDescripcion + "&Accion=" + sAccion);
				}
			}
	   } catch (SQLException ex1) {
				if (ex1.getErrorCode() == m05bConstantes.ERR_DUPLICADOS)
					response.sendRedirect("m05bRestriccionesJsp.jsp?Codigo="+ sDni + "&Mensaje="+m05bConstantes.MSG_EXISTE+"&Origen="+sOrigen+"&Descripcion="+ sDescripcion + "&Accion=" + sAccion);
				else
					response.sendRedirect("m05bError.jsp");
				miLog.addTraza(ex1);
	   } catch(Throwable ex2) {
				miLog.addTraza(ex2);
				response.sendRedirect("m05bError.jsp");
	   } finally{
	   	   		try {
					if (rs != null)
						rs.close();
					if (pstmt != null)
						pstmt.close();
					if (conn != null)
						conn.close();
				} catch(Exception ex3) {
					miLog.addTraza(ex3);
					response.sendRedirect("m05bError.jsp");
				}
	   }
}
}