package com.ejie.m62fb.dao.registroVPP;

import com.ejie.m62fb.dao.SQLGenericas;
import com.ejie.m62fb.model.tipos.P28Tipos;
import com.ejie.m62fb.utils.constants.BDConstantes;

public class DocumentosDaoSql {

	/**
	 * StringBuilder initilization value
	 */
	public static final int STRING_BUILDER_INIT = 4096;
	public static final String SEQUENCE_NAME = "";
	// TODO Poner el sinonimo en M62FB

	public static final String TABLA = BDConstantes.DOCUMENTO;
	public static final String ALIAS = " DOC";
	public static final String TABLA_CONTENIDO = BDConstantes.DOC_CONTENIDO;
	public static final String ALIAS_CONTENIDO = " DOC_CONTENIDO";
	
	public static final String TABLA_DOC_VIVIENDA = BDConstantes.DOCUMENTOS_VIVIENDA;
	public static final String VISTA_DOC_VIVIENDA = BDConstantes.DOCUMENTOS_VIVIENDA_V;
	public static final String ALIAS_DOC_VIVIENDA = " DOC_VIV";
	
	public static final String TABLA_DOC_ELEMENTO = BDConstantes.DOCUMENTOS_ELEMENTO;
	public static final String ALIAS_DOC_ELEMENTO = " DOC_ELEM";
	
	public static final String TABLA_DOC_CONTRATO_VIVIENDA = BDConstantes.DOCUMENTOS_CONTRATO_VIVIENDA;
	public static final String ALIAS_DOC_CONTRATO_VIVIENDA = " DOC_C_C_V";
	
	public static final String TABLA_DOC_CONTRATO_ALQ_VIVIENDA = BDConstantes.DOC_CONTRATO_ALQ_VIVIENDA;
	public static final String ALIAS_DOC_CONTRATO_ALQ_VIVIENDA = " DOC_C_A_V";
	
	public static final String TABLA_DOC_CONTRATO_ALQ_ELEMENTO = BDConstantes.DOC_CONTRATO_ALQ_ELEMENTO;
	public static final String ALIAS_DOC_CONTRATO_ALQ_ELEMENTO = " DOC_C_A_E";
	
	public static final String TABLA_DOC_CONTRATO_ALQUILERAD = BDConstantes.DOC_CONTRATO_ALQUILERAD;
	public static final String ALIAS_DOC_CONTRATO_ALQUILERAD = " DOC_C_A_D";
	
	
	public static final String ALIAS_P28_ACUSE_RECIBO = " ACUSE";
	public static final String ALIAS_P28_IND_ANEXADO = " ANEX";
	public static final String ALIAS_P28_IND_DOC_ANULADO = " DOCANUL";
	public static final String ALIAS_E13_DES_PLANTILLA = " DESPLANT";

	public static final String PK = "NUM_DOCUMENTO";
	
	//INSERT M62E14T0
	public static final String SQL_INSERT_DATOS_DOCUMENTO = "INSERT INTO"
	+ TABLA
	+ "(COD_PLANTILLA,COD_TIPO_PLANTILLA,NUM_EXPEDIENTE,NOM_DOCUMENTO,IND_ANEXADO,FEC_ENVIO,COD_APLICACION   "
	+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
	+ "VALUES (?,?,?,?,'S',TRUNC(SYSDATE),'M62'"
	+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62E14T0
	public static final String SQL_DELETE_DOCUMENTO = "DELETE FROM " + TABLA + " WHERE NUM_DOCUMENTO = ?";

