package com.ejie.m62fb.dao.registroVPP;

import com.ejie.m62fb.dao.SQLGenericas;
import com.ejie.m62fb.utils.constants.BDConstantes;

public class ContratoAlquileradDaoSql {

	/**
	 * StringBuilder initilization value
	 */
	public static final int STRING_BUILDER_INIT = 4096;
	public static final String SEQUENCE_NAME = "";
	public static final String TABLA = BDConstantes.CONTRATO_ALQUILERAD;
	public static final String ALIAS_CONTRATOALQAD = "CONTRATOALQAD";
	public static final String ALIAS_CONTRATOALQAD2 = " CONTRATOALQAD2";
	public static final String PK = "IDCONTRATO";

	//SQL para la insercion de un nuevo contrato de alquiler dotacional.
	public static final String SQL_INSERT = "INSERT INTO"
			+ ContratoAlquileradDaoSql.TABLA 
			
	/*4*/	+ 	"( ID_ALOJ_REG, NUM_CONTRATO, FEC_ENT_CONTRATO, FEC_INICIO, " 
	/*5*/	+	" FEC_FIN, IND_VISADO, 	FEC_VISADO, FEC_EMPADRON, ID_PAGADOR_RENTA," 
	/*5*/	+	"  IMC_PRECIO_RENTA,  IMC_FIANZA, COD_ENTIDAD," 
	/*5*/	+	" COD_SUCURSAL, COD_DIGITO_CONTROL, COD_CUENTA, TEX_OBSERVACIONES, FEC_ENV_CONTRATO," 
	/*2*/	+	" FEC_ENV_FIN_CONTRATO, FEC_INI_FAC "
			
			+ SQLGenericas.INSERT_DIRECCION_CLASS_SQL //13
			+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL //1
//			+ SQLGenericas.getValuesSQLFor(21)
			+ ") VALUES (?,?,?,?,?," +
						"?,?,?,?,?," +
						"?,?,?,?,?," +
						"?,?,?,?" 
			+ SQLGenericas.INSERT_DIRECCION_CLASS_QUESTION_TAGS
			+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";

	//SQL para la actualización de un nuevo contrato de alquiler dotacional.
	public static final String SQL_UPDATE = "UPDATE"
			+ ContratoAlquileradDaoSql.TABLA 
			
	/*5*/+	" SET ID_ALOJ_REG=?, NUM_CONTRATO=?, FEC_ENT_CONTRATO=?, FEC_INICIO=?, FEC_FIN=?," 
	/*4*/+	" IND_VISADO=?, FEC_VISADO=?, FEC_EMPADRON=?, ID_PAGADOR_RENTA=?, " 
	/*3*/+	" IMC_PRECIO_RENTA=?, IMC_FIANZA=?," 
	/*5*/+	" COD_ENTIDAD=?, COD_SUCURSAL=?, COD_DIGITO_CONTROL=?, COD_CUENTA=?," 
	/*4*/+	" TEX_OBSERVACIONES=?, FEC_ENV_CONTRATO=?, FEC_ENV_FIN_CONTRATO=?, FEC_INI_FAC=? " 
	
			+ SQLGenericas.UPDATE_DIRECCION_CLASS_SQL
			+ SQLGenericas.UPDATE_ABSTRACT_CLASS_SQL
			
			//Condiciones
			+ " WHERE ID_CONTRATO=?";
	
	
	//SQL para la eliminación de un contrato de alquiler dotacional.
	public static final String SQL_DELETE = "DELETE FROM"
			+ ContratoAlquileradDaoSql.TABLA
			+ "WHERE ID_CONTRATO=?";
	
	
	
	
	public static final String SQL_FIND_NUMCONT_MAX = " SELECT NVL(MAX("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".NUM_CONTRATO), 0) + 1 FROM " + ContratoAlquileradDaoSql.TABLA
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + " WHERE "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ _REG = ?";

	//SQL para la seleccional un contrato de alquiler dotacional
	public static final String SQL_SELECT = "SELECT  "
		
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_CONTRATO IDCONTRATO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".NUM_CONTRATO NUMCONTRATO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_ENT_CONTRATO FECENTCONTRATO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO FECINICIO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_FIN FECFIN, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".IND_VISADO INDVISADO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_VISADO FECVISADO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_EMPADRON FECEMPADRON, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_PAGADOR_RENTA IDPAGADORRENTA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_PROV_NOTIF CODPROVNOTIF, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_MUNI_NOTIF CODMUNINOTIF, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".DIR_NOTIFICACION DIRNOTIFICACION, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".IMP_PRECIO_RENTA IMPPRECIORENTA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".IMC_PRECIO_RENTA IMCPRECIORENTA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".IMP_FIANZA IMPFIANZA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".IMC_FIANZA IMCFIANZA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_ENTIDAD CODENTIDAD, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_SUCURSAL CODSUCURSAL, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_DIGITO_CONTROL CODDIGITOCONTROL, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".COD_CUENTA CODCUENTA, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".TEX_OBSERVACIONES TEXOBSERVACIONES, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_ENV_CONTRATO FECENVCONTRATO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_ENV_FIN_CONTRATO FECENVFINCONTRATO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INI_FAC FECINIFAC, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_ALOJ_REG IDALOJREG "	
		
