//Agurtzane Ene12: mantenimiento destinos
package destinoServlet;

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

import javax.servlet.http.HttpSession;

import m05bBD.m05bDestino;
import m05bClasses.m05bConexion;
import m05bClasses.m05bConstantes;
import m05bClasses.m05bFileLog;

/**
 * Inserte aquí la descripción del tipo.
 * Fecha de creación: (04/12/03)
 */
public class m05bGrabarDestinoServlet 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;
       	String sDescripcion, sDescripcionAnt;
       	String sEdescripcion, sEdescripcionAnt;
       	String accion;
       	String sql = "";
		java.sql.Connection conn=null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		boolean finalizado = false;
       try

		{
		HttpSession session = request.getSession(true);

		m05bFileLog miLog = new m05bFileLog();
		

        m05bDestino destino = (m05bDestino)session.getAttribute("m05bDestino");
		sCodigo = request.getParameter("Codigo").toUpperCase();
		//System.out.println("m05b - Grabar Dptos: CODIGO: " + sCodigo);
		destino.setDest_codigo(sCodigo);
		sDescripcion=request.getParameter("Descripcion").toUpperCase();
		//sDescripcionAnt=request.getParameter("DescripcionAnt").toUpperCase();
		destino.setDest_descripcion(sDescripcion);
		sEdescripcion=request.getParameter("Edescripcion").toUpperCase();
		//sEdescripcionAnt=request.getParameter("EdescripcionAnt").toUpperCase();
		destino.setDest_edescripcion(sEdescripcion);
		accion=request.getParameter("Accion");

		try{
			m05bConexion miConex = new m05bConexion();
			conn = miConex.getConnection();
			if (accion.equals(m05bConstantes.ACC_ACTUALIZAR))  {
				pstmt = conn.prepareStatement(
					"update	M05104T00 " + 
					"set	DESC_CAS_104 = ? " + 
					" ,		DESC_EUS_104 = ? " + 
					"where	COD_DESTINO_104 = ?");
				pstmt.setString(1, sDescripcion);
				pstmt.setString(2, sEdescripcion);
				pstmt.setString(3, sCodigo);
				pstmt.executeUpdate();
				/* Se mantiene un histórico
				pstmt = conn.prepareStatement(
					"insert into	M0511T00 " + 
					"(COD_DPTH_11, CODDPTANT_11, DESDPTANT_11, E_DESDPTANT_11, " +
					" FCAMBIO_11, CODDPTNUE_11, DESDPTNUE_11, E_DESDPTNUE_11) " + 
					" values " + 
					"(? ,?, ? ,?, sysdate, ?, ? , ? )" );
				m05bGenerarClave miId = new m05bGenerarClave();
				pstmt.setInt(1, miId.getNextId(m05bConstantes.TAB_HIST_DPTOS, m05bConstantes.COL_11_ID));
				pstmt.setString(2, sCodigo);
				pstmt.setString(3, sDescripcionAnt);
				pstmt.setString(4, sEdescripcionAnt);
				pstmt.setString(5, sCodigo);
				pstmt.setString(6, sDescripcion);
				pstmt.setString(7, sEdescripcion);*/
				
			}
			else if (accion.equals(m05bConstantes.ACC_INSERTAR))  {
			// Chequear si ya existe un destino con ese codigo
			   sql = "select 1 from M05104T00 where COD_DESTINO_104 = '" + sCodigo + "'";
		       pstmt = conn.prepareStatement(sql);
			   rs = pstmt.executeQuery();
			   if (rs.next() == true){ 		
       	    			response.sendRedirect("m05bDestinosJsp.jsp?Codigo=" + sCodigo + "&Mensaje=" + m05bConstantes.MSG_EXISTE);
       	    			finalizado = true;
			   } 
			   else {
					pstmt = conn.prepareStatement(
						"insert into	M05104T00 " + 
						"(COD_DESTINO_104, DESC_CAS_104, DESC_EUS_104) " + 
						" values " + 
						"(? ,?, ? )" );
					pstmt.setString(1, sCodigo);
					pstmt.setString(2, sDescripcion);
					pstmt.setString(3, sEdescripcion);
										
				}
			}
			else   {  
				pstmt = conn.prepareStatement(
					"delete from 	M05104T00 " + 
					" where COD_DESTINO_104 =  ? " );
				pstmt.setString(1, sCodigo);
				pstmt.executeUpdate();
				/* Se mantiene un histórico
				pstmt = conn.prepareStatement(
					"insert into	M0511T00 " + 
					"(COD_DPTH_11, CODDPTANT_11, DESDPTANT_11, E_DESDPTANT_11, " +
					" FCAMBIO_11, CODDPTNUE_11, DESDPTNUE_11, E_DESDPTNUE_11) " + 
					" values " + 
					"(? ,?, ? ,?, sysdate, ?, ? , ? )" );
				m05bGenerarClave miId = new m05bGenerarClave();
				pstmt.setInt(1, miId.getNextId(m05bConstantes.TAB_HIST_DPTOS, m05bConstantes.COL_11_ID));
				pstmt.setString(2, sCodigo);
				pstmt.setString(3, sDescripcionAnt);
				pstmt.setString(4, sEdescripcionAnt);
				pstmt.setString(5, sCodigo);
				pstmt.setString(6, "");
				pstmt.setString(7, "");*/
			}
			if(!finalizado){
				pstmt.executeUpdate();
				response.sendRedirect("m05bRelDestinosJsp.jsp");
			}
		} 	catch (SQLException ex) {
				if (ex.getErrorCode() == m05bConstantes.ERR_INTEGRIDAD)
					response.sendRedirect("m05bDestinosJsp.jsp?Codigo=" + sCodigo + "&Mensaje=" + m05bConstantes.MSG_INTEGRIDAD);
				else
					response.sendRedirect("m05bError.jsp");
				miLog.addTraza(ex);
				miLog.addTraza("2","Error en GrabarDestino: ", ex.getMessage(),1);
		} finally{
			if (rs != null)
				rs.close();
			if (pstmt != null)
				pstmt.close();
			if (conn != null)
				conn.close();
		}

	}
	catch(Throwable theException)
	{
		// uncomment the following line when unexpected exceptions
		// are occuring to aid in debugging the problem.
		miLog.addTraza(theException);
		try {
			response.sendRedirect("m05bError.jsp");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			miLog.addTraza(e);
		}
	}
}

}
