<?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.admin.catalogos.tipoCambioAddOns.daos.TipoCambioAddOnsDAO">

   <resultMap id="resultsTransaccionTipoCambio" type="TipoCambioAddOnsDTO">
		<result property="idTipoCambio" column="ID_TIPOCAMBIO" />
		<result property="descripcion" column="DESCRIPCION" />					
	</resultMap>


	<select id="obtnerPaisMes" resultType="TipoCambioPaisMesAddOnsDTO">
		select 
			pais,
			mes1,
			mes2,
			mes3,
			mes4,
			mes5,
			mes6,
			mes7,
			mes8,
			mes9,
			mes10,
			mes11,
			mes12
		from (
		select 
		pa.SIGLA pais, 
		TO_CHAR(tc.mes,'MM') AS meses,
		tc.valor 
		from DDA_T_TIPO_CAMBIO_ADD_ON tc INNER JOIN DDA_T_ESTUDIO_PAIS_ADD_ON ep   ON tc.id_relacion = ep.id_relacion
		inner join DDA_C_PAIS_ADD_ON pa on pa.ID_PAIS_ADD_ON = ep.ID_PAIS_ADD_ON
		where ep.ID_ESTUDIO = #{idEstudio} 
		AND	TO_CHAR(EXTRACT(YEAR FROM tc.mes)) = #{anio}
		)
		 PIVOT ( max ( valor )
		                FOR meses
		                IN ( '01' AS mes1,'02' as mes2,'03' AS mes3,'04' AS mes4,'05' AS mes5,'06' AS mes6,'07' AS mes7,'08' AS mes8,'09' AS mes9,'10' AS mes10,'11' AS mes11,'12' AS mes12 )
		            )
		order by 1,2
		<!-- select p.SIGLA pais, ' ' mes1, ' ' mes2,' ' mes3,' ' mes4,' ' mes5,' ' mes6,' ' mes7,' ' mes8,' ' mes9,' ' mes10,' ' mes11,' ' mes12 from DDA_T_ESTUDIO_PAIS_ADD_ON ep, DDA_C_PAIS_ADD_ON p
		where ep.ID_PAIS_ADD_ON = p.ID_PAIS_ADD_ON
		and  ep.id_Estudio = #{idEstudio} -->
	
	</select>

   <select id="consultaTiposCambio"  resultMap="resultsTransaccionTipoCambio" 
		parameterType="map">
        SELECT 
           ID_TIPOCAMBIO, 
           DESCRIPCION
        FROM DDA_C_TIPO_CAMBIO
	</select>
	
	<resultMap id="tipoCambioPais" type="TipoCambioAddOnsDTO">
		<result property="idTipoCambio" column="ID_TIPOCAMBIO" />
		<result property="idRelacion" 	column="ID_RELACION" />
		<result property="idEstudio" 	column="ID_ESTUDIO" />
		<result property="idPais" 		column="ID_PAIS" />
		<result property="mes" 			column="MES" />
		<result property="valor" 		column="VALOR" />
	</resultMap>
	
	<resultMap id="paisAddOn" type="PaisAddOnsVDTO">
		<id property="idPaisAddOn" 	column="ID_PAIS_ADD_ON" />
		<id property="nombre" 		column="NOMBRE" />
		<id property="sigla" 		column="SIGLA" />
		<id property="idRelacion" 	column="ID_RELACION" />
	</resultMap>
	
	<select id="obtenerPaisXSigla" resultMap="paisAddOn">
		select	p.ID_PAIS_ADD_ON,
				p.NOMBRE,
				p.SIGLA
		from    DDA_C_PAIS_ADD_ON p
		where 	SIGLA = #{sigla}
		ORDER BY p.NOMBRE 
	</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
		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="obtnerMesTiposXPais" resultMap="tipoCambioPais">
		SELECT 	tc.ID_TIPO_CAMBIO_ADD_ON ID_TIPOCAMBIO, 
				ep.ID_RELACION,
				ep.ID_ESTUDIO,
				ep.ID_PAIS_ADD_ON ID_PAIS, 
				tc.MES, 
				tc.VALOR 
		FROM 	DDA_T_TIPO_CAMBIO_ADD_ON tc
			        INNER JOIN DDA_T_ESTUDIO_PAIS_ADD_ON ep   ON tc.id_relacion = ep.id_relacion
			        INNER JOIN DDA_C_ESTUDIO_ADD_ON e   ON e.id_estudio = ep.id_estudio
		WHERE 	ep.ID_PAIS_ADD_ON = #{idPais}
		  AND	TO_CHAR(EXTRACT(YEAR FROM tc.mes)) = #{anio}
		  AND 	ep.ID_ESTUDIO = #{idEstudio}
	</select>
	
	<select id="verificarExistenciaTipoCambioAddOn" resultType="int">
		SELECT COUNT (*)
		FROM DDA_T_TIPO_CAMBIO_ADD_ON 
		WHERE TO_CHAR(MES, 'DD/MM/YYYY') = #{mes}
		  AND ID_RELACION = #{idRelacion}
	</select>
	
	<insert id="creaTipoCambio" parameterType="TipoCambioAddOnsDTO" >
		INSERT INTO DDA_T_TIPO_CAMBIO_ADD_ON 
		  (ID_TIPO_CAMBIO_ADD_ON, ID_RELACION, MES, VALOR) 
		     values(
		        DDA_SQC_TIPO_CAMBIO_ADD_ON.NEXTVAL,
		        #{idRelacion, javaType=Long, jdbcType=NUMERIC},
		        #{mes, javaType=Date, jdbcType=DATE},
		        #{valor, javaType=String, jdbcType=VARCHAR}
		      )    
	</insert>

	<update id="actualizaTipoCambio" parameterType="TipoCambioAddOnsDTO">
		UPDATE	DDA_T_TIPO_CAMBIO_ADD_ON
		   SET	VALOR = #{valor, javaType=String, jdbcType=VARCHAR}
		WHERE	ID_RELACION = #{idRelacion, javaType=Long, jdbcType=NUMERIC}
		  AND	TO_CHAR(MES, 'DD/MM/YYYY') = TO_CHAR(#{mes, javaType=Date, jdbcType=DATE}, 'DD/MM/YYYY')
	</update>

</mapper>