<?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.i2sema.rcs.comm.dao.AgentDAO">

	<parameterMap type="com.i2sema.rcs.comm.vo.tran.McCaData" id="mcCaData" />
	<parameterMap type="com.i2sema.rcs.comm.vo.tran.McTData" id="mcTData" />

	<resultMap id="existTdataMap" type="map">
		<result property="seq" javaType="java.lang.Long" column="seq" />
		<result property="dateClientReq" javaType="java.time.LocalDateTime" column="dateClientReq" />
	</resultMap>
	
	<resultMap id="listMcCaDataMap" type="map">
		<result property="seq" javaType="java.lang.Long" column="seq" />
		<result property="notiId" javaType="string" column="notiId" />
		<result property="tSeq" javaType="java.lang.Long" column="tSeq" />
		<result property="agentV" javaType="string" column="agentV" />
		<result property="notiGroupId" javaType="string" column="notiGroupId" />
		<result property="dateClientReq" javaType="java.time.LocalDateTime" column="dateClientReq" />
		<result property="content" javaType="string" column="content" />
		<result property="subject" javaType="string" column="subject" />
		<result property="callback" javaType="string" column="callback" />
		<result property="brandSeq" javaType="java.lang.Long" column="brandSeq" />
		<result property="rcsBtnInfo" javaType="string" column="rcsBtnInfo" />
		<result property="rcsImgUrl" javaType="string" column="rcsImgUrl" />
		<result property="recipientNum" javaType="string" column="recipientNum" />
		<result property="rgstDate" javaType="java.time.LocalDateTime" column="rgstDate" />
		<result property="mberNo" javaType="int" column="mberNo" />
		<result property="orgId" javaType="string" column="orgId" />
		<result property="sendAt" javaType="string" column="sendAt" />
	</resultMap>

	<select id="selectTData" resultType="com.i2sema.rcs.comm.vo.tran.McTData" parameterType="map">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.selectTData] rcs_t_data 검색 */
			SELECT	service_type AS serviceType,
							msg_cl_type AS msgClType,
							rcs_format_id AS rcsFormatId,
							rcs_img_url AS rcsImgUrl,
							ars_080_num AS ars080num,
							brand_seq AS brandSeq,
							seq AS seq,
							org_id AS orgId,
							noti_group_id AS notiGroupId
			FROM		rcs_t_data
			WHERE	seq = #{tSeq}
		]]>
	</select>

	<insert id="insertTData" parameterMap="mcTData">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.insertTdata] rcs_t_data 테이블 적재 */
			INSERT INTO rcs_t_data (
				agent_v,
				date_client_req,
				yyyy_mm_dd,
				subject,
				content,
				callback,
				ars_080_num,
				priority,
				service_type,
				rcs_format_id,
				start_send_date,
				finish_send_date,
				noti_group_id,
				tmp_book_yn,
				brand_seq,
				rcs_btn_info,
				rcs_img_url,
				all_cnt,
				fail_cnt,
				success_cnt,
				failback_cnt,
				msg_cl_type,
				adsend_yn,
				failover_yn,
				rgst_id,
				rgst_date,
				modi_id,
				modi_date,
				mber_no,
				org_id
			) VALUES (
				#{agentV},
				#{dateClientReq},
				#{yyyyMmDd},
				#{subject},
				#{content},
				#{callback},
				#{ars080num},
				#{priority},
				#{serviceType},
				#{rcsFormatId},
				#{startSendDate},
				#{finishSendDate},
				#{notiGroupId},
				#{tmpBookYn},
				#{brandSeq},
				#{rcsBtnInfo},
				#{rcsImgUrl},
				#{allCnt},
				#{failCnt},
				#{successCnt},
				#{failbackCnt},
				#{msgClType},
				#{adSendYn},
				#{failoverYn},
				#{rgstId},
				#{rgstDate},
				#{modiId},
				#{modiDate},
				#{mberNo},
				#{orgId}
			)
		]]>
		<selectKey keyProperty="seq" resultType="Long" order="AFTER">SELECT
			LAST_INSERT_ID()
		</selectKey>
	</insert>

	<insert id="insertMccaData" parameterMap="mcCaData">
		<![CDATA[
		/* [com.i2sema.rcs.comm.dao.AgentDAO.insertMccaData] MCCA 테이블 적재 */
		INSERT INTO rcs_mcca_data (
			noti_id,
			t_seq,
			agent_v,
			noti_group_id,
			date_client_req,
			content,
			subject,
			callback,
			brand_seq,
			rcs_btn_info,
			rcs_img_url,
			recipient_num,
			mber_no,
			org_id	
		) VALUES (
			#{notiId},
			#{tSeq},
			#{agentV},
			#{notiGroupId},
			#{dateClientReq},
			#{content},
			#{subject},
			#{callback},
			#{brandSeq},
			#{rcsBtnInfo},
			#{rcsImgUrl},
			#{recipientNum},
			#{mberNo},
			#{orgId}
		)
		]]>

		<selectKey keyProperty="seq" resultType="Long" order="AFTER">SELECT
			LAST_INSERT_ID()
		</selectKey>
	</insert>

	<select id="selectExistTData" resultMap="existTdataMap"
		parameterType="map">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.selectExistTData] RCSTDATA 존재 확인 */
			SELECT			seq,
									date_client_req AS dateClientReq,
									content AS content,
									subject AS subject,
									rcs_btn_info AS rcsBtnInfo,
									ars_080_num AS ars080num
			FROM				rcs_t_data
			WHERE			noti_group_id = #{notiGroupId}
									AND date_client_req = #{dateClientReq}
		]]>
	</select> 

	<select id="selectExistTDataPerPast" resultMap="existTdataMap"
		parameterType="map">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.selectExistTDataPerPast] RCSTDATA 존재 확인 (당일) */
			SELECT			seq,
									date_client_req AS dateClientReq,
									content AS content,
									subject AS subject,
									rcs_btn_info AS rcsBtnInfo
			FROM				rcs_t_data
			WHERE			noti_group_id = #{notiGroupId}
									AND yyyy_mm_dd = #{yyyyMmDd}
		]]>
	</select>

	<select id="selectNotiGroupId" resultType="map">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.selectNotiGroupId] RCSMCCADATA NOTIGROUPID 확인 */
			SELECT			noti_group_id AS notiGroupId,
									t_seq AS tSeq
			FROM			rcs_mcca_data
			WHERE			1=1
							AND send_at = 'N'
			GROUP BY		noti_group_id
		]]>
	</select>

	<select id="listMcCaDataCount" parameterType="map" resultType="int">
        <![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.listMcCaDataCount] notiid 목록 개수 */
			SELECT	COUNT(*) AS cnt
			FROM 		rcs_mcca_data
			WHERE	1 = 1
							AND noti_group_id = #{notiGroupId} 
							AND date_client_req < #{targetDate}
							AND send_at = 'N'
		]]>
     </select>   
    
	<select id="listMcCaData" parameterType="map" resultMap="listMcCaDataMap">
		<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.listMcCaData] notiid 목록 */
			SELECT			*
			FROM				(
									SELECT		seq AS seq,
														noti_id AS notiId,
														t_seq AS tSeq,
														agent_v AS agentV,
														noti_group_id AS notiGroupId,
														date_client_req AS dateClientReq,
														content AS content,
														subject AS subject,
														callback AS callback,
														brand_seq AS brandSeq,
														rcs_btn_info AS rcsBtnInfo,
														rcs_img_url AS rcsImgUrl,
														recipient_num AS recipientNum,
														rgst_date AS rgstDate,
														mber_no AS mberNo,
														org_id AS orgId,
														send_at AS sendAt
									FROM			rcs_mcca_data
									WHERE		1=1					
														AND noti_group_id = #{notiGroupId} 
														AND date_client_req < #{targetDate}
														AND send_at = 'N'
			) B
			ORDER BY		seq
			LIMIT #{firstIndex}, #{recordCountPerPage}
		]]>
	</select>
	
	<update id="updateMcCaDataSendAt" parameterType="com.i2sema.rcs.comm.vo.tran.McCaData">
			<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.updateMcCaDataSendAt] notiid 목록 */
				UPDATE		rcs_mcca_data
				SET				send_at = 'Y'
				WHERE		noti_id = #{notiId}
			]]>
	</update>
	
	<insert id="insertRcsTran" parameterType="com.i2sema.rcs.comm.vo.tran.RcsTran">
			<![CDATA[
			/* [com.i2sema.rcs.comm.dao.AgentDAO.insertRcsTran] RCS TRAN 등록 */
				INSERT INTO		rta_rcs_tran
				(
					date_client_req,
					subject,
					content,
					rcs_btn_info,
					rcs_img_url,
					callback,
					service_type,
					rcs_format_id,
					msg_status,
					rcs_header,
					rcs_footer,
					recipient_num,
					brand_seq,
					t_seq,
					org_id,
					noti_group_id,
					noti_id
				)
				VALUES
				(
					#{dateClientReq},
					#{subject},
					#{content},
					#{rcsBtnInfo},
					#{rcsImgUrl},
					#{callback},
					#{serviceType},
					#{rcsFormatId},
					#{msgStatus},
					#{rcsHeader},
					#{rcsFooter},
					#{recipientNum},
					#{brandSeq},
					#{tSeq},
					#{orgId},
					#{notiGroupId},
					#{notiId}
				)
			]]>
	</insert>
</mapper>