	//INSERT M62E15T0
	public static final String SQL_INSERT_SOURCE_DOCUMENTO = "INSERT INTO"
		+ TABLA_CONTENIDO
		+ "(NUM_DOCUMENTO,CONTENIDO,NUM_PARTE) "
		+ "VALUES (?,?,?)";
	//DELETE M62E14T0
	public static final String SQL_DELETE_SOURCE_DOCUMENTO = "DELETE FROM " + TABLA_CONTENIDO + " WHERE NUM_DOCUMENTO = ?";
//M62R01TD	
	//SELECT M62R01TD
	public static final String SQL_SELECT_REL_DOC_VIV = ALIAS_DOC_VIVIENDA+".ID_TABLA ID_TABLA,"+
														ALIAS_DOC_VIVIENDA+".ID_ELEMENTO_RELACIONADO ID_ELEMENTO_RELACIONADO"/*+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_VIVIENDA)*/;
	//INSERT M62R01TD
	public static final String SQL_INSERT_REL_DOC_VIV = "INSERT INTO"
		+ TABLA_DOC_VIVIENDA
		+ "(NUM_DOCUMENTO ,NUM_VIVIENDA"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R01TD
	public static final String SQL_DELETE_DOC_VIVIENDA = "DELETE FROM " + TABLA_DOC_VIVIENDA	+ " WHERE NUM_DOCUMENTO = ?";
//M62R12TD	
	//SELECT M62R12TD
	public static final String SQL_SELECT_REL_DOC_ELEM = ALIAS_DOC_ELEMENTO+".ID_M62R12TD ID_TABLA,"+ 
														ALIAS_DOC_ELEMENTO+".IDE_ELEMENTO ID_ELEMENTO_RELACIONADO"+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_ELEMENTO);
	//INSERT M62R12TD
	public static final String SQL_INSERT_REL_DOC_ELEM = "INSERT INTO"
		+ TABLA_DOC_ELEMENTO
		+ "(NUM_DOCUMENTO ,IDE_ELEMENTO"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R12TD
	public static final String SQL_DELETE_DOC_ELEMENTO = "DELETE FROM " + TABLA_DOC_ELEMENTO	+ " WHERE NUM_DOCUMENTO = ?";
//M62R10T0	
	//SELECT M62R10T0
	public static final String SQL_SELECT_REL_DOC_CONTRATO_VIVIENDA = "NULL ID_TABLA,"+ 
														ALIAS_DOC_CONTRATO_VIVIENDA+".ID_CONTRATO ID_ELEMENTO_RELACIONADO"+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_CONTRATO_VIVIENDA);
	//INSERT M62R10T0
	public static final String SQL_INSERT_REL_DOC_CONTRATO_VIVIENDA = "INSERT INTO"
		+ TABLA_DOC_CONTRATO_VIVIENDA
		+ "(NUM_DOCUMENTO ,ID_CONTRATO"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R10T0
	public static final String SQL_DELETE_DOC_CONTRATO_VIVIENDA = "DELETE FROM " + TABLA_DOC_CONTRATO_VIVIENDA	+ " WHERE NUM_DOCUMENTO = ?";
//M62R11T0	
	//SELECT M62R11T0
	public static final String SQL_SELECT_REL_DOC_CONTRATO_ALQ_VIVIENDA = "NULL ID_TABLA,"+ 
														ALIAS_DOC_CONTRATO_ALQ_VIVIENDA+".ID_CONTRATO ID_ELEMENTO_RELACIONADO"+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_CONTRATO_ALQ_VIVIENDA);
	//INSERT M62R11T0
	public static final String SQL_INSERT_REL_DOC_CONTRATO_ALQ_VIVIENDA = "INSERT INTO"
		+ TABLA_DOC_CONTRATO_ALQ_VIVIENDA
		+ "(NUM_DOCUMENTO ,ID_CONTRATO"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R11T0
	public static final String SQL_DELETE_DOC_CONTRATO_ALQ_VIVIENDA = "DELETE FROM " + TABLA_DOC_CONTRATO_ALQ_VIVIENDA	+ " WHERE NUM_DOCUMENTO = ?";
//M62R13TD	
	//SELECT M62R13TD
	public static final String SQL_SELECT_REL_DOC_CONTRATO_ALQ_ELEMENTO = "NULL ID_TABLA,"+ 
														ALIAS_DOC_CONTRATO_ALQ_ELEMENTO+".ID_CONTRATO ID_ELEMENTO_RELACIONADO"+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_CONTRATO_ALQ_ELEMENTO);
	//INSERT M62R13TD
	public static final String SQL_INSERT_REL_DOC_CONTRATO_ALQ_ELEMENTO = "INSERT INTO"
		+ TABLA_DOC_CONTRATO_ALQ_ELEMENTO
		+ "(NUM_DOCUMENTO ,ID_CONTRATO"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R13TD
	public static final String SQL_DELETE_DOC_CONTRATO_ALQ_ELEMENTO = "DELETE FROM " + TABLA_DOC_CONTRATO_ALQ_ELEMENTO	+ " WHERE NUM_DOCUMENTO = ?";
