<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mx.dla.dda.contrato.promociones.daos.PromocionesDAO">
		
	<!-- SECCION DE CONSULTAS PARA PROMOCIONES -->
	
	<resultMap id="principalPromociones" type="PromocionDTO">
		<result property="id_promocion"	column="ID_PROMOCION"/>
		<result property="id_estudio"	column="ID_ESTUDIO"/>
		<result property="desc_estudio"	column="DESC_ESTUDIO"/>
		<result property="id_pais"	column="ID_PAIS"/>
		<result property="nombre_promocion"	column="NOMBRE_PROMOCION"/>
		<result property="fecha_inicio"	column="FECHA_INICIO"/>
		<result property="fecha_fin"	column="FECHA_FIN"/>
		<result property="tipo_descuento"	column="TIPO_DESCUENTO"/>
		<result property="descuento"	column="DESCUENTO"/>
	</resultMap>	
	
	<select id="obtenerPromociones" resultMap="principalPromociones">
	              SELECT P.ID_PROMOCION,
       					 P.ID_ESTUDIO,
       					 C.DESC_ESTUDIO,
       					 P.ID_PAIS,
       					 P.NOMBRE_PROMOCION,
       					 TO_CHAR(P.FECHA_INICIO, 'MM/DD/YYYY') AS FECHA_INICIO,
       					 TO_CHAR(P.FECHA_FIN, 'MM/DD/YYYY') AS FECHA_FIN,
					     P.TIPO_DESCUENTO,
					     P.DESCUENTO
				FROM DDA_T_PROMOCION P
						JOIN DDA_C_ESTUDIO C ON C.ID_ESTUDIO = P.ID_ESTUDIO
	</select>
	
	<select id="obtenerPromocionesVigentes" resultMap="principalPromociones">
	              SELECT P.ID_PROMOCION,
       					 P.ID_ESTUDIO,
       					 C.DESC_ESTUDIO,
       					 P.ID_PAIS,
       					 P.NOMBRE_PROMOCION,
       					 TO_CHAR(P.FECHA_INICIO, 'MM/DD/YYYY') AS FECHA_INICIO,
       					 TO_CHAR(P.FECHA_FIN, 'MM/DD/YYYY') AS FECHA_FIN,
					     P.TIPO_DESCUENTO,
					     P.DESCUENTO
				FROM DDA_T_PROMOCION P
						JOIN DDA_C_ESTUDIO C ON C.ID_ESTUDIO = P.ID_ESTUDIO
				WHERE SYSDATE &lt; P.FECHA_FIN
				--TO_DATE(SYSDATE, 'DD/MM/YYYY') BETWEEN TO_DATE(P.FECHA_INICIO, 'DD/MM/YYYY') AND  TO_DATE(P.FECHA_FIN, 'DD/MM/YYYY')
	</select>
	
	<delete id="eliminaPromocion">
	       DELETE FROM DDA_T_PROMOCION WHERE ID_PROMOCION=#{id_promocion}
	</delete>
	
	<delete id="eliminaTitulosPromocion">
	       DELETE FROM DDA_T_PROMOCION_TITULO WHERE ID_PROMOCION=#{id_promocion}
	</delete>
	
	<resultMap id="estudiosPromociones" type="EstudiosPromocionesDTO">
		<result property="desc_estudio"	column="DESC_ESTUDIO"/>
		<result property="id_estudio"	column="ID_ESTUDIO"/>
	</resultMap>
	
	<select id="obtenerEstudios" resultMap="estudiosPromociones">
	       SELECT ID_ESTUDIO,
	       		  DESC_ESTUDIO 
	       FROM DDA_C_ESTUDIO 
	           WHERE ID_ESTUDIO IN(SELECT ID_ESTUDIO 
	                                     FROM DDA_T_CONTRATO 
	                                          WHERE DDA_T_CONTRATO.ID_TIPO_CONTRATO='2')       
	</select>
	
	<resultMap id="paisesPromociones" type="PaisesPromocionesDTO">
		<result property="id_pais"	column="ID_PAIS"/>
		<result property="descripcion"	column="DESCRIPCION"/>
	</resultMap>
	
	<select id="obtenerPaises" resultMap="paisesPromociones">
	       SELECT ID_PAIS, 
	              DESCRIPCION 
	       FROM DDA_C_PAIS_VENTA       
	</select>
	
	<resultMap id="titulosPromociones" type="TitulosPromocionesDTO">
		<result property="id_bv"	column="ID_BV"/>
		<result property="nombre_estandar"	column="NOMBRE_ESTANDAR"/>
		<result property="numero_contrato"	column="NUMERO_CONTRATO"/>
	</resultMap>
	
	<select id="obtenerTitulos" resultMap="titulosPromociones">
	        SELECT TIT.ID_BV, 
	               TIT.NOMBRE_ESTANDAR, 
	               CON.NUMERO_CONTRATO 
		    FROM DDA_T_CNT_TITULO TIT
				JOIN DDA_T_CONTRATO CON 
				ON  CON.ID_CONTRATO = TIT.ID_CONTRATO AND CON.FECHA_FIN > SYSDATE
			WHERE 
             TIT.ID_FILIAL in(SELECT fil.ID_FILIAL 
                                FROM DDA_C_PAIS_VENTA pv
                                        JOIN DDA_C_EMPRESA_VENTA emp ON emp.ID_PAIS = pv.ID_PAIS
                                        JOIN DDA_C_FILIAL fil ON fil.ID_EMPRESA = emp.ID_EMPRESA 
                                WHERE pv.ID_PAIS=#{id_pais}
                              )
            AND CON.ID_ESTUDIO=#{id_estudio}
	       
	</select>
	
	<select id="obtenerTitulosTodos" resultMap="titulosPromociones">
	        SELECT DISTINCT TIT.ID_BV, 
	               TIT.NOMBRE_ESTANDAR, 
	               CON.NUMERO_CONTRATO 
		    FROM DDA_T_CNT_TITULO TIT
				JOIN DDA_T_CONTRATO CON 
				   ON  CON.ID_CONTRATO = TIT.ID_CONTRATO 
				   AND CON.FECHA_FIN > SYSDATE --TO_DATE(SYSDATE, 'DD/MM/YYYY')  
		    WHERE CON.ID_ESTUDIO=#{id_estudio}   
	</select>
	
	<insert id="crearPromocion" parameterType="PromocionDTO" keyColumn="id_promocion" useGeneratedKeys="true" keyProperty="id_promocion">
		
		<selectKey keyProperty="id_promocion" resultType="long" order="BEFORE">
    	 		   select DDA_SQT_PROMOCION.nextVal from DUAL
  		</selectKey>
	
		INSERT INTO DDA_T_PROMOCION(ID_PROMOCION,ID_ESTUDIO,ID_PAIS,NOMBRE_PROMOCION,FECHA_INICIO,FECHA_FIN,TIPO_DESCUENTO,DESCUENTO)
		      VALUES (#{id_promocion}, #{id_estudio}, #{id_pais}, #{nombre_promocion}, TO_DATE(#{fecha_inicio}, 'MM/DD/YYYY'), 
		              TO_DATE(#{fecha_fin}, 'MM/DD/YYYY'), #{tipo_descuento}, #{descuento})
		
	</insert>
	
	<update id="actualizaPromocion" parameterType="PromocionDTO">		 
			
			UPDATE DDA_T_PROMOCION SET ID_PAIS=#{id_pais},NOMBRE_PROMOCION=#{nombre_promocion},
      								   FECHA_INICIO=TO_DATE(#{fecha_inicio}, 'MM/DD/YYYY'),FECHA_FIN=TO_DATE(#{fecha_fin}, 'MM/DD/YYYY'),
       								   TIPO_DESCUENTO=#{tipo_descuento},DESCUENTO=#{descuento} WHERE ID_PROMOCION=#{id_promocion}
       
	</update>
	
	<resultMap id="promocionTitulos" type="PromocionTitulosDTO">
		<result property="id_bv"	column="ID_BV"/>
		<result property="id_promocion"	column="ID_PROMOCION"/>
	</resultMap>
	
	<insert id="registraTitulosPromocion" parameterType="PromocionTitulosDTO">
	
		INSERT INTO DDA_T_PROMOCION_TITULO(ID_PROMOCION,ID_BV)
                     VALUES(#{id_promocion},#{id_bv})
		
	</insert>
	
	<select id="obtenerTitulosPromocion" resultMap="promocionTitulos">
	        SELECT ID_PROMOCION, ID_BV FROM DDA_T_PROMOCION_TITULO WHERE ID_PROMOCION=#{id_promocion}       
	</select>
	  
</mapper>