<?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.emma.EmmaAgentDAO">

	<parameterMap id="eiData" type="com.i2sema.v2.comm.vo.mc.EIData"/>
	<resultMap id="eiData" type="com.i2sema.v2.comm.vo.mc.EIData" />
	
	<parameterMap id="emmaTData" type="com.i2sema.v2.emma.vo.EmmaTData"/>
	<resultMap id="emmaTData" type="com.i2sema.v2.emma.vo.EmmaTData" />
	
	<parameterMap id="emmaCaData" type="com.i2sema.v2.emma.vo.EmmaCaData"/>
	<resultMap id="emmaCaData" type="com.i2sema.v2.emma.vo.EmmaCaData" />

	<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="insertEmmaTdata" parameterMap="emmaTData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.insertEmmaTdata] emma_t_data 입력 */
			INSERT INTO emma_t_data (
				 agent_v
				,mber_no
				,org_id
				,mt_refkey
				,priority
				,callback
				,content
				,service_type
				,subject
				,file_seq
				,attach_file_group_key
				,msg_cl_type
				,ars_080_num
				,adsend_yn
				,tmp_book_yn
				,reserve_date
				,journey_name
				,journey_version
				,activity_name
				,journey_id
				,journey_version_id
				,extra_data
				,rgst_date
				,send_at
			) VALUES (
				 #{agentV}
				,#{mberNo}
				,#{orgId}
				,#{department}
				,#{priority}
				,#{dsptchNum}
				,#{content}
				,#{serviceType}
				,#{subject}
				,#{imgSeq}
				,#{fileGroupKey}
				,#{msgClType}
				,#{arsNum}
				,#{sendAtNight}
				,#{tmpBookYn}
				,#{reservedDate}
				,#{journeyName}
				,#{journeyVersion}
				,#{activityName}
				,#{journeyId}
				,#{journeyVersionId}
				,#{extraData}
				,#{rgstDate}
				,#{sendAt}
			)
		]]>
	    <selectKey resultType="java.lang.Long" keyProperty="tSeq" order="AFTER">
	        SELECT LAST_INSERT_ID()
	    </selectKey>
	</insert>
	
	<update id="updateEmmaTdata" parameterMap="emmaTData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.insertEmmaTdata] emma_t_data 입력 */
			UPDATE emma_t_data
			SET	 agent_v				= #{agentV}
				,mber_no				= #{mberNo}
				,org_id					= #{orgId}
				,mt_refkey				= #{department}
				,priority				= #{priority}
				,callback				= #{dsptchNum}
				,content				= #{content}
				,service_type			= #{serviceType}
				,subject				= #{subject}
				,file_seq				= #{imgSeq}
				,attach_file_group_key	= #{fileGroupKey}
				,msg_cl_type			= #{msgClType}
				,ars_080_num			= #{arsNum}
				,adsend_yn				= #{sendAtNight}
				,tmp_book_yn			= #{tmpBookYn}
				,reserve_date			= #{reservedDate}
				,journey_name			= #{journeyName}
				,journey_version		= #{journeyVersion}
				,activity_name			= #{activityName}
				,journey_id				= #{journeyId}
				,journey_version_id		= #{journeyVersionId}
				,extra_data				= #{extraData}
				,update_date			= #{updateDate}
			    ,tData_v				= #{tDataV}
			WHERE t_seq = #{tSeq}
		]]>
	</update>
	
	<select id="selectEmmaTData" parameterType="long" resultMap="emmaTData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.selectEmmaTData] emma_t_data 선택 */
			SELECT
				 t_seq					AS tSeq
				,agent_v				AS agentV
				,mber_no				AS mberNo
				,org_id					AS orgId
				,mt_refkey				AS department
				,priority				AS priority
				,callback				AS dsptchNum
				,content				AS content
				,service_type			AS serviceType
				,subject				AS subject
				,file_seq				AS imgSeq
				,attach_file_group_key	AS fileGroupKey
				,msg_cl_type			AS msgClType
				,ars_080_num			AS arsNum
				,adsend_yn				AS sendAtNight
				,tmp_book_yn			AS tmpBookYn
				,reserve_date			AS reservedDate
				,journey_name			AS journeyName
				,journey_version		AS journeyVersion
				,activity_name			AS activityName
				,journey_id				AS journeyId
				,journey_version_id		AS journeyVersionId
				,activity_id			AS activityId
				,noti_group_id			AS notiGroupId
				,extra_data				AS extraData
				,rgst_date				AS rgstDate
				,send_at				AS sendAt
			    ,tData_v                AS tDataV
			FROM emma_t_data
			WHERE t_seq = #{tSeq}
		]]>
	</select>
	
	<update id="updateEmmaTDataBySend" parameterMap="eiData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.updateEmmaTData] emma_t_data 발송 업데이트 */
			UPDATE	emma_t_data
			SET		 activity_id		= #{activityId}
					,noti_group_id		= #{notiGroupId}
					,send_at			= 'Y'
			WHERE	t_seq = #{tSeq}
		]]>
	</update>
	
	<insert id="insertEmmaCaData" parameterMap="emmaCaData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.insertEmmaCaData] emma_mcd 입력 */
			INSERT INTO emma_mcd (
				 noti_id
				,noti_group_id
				,custom_key
				,t_seq
				,mber_no
				,org_id
				,recipient_num
				,content
				,date_client_req
				,rgst_date
				,send_at
				,test_yn
			) VALUES (
				 #{notiId}
				,#{notiGroupId}
				,#{customKey}
				,#{tSeq}
				,#{mberNo}
				,#{orgId}
				,#{recipientNum}
				,#{content}
				,#{dateClientReq}
				,#{rgstDate}
				,#{sendAt}
				,#{testYn}
			)
		]]>
	</insert>
	
	<select id="selectTSeq" resultType="java.lang.Long">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.selectTSeq] emma_mcd tSeq 확인 */
			SELECT		t_seq AS tSeq
			FROM		emma_mcd
			WHERE		send_at = 'N'
			GROUP BY	t_seq
		]]>
	</select>
	
	<update id="updateEmmaTDataBook" parameterMap="emmaTData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.updateEmmaTDataBook] emma_t_data 예약전송 상태 변경 */
			UPDATE	emma_t_data
			SET		 tmp_book_yn		= 'S'
			WHERE	t_seq = #{tSeq}
		]]>
	</update>
	
	<select id="emmaCaDataCnt" parameterType="map" resultType="int">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.emmaCaDataCnt] emma_ca_data 카운트 */
			SELECT COUNT(0)
			FROM emma_mcd
			WHERE
				t_seq = #{tSeq}					AND
				send_at = 'N'					AND
				date_client_req < #{targetDate}
		]]>
	</select>
	
	<select id="listEmmaCaData" parameterType="map" resultMap="emmaCaData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.listEmmaCaData] emma_ca_data 리스트 */
			SELECT
				 MCD.noti_id			AS notiId
				,MCD.custom_key			AS customKey
				,MCD.recipient_num		AS recipientNum
				,MCD.content			AS content
				,MCD.date_client_req	AS dateClientReq
			FROM emma_mcd MCD 
			WHERE
				MCD.t_seq = #{tSeq}					AND
				MCD.send_at = 'N'					AND
				MCD.date_client_req < #{targetDate}
			LIMIT #{recordCountPerPage}
		]]>
	</select>
	
	<update id="updateMcCaDataSendAt" parameterMap="emmaCaData">
		<![CDATA[
			/* [com.i2sema.v2.emma.EmmaAgentDAO.updateMcCaDataSendAt] emma_mcd sendAt 업데이트 */
			UPDATE	emma_mcd 
			SET		send_at = #{sendAt}
			WHERE	noti_id = #{notiId}
		]]>
	</update>

  <select id="callbackCnt" parameterType="map" resultType="int">
		<![CDATA[
    /* [com.i2sema.v2.emma.EmmaAgentDAO.selectCallback] callbackList */
    SELECT COUNT(0)
    FROM dsptch_num_mng
    WHERE dsptch_num = #{dsptchNum}
      AND mber_no = #{mberNo}
      AND org_id = #{orgId}
      AND use_at = 'Y'
    ]]>
	</select>
	
</mapper>