//M62R19T0
	//SELECT M62R19T0
	public static final String SQL_SELECT_REL_DOC_CONTRATO_ALQUILERAD = "NULL ID_TABLA,"+ 
														ALIAS_DOC_CONTRATO_ALQUILERAD+".ID_CONTRATO ID_ELEMENTO_RELACIONADO"+ 
														SQLGenericas.getSqlCamposAbstractClass(ALIAS_DOC_CONTRATO_ALQUILERAD);
	//INSERT M62R19T0
	public static final String SQL_INSERT_REL_DOC_CONTRATO_ALQUILERAD = "INSERT INTO"
		+ TABLA_DOC_CONTRATO_ALQUILERAD
		+ "(NUM_DOCUMENTO ,ID_CONTRATO"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_SQL + ") "
		+ "VALUES (?,?"
		+ SQLGenericas.INSERT_ABSTRACT_CLASS_QUESTION_TAGS + ")";
	//DELETE M62R19T0
	public static final String SQL_DELETE_DOC_CONTRATO_ALQUILERAD = "DELETE FROM " + TABLA_DOC_CONTRATO_ALQUILERAD	+ " WHERE NUM_DOCUMENTO = ?";
	


	public static final String SQL_SELECT_DOC = ALIAS+".NUM_EXPEDIENTE, "+ALIAS+".NOM_DOCUMENTO NOMDOCUMENTO,"+ALIAS+".NUM_DOCUMENTO NUMDOCUMENTO"
	+ SQLGenericas.getSqlCampos(ALIAS,ALIAS_E13_DES_PLANTILLA, "COD_PLANTILLA", "DES_PLANTILLA_CAS","DES_PLANTILLA_EUS")  +
	","+ALIAS+".FEC_ENVIO, "+ALIAS+".FEC_RECIBI " +  SQLGenericas.getSqlCamposP28(ALIAS_P28_ACUSE_RECIBO)+SQLGenericas.getSqlCamposP28(ALIAS_P28_IND_DOC_ANULADO)+
	SQLGenericas.getSqlCamposP28(ALIAS_P28_IND_ANEXADO)+" , "+ALIAS+".COD_TIPO_FIGURA,"+ALIAS+".COD_TIPO_PLANTILLA "/* +
	//"COD_UBICACION_OBJ_FICH,"+ALIAS+".IND_DOC_ANULADO"
	SQLGenericas.getSqlCamposAbstractClass(ALIAS)*/;
	public static final String SQL_SELECT_CONTENIDO = ALIAS_CONTENIDO+".CONTENIDO ";	
	public static final String SQL_SELECT = "SELECT "+SQL_SELECT_DOC;

	public static final String SQL_SELECT_COUNT = "SELECT COUNT(1)";

	
	
	// JOINs COMUNES
	private static final String SQL_FROM_JOIN_COMUNES = ""
			+ SQLGenericas.getSqlJoinP28(ALIAS_P28_ACUSE_RECIBO)
			+ SQLGenericas.getSqlJoinP28(ALIAS_P28_IND_ANEXADO)
			+ SQLGenericas.getSqlJoinP28(ALIAS_P28_IND_DOC_ANULADO)
			+ SQLGenericas.getSqlJoin(BDConstantes.PLANTILLA,ALIAS_E13_DES_PLANTILLA);

	// WHEREs JOINs COMUNES
	private static final String SQL_WHERE_JOIN_COMUNES = SQLGenericas
			.getSqlWhereJoinP28(ALIAS, "IND_ACUSE_RECIBO", ALIAS_P28_ACUSE_RECIBO,
					P28Tipos.TIPO_SI_NO)
			+ SQLGenericas.getSqlWhereJoinP28(ALIAS, "IND_ANEXADO",
					ALIAS_P28_IND_ANEXADO, P28Tipos.TIPO_SI_NO)
				+ SQLGenericas.getSqlWhereJoinP28(ALIAS, "IND_DOC_ANULADO",
					ALIAS_P28_IND_DOC_ANULADO, P28Tipos.TIPO_SI_NO)
			+ SQLGenericas.getSqlWhereJoin(ALIAS, "COD_PLANTILLA", ALIAS_E13_DES_PLANTILLA, "COD_PLANTILLA");
	
	public static final String SQL_FROM = " FROM " + TABLA + ALIAS +"," + TABLA_CONTENIDO + ALIAS_CONTENIDO + SQL_FROM_JOIN_COMUNES;
	//SE PONE IND_ANEXADO='S' PARA ASEGURARNOS DE QUE LOS DOCUMENTOS QUE SE MUESTRAN SE PUEDEN DESCARGAR
	public static final String SQL_WHERE_ALL = " WHERE 1=1 AND "+ALIAS +".IND_ANEXADO='S' AND "+ALIAS +"."+PK+"="+ALIAS_CONTENIDO +"."+PK+ SQL_WHERE_JOIN_COMUNES ;
