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

<mapper namespace="com.mx.dla.dda.admin.catalogos.addons.daos.CatalogoAddOnsDAO">

	<resultMap id="addOn" type="CatalogoAddOnDTO">
		<id property="idAddOn" 				column="ID_ADD_ON" />
		<result property="idRelacion" 		column="ID_RELACION" />
		<result property="idEstudio" 		column="ID_ESTUDIO" />
		<result property="estudio" 			column="DESC_ESTUDIO" />
		<result property="idPaisAddOn" 		column="ID_PAIS_ADD_ON" />
		<result property="pais" 			column="PAIS" />
		<result property="revenueShare" 	column="REVENUE_SHARE" />
		<result property="precio" 			column="PRECIO" />
		<result property="vat" 				column="VAT" />
		<result property="precioNeto" 		column="PRECIO_NETO" />
		<result property="tipoDeCambio"		column="TIPO_DE_CAMBIO" />
		<result property="calculoMontoXPais"	column="CALCULO_MONTO_X_PAIS" />
		<result property="calculoRevenueShare"	column="CALCULO_REVENUE_SHARE" />
		<result property="tarifaMinima" 	column="TARIFA_MINIMA" />
		<result property="preferido" 		column="PREFERIDO" />
		<result property="precioNetoFijo" 		column="PRECIO_NETO_FIJO" />
		<result property="vatFijo" 			column="VAT_FIJO" />
	</resultMap>
	
	<resultMap id="menuAddOn" type="AddOnMenuDTO">	
		<id property="pais" 		column="PAIS" />
	</resultMap>
	
	<resultMap id="paisAddOn" type="PaisAddOnsVDTO">
		<id property="idPaisAddOn" 		column="ID_PAIS_ADD_ON" />
		<id property="nombre" 			column="NOMBRE" />
		<id property="idRelacion" 		column="ID_RELACION" />
	</resultMap>

	<select id="catalogoAddOns" resultMap="addOn">
		SELECT 	ca.ID_ADD_ON,
				ca.ID_RELACION,
			    e.ID_ESTUDIO,
			    e.NOMBRE ESTUDIO,
			    p.ID_PAIS_ADD_ON,
			    p.NOMBRE PAIS,
			    ca.REVENUE_SHARE,
			    ca.PRECIO,
			    ca.VAT,
			    ca.PRECIO_NETO,
			    ca.TIPO_DE_CAMBIO,
			    ca.CALCULO_MONTO_X_PAIS,
			    ca.CALCULO_REVENUE_SHARE,
			    ca.TARIFA_MINIMA,
			    CASE WHEN ca.PREFERIDO = 0 THEN 'NO' ELSE 'SI' END PREFERIDO,
			    ca.VAT_FIJO,
		        ca.PRECIO_NETO_FIJO
		FROM 	DDA_C_ADD_ON ca
		            INNER JOIN DDA_T_ESTUDIO_PAIS_ADD_ON r  ON ca.ID_RELACION = r.ID_RELACION
		            INNER JOIN DDA_C_ESTUDIO_ADD_ON e	    ON r.ID_ESTUDIO = e.ID_ESTUDIO
		            INNER JOIN DDA_C_PAIS_ADD_ON p	        ON r.ID_PAIS_ADD_ON = p.ID_PAIS_ADD_ON
		ORDER BY e.NOMBRE, p.NOMBRE
	</select>

	<select id="menuCatalogoAddOns" resultMap="menuAddOn">
		select	addon.ID_PAIS_ADD_ON PAIS
		from    DDA_C_ADD_ON addon
		ORDER BY addon.ID_PAIS_ADD_ON 
	</select>
	
	<select id="obtenerPaisesAddOn" resultMap="paisAddOn">
		SELECT	p.ID_PAIS_ADD_ON,
		        p.NOMBRE
		FROM    DDA_C_PAIS_ADD_ON p
		ORDER BY p.NOMBRE, p.ID_PAIS_ADD_ON
	</select>
	
	<select id="obtenerPaisesAddOnXEstudio" resultMap="paisAddOn">
		SELECT	p.ID_PAIS_ADD_ON,
		        p.NOMBRE,
		        r.ID_RELACION
		FROM    DDA_C_PAIS_ADD_ON p
		            INNER JOIN DDA_T_ESTUDIO_PAIS_ADD_ON r    ON p.id_pais_add_on = r.id_pais_add_on
		            INNER JOIN DDA_C_ADD_ON ad        ON r.id_relacion = ad.id_relacion
		WHERE   r.id_estudio = #{idEstudio}
		  AND   r.estatus = 1
		  AND   p.estatus = 1
		ORDER BY p.NOMBRE, p.ID_PAIS_ADD_ON
	</select>
	
	<select id="obtenerIdRelacion" resultType="long">
		select	ID_RELACION
		from    DDA_T_ESTUDIO_PAIS_ADD_ON
		where	ID_ESTUDIO = #{param1}
		  and	ID_PAIS_ADD_ON = #{param2}
	</select>

	<select id="catalogoAddOnsPorId" resultMap="addOn">
		SELECT 	ca.ID_ADD_ON,
				ca.ID_RELACION,
			    e.ID_ESTUDIO,
			    e.NOMBRE ESTUDIO,
			    p.ID_PAIS_ADD_ON,
			    p.NOMBRE PAIS,
			    ca.REVENUE_SHARE,
			    ca.PRECIO,
			    ca.VAT,
			    ca.PRECIO_NETO,
			    ca.TIPO_DE_CAMBIO,
			    ca.CALCULO_MONTO_X_PAIS,
			    ca.CALCULO_REVENUE_SHARE,
			    ca.TARIFA_MINIMA,
			    CASE WHEN ca.PREFERIDO = 0 THEN 'NO' ELSE 'SI' END PREFERIDO,
			    ca.VAT_FIJO,
		        ca.PRECIO_NETO_FIJO
		FROM 	DDA_C_ADD_ON ca
		            INNER JOIN DDA_T_ESTUDIO_PAIS_ADD_ON r  ON ca.ID_RELACION = r.ID_RELACION
		            INNER JOIN DDA_C_ESTUDIO_ADD_ON e	    ON r.ID_ESTUDIO = e.ID_ESTUDIO
		            INNER JOIN DDA_C_PAIS_ADD_ON p	        ON r.ID_PAIS_ADD_ON = p.ID_PAIS_ADD_ON
		WHERE   ca.ID_ADD_ON = #{idAddOn}
	</select>

	<update id="updateAddOn" parameterType="CatalogoAddOnDTO">
		update 	DDA_C_ADD_ON 
  		set 	REVENUE_SHARE = #{revenueShare},
  				PRECIO = #{precio},
  				VAT = #{vat},
  				PRECIO_NETO = #{precioNeto},
  				TIPO_DE_CAMBIO = #{tipoDeCambio},
  				TARIFA_MINIMA = #{tarifaMinima}
  		where 	ID_ADD_ON = #{idAddOn}
  	</update>
  	
  	<insert id="guardarAddOn" parameterType="CatalogoAddOnDTO"> 	
		INSERT INTO DDA_C_ADD_ON 
		      (ID_ADD_ON, ID_RELACION , REVENUE_SHARE, PRECIO, VAT, PRECIO_NETO, TIPO_DE_CAMBIO, CALCULO_MONTO_X_PAIS, CALCULO_REVENUE_SHARE, TARIFA_MINIMA, PREFERIDO, 
		      VAT_FIJO, PRECIO_NETO_FIJO )
 	    VALUES(DDA_SQC_ADD_ON.NEXTVAL, #{idRelacion}, #{revenueShare}, #{precio}, #{vat}, #{precioNeto}, #{tipoDeCambio}, #{calculoMontoXPais}, #{calculoRevenueShare}, 
 	    #{tarifaMinima}, #{preferido}, #{vatFijo}, #{precioNetoFijo} ) 	    	        	   
  	</insert>
  	
  	<update id="actualizaAddOn">
  		UPDATE DDA_C_ADD_ON 
  		SET ID_RELACION = #{idRelacion}, REVENUE_SHARE = #{revenueShare}, PRECIO = #{precio}, VAT = #{vat}, PRECIO_NETO = #{precioNeto}, 
  		CALCULO_MONTO_X_PAIS = #{calculoMontoXPais}, CALCULO_REVENUE_SHARE = #{calculoRevenueShare}, TARIFA_MINIMA = #{tarifaMinima}, PREFERIDO = #{preferido},
  		VAT_FIJO = #{vatFijo}, PRECIO_NETO_FIJO = #{precioNetoFijo} 
  		WHERE ID_ADD_ON = #{idAddOn}
  	</update>
  	
  	<update id="actualizaPreferidoAddOn">
  		UPDATE DDA_C_ADD_ON SET PREFERIDO = 0 WHERE ID_RELACION = #{idRelacion}
  	</update>
  	
  	<update id="actualizaPreferidoAddOnPorBorrado">
  		UPDATE DDA_C_ADD_ON SET PREFERIDO = 1 WHERE ID_RELACION = #{idRelacion} AND PRECIO = (SELECT MIN(PRECIO)  FROM DDA_C_ADD_ON WHERE ID_RELACION = #{idRelacion})
  	</update>
  	
  	<select id="numeroRelaciones" resultType="long">
		select	count(*)
		from    DDA_C_ADD_ON
		where	ID_RELACION = #{idRelacion}
	</select>
	
	
	<select id="numeroRelacionesPreferidas" resultType="long">
		select	count(*)
		from    DDA_C_ADD_ON
		where	ID_RELACION = #{idRelacion} AND PREFERIDO = #{preferido}
	</select>
  	
  	<update id="eliminaPrecioAddon">
  		DELETE FROM DDA_C_ADD_ON  WHERE ID_ADD_ON = #{idAddOn}
  	</update>
  	
  	<insert id="crearNuevaRelacion" parameterType="com.mx.dla.dda.admin.catalogos.addons.dtos.RelacionAddOnDTO">
		<selectKey keyProperty="idRelacion" resultType="long" order="BEFORE">
			select DDA_SQC_TITULO.nextVal from DUAL
		</selectKey>
		insert into DDA_T_ESTUDIO_PAIS_ADD_ON(ID_RELACION, ID_ESTUDIO, ID_PAIS_ADD_ON, ESTATUS)
		values (#{idRelacion}, #{idEstudio}, #{idPaisAddOn}, #{estatus})
	</insert>
  	
</mapper>
