<?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.v2.ita.itaAgentDAO">
	
	<parameterMap id="eiData" type="com.i2sema.v2.comm.vo.mc.EIData"/>
	<resultMap id="eiData" type="com.i2sema.v2.comm.vo.mc.EIData" />
	
	<parameterMap id="itaMcd" type="com.i2sema.v2.ita.vo.tran.ItaMcd"/>
	<resultMap id="itaMcd" type="com.i2sema.v2.ita.vo.tran.ItaMcd" />
	
	<parameterMap id="itaMcdFailback" type="com.i2sema.v2.ita.vo.tran.ItaMcdFailback"/>
	<resultMap id="itaMcdFailback" type="com.i2sema.v2.ita.vo.tran.ItaMcdFailback" />
	
	<parameterMap id="itaTData" type="com.i2sema.v2.ita.vo.tran.ItaTData"/>
	<resultMap id="itaTData" type="com.i2sema.v2.ita.vo.tran.ItaTData" />
	
	<parameterMap id="itaTran" type="com.i2sema.v2.ita.vo.tran.ItaTran"/>
	<resultMap id="itaTran" type="com.i2sema.v2.ita.vo.tran.ItaTran" />
	
	<select id="selectDepartmentData" parameterType="string" resultType="map">
		/* [com.i2sema.v2.emma.EmmaAgentDAO.selectDpartmentData] dept 정보 select */
		<![CDATA[SELECT dept_name, dept_code FROM department WHERE mt_refkey = #{department}]]>
	</select>
	
	<insert id="insertItaMcd" parameterMap="itaMcd">
		/* [com.i2sema.v2.at.itaAgentDAO.insertItaMcd] ita_mcd insert */
		INSERT INTO ita_mcd (
			noti_id
			,noti_group_id
			,custom_key
			,t_seq
			,mber_no
			,org_id
			<!-- ,dataExtensionObj -->
			,mt_refkey
			,content
			,priority
			,tmp_book_yn
			,date_client_req
			,msg_cl_type
			,msg_type
			,tmplat_cd
			,recipient_num
			,img_seq
			,kakao_img_link
			,t_kakao
			,optional_data
			,sender_key
			,failback_yn
			,agent_v
			,test_yn
			,adsend_yn
			,send_at
		) VALUES (
			 #{notiId}
			,#{notiGroupId}
			,#{customKey}
			,#{tSeq}
			,#{mberNo}
			,#{orgId}
			,#{department}
			,#{content}
			,'S'
			,#{tmpBookYn}
			,#{dateClientReq}
			,#{msgClType}
			,#{msgType}
			,#{tmplatCd}
			,#{recipientNum}
			,#{imgSeq}
			,#{kakaoImgLink}
			,#{tKakao}
			,#{optionalData}
			,#{senderKey}
			,#{failbackYn}
			,#{agentV}
			,#{testYn}
			,#{adsendYn}
			,#{sendAt}
		)
	</insert>
	
	<update id="updateItaTDataBySend" parameterMap="eiData">
		/* [com.i2sema.v2.at.itaAgentDAO.updateItaTDataBySend] ita_t_data 전송상태 변경 */
		UPDATE	ita_t_data
		SET		 activity_id		= #{activityId}
				,noti_group_id		= #{notiGroupId}
				,send_at			= 'Y'
		WHERE	t_seq = #{tSeq}
	</update>
	
	<insert id="insertItaMcdFailback" parameterMap="itaMcdFailback">
		/* [com.i2sema.v2.at.itaAgentDAO.insertItaMcdFailback] ita_mcd_failback insert */
		INSERT INTO ita_mcd_failback (
			noti_id
			,noti_group_id
			,t_seq
			,date_client_req
			,file_seq
			,attach_file_group_key
			,subject
			,content
			,callback
			,ars_080_num
			,service_type
			,msg_cl_type
			,agent_v
			,mt_refkey
			,mber_no
			,org_id
			,send_at
		) VALUES (
			 #{notiId}
			 ,#{notiGroupId}
			 ,#{tSeq}
			 ,#{dateClientReq}
			 ,#{fileSeq}
			 ,#{attachFileGroupKey}
			 ,#{subject}
			 ,#{content}
			 ,#{callback}
			 ,#{ars080Num}
			 ,#{serviceType}
			 ,#{msgClType}
			 ,#{agentV}
			 ,#{mtRefkey}
			 ,#{mberNo}
			 ,#{orgId}
			 ,#{sendAt}
		)
	</insert>
	
	<select id="selectTSeq" resultType="java.lang.Long">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.selectTSeq] ita_mcd tSeq 확인 */
			SELECT		t_seq AS tSeq
			FROM		ita_mcd
			WHERE		send_at = 'N'
			GROUP BY	t_seq
		]]>
	</select>
	
	<select id="selectItaTData" parameterType="long" resultMap="itaTData">
			/* [com.i2sema.v2.at.itaAgentDAO.selectItaTData] ita_t_data 선택 */
				SELECT	itd.t_seq			AS tSeq
				,itd.flb_seq				AS flbSeq
				,itd.img_seq				AS imgSeq
				,itd.agent_v				AS agentV
				,itd.tData_v				AS tDataV
				,itd.reserve_date			AS reserveDate
				,itd.journey_name			AS journeyName
				,itd.journey_version		AS journeyVersion
				,itd.activity_name			AS activityName
				,itd.journey_id				AS journeyId
				,itd.journey_version_id		AS journeyVersionId
				,itd.activity_id			AS activityId
				,itd.noti_group_id			AS notiGroupId
				,itd.content				AS content
				,itd.mt_refkey				AS mtRefkey
				,itd.msg_type				AS msgType
				,itd.kakao_img_link			AS kakaoImgLink
				,itd.img_url				AS imgUrl
				,itd.tmplat_cd				AS tmplatCd
				,itd.plus_uuid				AS plusUuid
				,itd.sender_key				AS senderKey
				,itd.tmp_book_yn			AS tmpBookYn
				,itd.msg_cl_type			AS msgClType
				,itd.ars_080_num			AS ars080Num
				,itd.failback_yn			AS failbackYn
				,itd.send_at				AS sendAt
				,itd.mber_no				AS mberNo
				,itd.org_id					AS orgId
				,itd.t_kakao				AS tKakao
				,itd.optional_data			AS optionalData
				,itd.extra_data				AS extraData
				,ifb.attach_file_group_key	AS flbAttachFileGroupKey
				,ifb.file_seq				AS flbFileSeq
				,ifb.ars_080_num			AS flbArs080Num
				,ifb.msg_cl_type			AS flbMsgClType