//	public static final String SQL_WHERE_ELEMENTOS = " AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_ELEMENTO+"."+PK;
	public static final String SQL_WHERE_ID = SQL_WHERE_ALL + " AND "+ALIAS +".NUM_DOCUMENTO = ?";

//	public static final String SQL_WHERE_FOR_UPDATE = SQL_WHERE_ID
//			+ " AND FEH_ULT_MODIF = ?";

//	public static final String SQL_FIND_FOR_UPDATE = SQL_SELECT + SQL_FROM
//			+ SQL_WHERE_FOR_UPDATE;

//	public static final String SQL_FIND = SQL_SELECT + SQL_FROM + SQL_WHERE_ID;
	public static final String SQL_FIND_DESCARGA = SQL_SELECT+","+SQL_SELECT_CONTENIDO + SQL_FROM + SQL_WHERE_ID /*+ " AND "+ALIAS_CONTENIDO +".NUM_PARTE = 0"*/;

//	public static final String SQL_FIND_ALL = SQL_SELECT + SQL_FROM;
//	
//
//	public static final String SQL_FIND_ALL_COUNT = SQL_SELECT_COUNT + SQL_FROM;
	//VIVIENDA
	public static final String SQL_FROM_VIVIENDA = SQL_FROM +","+VISTA_DOC_VIVIENDA/*TABLA_DOC_VIVIENDA*/ + ALIAS_DOC_VIVIENDA;
	public static final String SQL_FIND_ALL_VIVIENDA = SQL_SELECT +","+SQL_SELECT_REL_DOC_VIV+ SQL_FROM_VIVIENDA ;
	public static final String SQL_FIND_ALL_VIVIENDA_COUNT = SQL_SELECT_COUNT + SQL_FROM_VIVIENDA ;
	public static final String SQL_WHERE_VIVIENDA = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_VIVIENDA+".NUMDOCUMENTO"/*+PK */+ 
	" AND " +ALIAS_DOC_VIVIENDA+".ID_ELEMENTO_RELACIONADO=?"/*".NUM_VIVIENDA=?"*/;
	public static final String SQL_WHERE_VIVIENDA_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_VIVIENDA+".NUMDOCUMENTO"/*+PK */;
	
	//ELEMENTO
	public static final String SQL_FROM_ELEMENTO = SQL_FROM  +","+TABLA_DOC_ELEMENTO + ALIAS_DOC_ELEMENTO;
	public static final String SQL_FIND_ALL_ELEMENTO = SQL_SELECT +","+SQL_SELECT_REL_DOC_ELEM+ SQL_FROM_ELEMENTO ;
	public static final String SQL_FIND_ALL_ELEMENTO_COUNT = SQL_SELECT_COUNT + SQL_FROM_ELEMENTO ;
	public static final String SQL_WHERE_ELEMENTO = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_ELEMENTO+"."+PK+ 
	" AND " +ALIAS_DOC_ELEMENTO+".IDE_ELEMENTO=?";
	public static final String SQL_WHERE_ELEMENTO_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_ELEMENTO+"."+PK;
	//CONTRATO COMPRA VIVIENDA
	public static final String SQL_FROM_CONTRATO_VIVIENDA = SQL_FROM  +","+TABLA_DOC_CONTRATO_VIVIENDA + ALIAS_DOC_CONTRATO_VIVIENDA;
	public static final String SQL_FIND_ALL_CONTRATO_VIVIENDA = SQL_SELECT +","+SQL_SELECT_REL_DOC_CONTRATO_VIVIENDA+ SQL_FROM_CONTRATO_VIVIENDA ;
	public static final String SQL_FIND_ALL_CONTRATO_VIVIENDA_COUNT = SQL_SELECT_COUNT + SQL_FROM_CONTRATO_VIVIENDA ;
	public static final String SQL_WHERE_CONTRATO_VIVIENDA = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_VIVIENDA+"."+PK+ 
	" AND " +ALIAS_DOC_CONTRATO_VIVIENDA+".ID_CONTRATO=?";
	public static final String SQL_WHERE_CONTRATO_VIVIENDA_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_VIVIENDA+"."+PK;
	//CONTRATO ALQUILER VIVIENDA
	public static final String SQL_FROM_CONTRATO_ALQ_VIVIENDA = SQL_FROM  +","+TABLA_DOC_CONTRATO_ALQ_VIVIENDA + ALIAS_DOC_CONTRATO_ALQ_VIVIENDA;
	public static final String SQL_FIND_ALL_CONTRATO_ALQ_VIVIENDA = SQL_SELECT +","+SQL_SELECT_REL_DOC_CONTRATO_ALQ_VIVIENDA+ SQL_FROM_CONTRATO_ALQ_VIVIENDA ;
	public static final String SQL_FIND_ALL_CONTRATO_ALQ_VIVIENDA_COUNT = SQL_SELECT_COUNT + SQL_FROM_CONTRATO_ALQ_VIVIENDA ;
	public static final String SQL_WHERE_CONTRATO_ALQ_VIVIENDA = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQ_VIVIENDA+"."+PK+ 
	" AND " +ALIAS_DOC_CONTRATO_ALQ_VIVIENDA+".ID_CONTRATO=?";
	public static final String SQL_WHERE_CONTRATO_ALQ_VIVIENDA_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQ_VIVIENDA+"."+PK;
	//CONTRATO ALQUILER ELEMENTO
	public static final String SQL_FROM_CONTRATO_ALQ_ELEMENTO = SQL_FROM  +","+TABLA_DOC_CONTRATO_ALQ_ELEMENTO + ALIAS_DOC_CONTRATO_ALQ_ELEMENTO;
	public static final String SQL_FIND_ALL_CONTRATO_ALQ_ELEMENTO = SQL_SELECT +","+SQL_SELECT_REL_DOC_CONTRATO_ALQ_ELEMENTO+ SQL_FROM_CONTRATO_ALQ_ELEMENTO ;
	public static final String SQL_FIND_ALL_CONTRATO_ALQ_ELEMENTO_COUNT = SQL_SELECT_COUNT + SQL_FROM_CONTRATO_ALQ_ELEMENTO ;
	public static final String SQL_WHERE_CONTRATO_ALQ_ELEMENTO = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQ_ELEMENTO+"."+PK+ 
	" AND " +ALIAS_DOC_CONTRATO_ALQ_ELEMENTO+".ID_CONTRATO=?";
	public static final String SQL_WHERE_CONTRATO_ALQ_ELEMENTO_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQ_ELEMENTO+"."+PK;
	//CONTRATO ALQUILER AD
	public static final String SQL_FROM_CONTRATO_ALQUILERAD = SQL_FROM  +","+TABLA_DOC_CONTRATO_ALQUILERAD + ALIAS_DOC_CONTRATO_ALQUILERAD;
	public static final String SQL_FIND_ALL_CONTRATO_ALQUILERAD = SQL_SELECT +","+SQL_SELECT_REL_DOC_CONTRATO_ALQUILERAD+ SQL_FROM_CONTRATO_ALQUILERAD ;
	public static final String SQL_FIND_ALL_CONTRATO_ALQUILERAD_COUNT = SQL_SELECT_COUNT + SQL_FROM_CONTRATO_ALQUILERAD ;
	public static final String SQL_WHERE_CONTRATO_ALQUILERAD = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQUILERAD+"."+PK+ 
	" AND " +ALIAS_DOC_CONTRATO_ALQUILERAD+".ID_CONTRATO=?";
	public static final String SQL_WHERE_CONTRATO_ALQUILERAD_ID = SQL_WHERE_ALL+" AND "+ALIAS+"."+PK + " = " + ALIAS_DOC_CONTRATO_ALQUILERAD+"."+PK;

}