		// Direccion
		+ SQLGenericas
				.getSqlCamposDireccion(ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD)
		// AbstractClass
		+ SQLGenericas
				.getSqlCamposAbstractClass(ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD);
	


	//Formamos las diferentes Querys.
	public static final String SQL_SELECT_COUNT = "SELECT COUNT(1)";

	public static final String SQL_FROM = " FROM"
			+ ContratoAlquileradDaoSql.TABLA
			+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD;
	
	public static final String SQL_FROM2 = " FROM"
			+ ContratoAlquileradDaoSql.TABLA
			+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD2;

	public static final String SQL_WHERE_ALL = " WHERE 1=1 ";

	public static final String SQL_WHERE_ID = SQL_WHERE_ALL + " AND "
			+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
			+ ".ID_CONTRATO = ? ";

	public static final String SQL_WHERE_NOT_ID = " AND "
			+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
			+ ".ID_CONTRATO != ? ";

	public static final String SQL_WHERE_FOR_UPDATE = SQL_WHERE_ID + " AND "
			+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".FEH_ULT_MODIF = ?";

	public static final String SQL_FIND = SQL_SELECT + SQL_FROM + SQL_WHERE_ID;
	public static final String SQL_FIND_FOR_UPDATE = SQL_SELECT + SQL_FROM
			+ SQL_WHERE_FOR_UPDATE;
	public static final String SQL_FIND_ALL = SQL_SELECT + SQL_FROM;
	public static final String SQL_FIND_ALL_COUNT = SQL_SELECT_COUNT + SQL_FROM;
	
	public static final String SQL_FIND_ULTIMO_CONTRATO = "SELECT MAX("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".NUM_CONTRATO)"
		+ SQL_FROM + " WHERE " + ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_ALOJ_REG = ?";
	
	public static final String SQL_FECHA_INI_MAYOR_ON_UPDATE = "SELECT COUNT("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_CONTRATO)"
		+ SQL_FROM + " WHERE " + ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO >= ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_CONTRATO != ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG = ?";
	public static final String SQL_FECHA_INI_MAYOR_ON_ADD = "SELECT COUNT("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_CONTRATO)"
		+ SQL_FROM + " WHERE " + ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO >= ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG = ?";
	
	public static final String SQL_RANGO_FECHA_INI_FIN = "SELECT COUNT("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_CONTRATO) "
		+ SQL_FROM + " WHERE ((NVL("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".FEC_FIN, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO) >= ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".NUM_CONTRATO < ?) OR (NVL("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".FEC_INICIO, "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".FEC_FIN) <= ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".NUM_CONTRATO > ?)) AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_CONTRATO != ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG = ?";
	
	public static final String SQL_FIND_CONTRATO_ANTERIOR = "SELECT "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_CONTRATO IDCONTRATO,"
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".ID_ALOJ_REG IDALOJREG,"
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".NUM_CONTRATO NUMCONTRATO" + SQL_FROM + " WHERE (("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO < ? AND NVL("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_FIN, ?) >= ?) OR ("
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_INICIO IS NULL OR "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD
		+ ".FEC_FIN IS NULL)) AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".NUM_CONTRATO = "
		+ "(SELECT MAX (" + ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD2
		+ ".NUM_CONTRATO)" + ContratoAlquileradDaoSql.SQL_FROM2 + " WHERE"
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD2
		+ ".NUM_CONTRATO < ? AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD2 + ".ID_ALOJ_REG = "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG) AND "
		+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG = ?";
	
	public static final String SQL_UPDATE_CONTR_ANTERIOR = "UPDATE"
		+ ContratoAlquileradDaoSql.TABLA
		+ "SET FEC_FIN=? " + SQLGenericas.UPDATE_ABSTRACT_CLASS_SQL + " WHERE NUM_CONTRATO=? AND ID_ALOJ_REG = ?";
	//OBTENER NÚMERO DE CONTRATO
	public static final String SQL_GET_NEXT_NUM_CONTRATO = "SELECT NVL(MAX( NUM_CONTRATO ),0) + 1 " + 
	SQL_FROM + " WHERE "+ ContratoAlquileradDaoSql.ALIAS_CONTRATOALQAD + ".ID_ALOJ_REG =?";
	
}