<!--				,ifb.subject				AS flbSubject
				,ifb.content				AS flbContent
				,ifb.service_type			AS flbServiceType
				,ifb.msg_cl_type			AS flbMsgClType
				,ifb.callback				AS flbCallback -->
			FROM ita_t_data itd 
				LEFT JOIN ita_failback ifb ON itd.flb_seq = ifb.flb_seq
			WHERE itd.t_seq = #{tSeq}
	</select>
	
	<update id="updateItaTDataBook" parameterMap="itaTData">
		/* [com.i2sema.v2.at.itaAgentDAO.updateItaTDataBook] ita_t_data 예약전송 상태 변경 */
		UPDATE	ita_t_data
		SET		 tmp_book_yn		= 'S'
		WHERE	t_seq = #{tSeq}
	</update>
	
	<select id="itaMCDCount" parameterType="map" resultType="int">
        <![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.itaMCDCount] ita_mcd 개수 */
			SELECT	COUNT(*) AS cnt
			FROM 		ita_mcd
			WHERE	1 = 1
					AND t_seq  = #{tSeq} 
					AND date_client_req < #{targetDate}
					AND send_at = 'N'
		]]>
     </select>
     
     <select id="listMcCaData" parameterType="map" resultMap="itaMcd">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.listMcCaData] ita_mcd 목록 */
			SELECT			*
			FROM				(
									SELECT		MCD.noti_id				AS notiId
												,MCD.noti_group_id		AS notiGroupId
												,MCD.custom_key			AS customKey
												,MCD.t_seq				AS tSeq
												,MCD.mber_no			AS mberNo
												,MCD.org_id				AS orgId
												,MCD.mt_refkey			AS department
												,MCD.content			AS content
												,MCD.date_client_req	AS dateClientReq
												,MCD.msg_cl_type		AS msgClType
												,MCD.msg_type			AS msgType
												,MCD.tmplat_cd			AS tmplatCd
												,MCD.recipient_num		AS recipientNum
												,MCD.img_seq			AS imgSeq
												,MCD.kakao_img_link		AS kakaoImgLink
												,MCD.t_kakao			AS tKakao
												,MCD.optional_data		AS optionalData
												,MCD.sender_key			AS senderKey
												,MCD.failback_yn		AS failbackYn
												,MCD.agent_v			AS agentV
												,MCD.test_yn			AS testYn
									FROM		ita_mcd MCD
									WHERE		1=1					
												AND t_seq = #{tSeq} 
												AND date_client_req < #{targetDate}
												AND send_at = 'N'
			) B
			ORDER BY		tSeq
			LIMIT #{recordCountPerPage}
		]]>
	</select>
	
	<update id="updateMcCaDataSendAt" parameterMap="itaMcd">
		<![CDATA[
		/* [com.i2sema.v2.at.itaAgentDAO.updateMcCaDataSendAt] ita_mcd 전송상태 업데이트 */
			UPDATE		ita_mcd
			SET				send_at = #{sendAt}
			WHERE		noti_id = #{notiId}
		]]>
	</update>
	
	<insert id="inserItaTran" parameterMap="itaTran">
		/* [com.i2sema.v2.at.itaAgentDAO.inserItaTran] ITA_TRAN 등록 */
			INSERT INTO		ita_talk_tran
			(
				mt_refkey
				,date_client_req
				,content
				,msg_status
				,recipient_num
				,msg_type
				,sender_key
				,template_code
				,ad_flag
				,kko_btn_info
				,img_url
				,img_link
				,optional_data
				,org_id
				,noti_group_id
				,noti_id
				,failback_yn
				,agent_version
				,v2_seq
				,custom_key
				,extra_data
				,priority
			)
			VALUES
			(
				#{mtRefkey}
				,#{dateClientReq}
				,#{content}
				,'1'
				,#{recipientNum}
				,#{msgType}
				,#{senderKey}
				,#{templateCode}
				<if test="msgType == '1008' or msgType == '1012'">
					,'N'
				</if>
				<if test="msgType == '1009' or msgType == '1013' or msgType == '1014'">
					,'Y'
				</if>
				,#{kkoBtnInfo}
				,#{imgUrl}
				,#{imgLink}
				,#{optionalData}
				,#{orgId}
				,#{notiGroupId}
				,#{notiId}
				,#{failbackYn}
				,#{agentVersion}
				,#{v2Seq}
				,#{customKey}
				,#{extraData}
				,#{priority}
			)
	</insert>
	
	<insert id="insertItaTData" parameterMap="itaTData">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.insertItaTData] */
			INSERT INTO i2sema.ita_t_data (
				  flb_seq
				, img_seq
				, agent_v
				, reserve_date
				, journey_name
				, journey_version
				, activity_name
				, journey_id
				, journey_version_id
				, content
				, mt_refkey
				, msg_type
				, kakao_img_link
				, img_url
				, tmplat_cd
				, plus_uuid
				, sender_key
				, optional_data
				, t_kakao
				, tmp_book_yn
				, msg_cl_type
				, ars_080_num
				, failback_yn
				, mber_no
				, org_id
				, extra_data
			)
			VALUES
			(
				  #{flbSeq}
				, #{imgSeq}
				, #{agentV}
				, #{reserveDate}
				, #{journeyName}
				, #{journeyVersion}
				, #{activityName}
				, #{journeyId}
				, #{journeyVersionId}
				, #{content}
				, #{mtRefkey}
				, #{msgType}
				, #{kakaoImgLink}
				, #{imgUrl}
				, #{tmplatCd}
				, #{plusUuid}
				, #{senderKey}
				, #{optionalData}
				, #{tKakao}
				, #{tmpBookYn}
				, #{msgClType}
				, #{ars080Num}
				, #{failbackYn}
				, #{mberNo}
				, #{orgId}
				, #{extraData}
			)
			
		]]>
		<selectKey keyProperty="tSeq" resultType="Long" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey>
	</insert>
	
	<insert id="insertItaFailback">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.insertItaFailback] */
			INSERT INTO ita_failback (
				  file_seq
				, attach_file_group_key
				, subject
				, content
				, service_type
				, msg_cl_type
				, ars_080_num
				, callback
				, mber_no
				, org_id
			)
			VALUES
			(
				  #{fileSeq}
				, #{attachFileGroupKey}
				, #{subject}
				, #{content}
				, #{serviceType}
				, #{msgClType}
				, #{ars080Num}
				, #{callback}
				, #{mberNo}
				, #{orgId}
			)
		]]>
			<selectKey keyProperty="flbSeq" resultType="Long" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey>
	</insert>
	
	<update id="updateItaTData" parameterMap="itaTData">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.updateItaTData] */
			UPDATE i2sema.ita_t_data
			SET	  flb_seq				= #{flbSeq}
				, img_seq				= #{imgSeq}
				, agent_v				= #{agentV}
				, tData_v				= #{tDataV}
				, reserve_date			= #{reserveDate}
				, journey_name			= #{journeyName}
				, journey_version		= #{journeyVersion}
				, activity_name			= #{activityName}
				, journey_id			= #{journeyId}
				, journey_version_id	= #{journeyVersionId}
				, content				= #{content}
				, mt_refkey				= #{mtRefkey}
				, msg_type				= #{msgType}
				, kakao_img_link		= #{kakaoImgLink}
				, img_url				= #{imgUrl}
				, tmplat_cd				= #{tmplatCd}
				, plus_uuid				= #{plusUuid}
				, sender_key			= #{senderKey}
				, optional_data			= #{optionalData}
				, t_kakao				= #{tKakao}
				, tmp_book_yn			= #{tmpBookYn}
				, msg_cl_type			= #{msgClType}
				, ars_080_num			= #{ars080Num}
				, failback_yn			= #{failbackYn}
				, mber_no				= #{mberNo}
				, org_id				= #{orgId}
				, extra_data			= #{extraData}
				, update_date			= sysdate()
			WHERE t_seq = #{tSeq}
		]]>
	</update>
	
	<update id="updateItaFailback">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.updateItaFailback] */
			UPDATE ita_failback
			SET   file_seq					= #{fileSeq}
				, attach_file_group_key		= #{attachFileGroupKey}
				, subject					= #{subject}
				, content					= #{content}
				, service_type				= #{serviceType}
				, msg_cl_type				= #{msgClType}
				, ars_080_num				= #{ars080Num}
				, callback					= #{callback}
				, mber_no					= #{mberNo}
				, org_id					= #{orgId}
			WHERE flb_seq = #{flbSeq}
		]]>
	</update>
	
	<select id="selectSenderKeyByUuid" resultType="String" parameterType="com.i2sema.v2.comm.vo.EIAgentData">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.selectSenderKeyByUuid] */
			SELECT		sender_key AS senderKey
			FROM		profile
			WHERE		plus_uuid = #{kakaoProfile}
			LIMIT		1
		]]>
	</select>
	
	<select id="selectKakaoImgUrl" resultType="String" parameterType="com.i2sema.v2.ita.vo.FtAgent">
		<![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.selectKakaoImgUrl] */
			SELECT		img_url AS imgUrl
			FROM		ita_frt_img
			WHERE		img_seq = #{imgSeq}
			LIMIT		1
		]]>
	</select>
	
	
	<select id="selectAtTmplCd" parameterType="long" resultType="String">
        <![CDATA[
			/* [com.i2sema.v2.at.itaAgentDAO.selectAtTmplCd] 알림톡 템플릿 코드 */
			SELECT tmplat_cd AS tmplatCd  FROM ita_biz_tmplat ibt WHERE biz_seq = #{bizSeq}
		]]>
     </select>
</mapper>
