<?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.comm.dao.CsvCreateDAO">

	<select id="selectOrg" resultType="string">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.selectOrg] ORG 선택 */
			SELECT	org_id
			FROM	sub_mber_info
			WHERE 	NVL(org_id, '') <> ''
		]]>
	</select>

	<insert id="createDayLog" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.createDayLog] 일별 로그 생성 */
			CREATE TABLE ${tableName} AS
			SELECT	*
			FROM	${targetTableName}
			WHERE	date_mt_report BETWEEN #{startDate} AND #{endDate}
			UNION ALL
			SELECT	*
			FROM	${beforeTargetTableName}
			WHERE	date_mt_report BETWEEN #{startDate} AND #{endDate}
		]]>
	</insert>

	<delete id="dropTable" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.dropDayLog] 테이블 삭제 */
			DROP TABLE IF EXISTS ${tableName}
		]]>
	</delete>

	<insert id="createBase" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.createBase] create base */
			CREATE TABLE ${tableName} AS
			SELECT	*
			FROM	v2_mc_csv_base
		]]>
	</insert>

	<insert id="createBaseIndex" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.createBaseIndex] create base index */
			CREATE INDEX ${tableName}_messageid_IDX
			USING BTREE ON ${tableName} (messageid,channel1)
		]]>
	</insert>

	<insert id="insertEmma" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.insertEmma] SMS/LMS/MMS 입력 */
			INSERT INTO ${tableName}
			SELECT	  noti_group_id AS grouId
					, noti_id AS messageId
					, service_type AS channel1
					, NULL AS channel2
					, date_rslt AS compDt
					, mt_report_code_ib AS channel1FCode
					, NULL AS channel2FCode
					, mt_refkey AS mtRefKey
					, date_client_req AS dateClientReq
					, content AS channel1Content
					, NULL AS channel2Content
					, callback AS callback 
					, recipient_num AS recipientNum
					, NULL AS 080ArsNum
					, custom_key AS customKey
					, extra_data AS extraData
					, date_rslt AS channel1DateRslt
					, NULL AS channel2DateRslt
					, date_mt_report AS channel1DateMtReport
					, NULL AS channel2DateMtReport
					, agent_version AS agentVersion
			FROM 	${targetTableName}
			WHERE	org_id = #{orgId}
			UNION ALL
			SELECT	noti_group_id AS grouId
					, noti_id AS messageId
					, service_type AS channel1
					, NULL AS channel2
					, date_rslt AS compDt
					, mt_report_code_ib AS channel1FCode
					, NULL AS channel2FCode
					, mt_refkey AS mtRefKey
					, date_client_req AS dateClientReq
					, content AS channel1Content
					, NULL AS channel2Content
					, callback AS callback 
					, recipient_num AS recipientNum
					, NULL AS 080ArsNum
					, custom_key AS customKey
					, extra_data AS extraData
					, date_rslt AS channel1DateRslt
					, NULL AS channel2DateRslt
					, date_mt_report AS channel1DateMtReport
					, NULL AS channel2DateMtReport
					, agent_version AS agentVersion
			FROM	${tranTableName}
			WHERE	date_mt_report IS NOT NULL
					AND org_id = #{orgId}
		]]>
	</insert>

	<insert id="insertIta" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.insertIta] ITA 입력 */
			INSERT INTO ${tableName}
			SELECT	  noti_group_id AS grouId
					, noti_id AS messageId
					, msg_type AS channel1
					, NULL AS channel2
					, date_rslt AS compDt
					, report_code AS channel1FCode
					, NULL AS channel2FCode
					, mt_refkey AS mtRefKey
					, date_client_req AS dateClientReq
					, content AS channel1Content
					, NULL AS channel2Content
					, callback AS callback 
					, recipient_num AS recipientNum
					, NULL AS 080ArsNum
					, custom_key AS customKey
					, extra_data AS extraData
					, date_rslt AS channel1DateRslt
					, NULL AS channel2DateRslt
					, date_mt_report AS channel1DateMtReport
					, NULL AS channel2DateMtReport
					, agent_version AS agentVersion
			FROM	${targetTableName}
			WHERE	org_id = #{orgId}
			UNION ALL
			SELECT	  noti_group_id AS grouId
					, noti_id AS messageId
					, msg_type AS channel1
					, NULL AS channel2
					, date_rslt AS compDt
					, report_code AS channel1FCode
					, NULL AS channel2FCode
					, mt_refkey AS mtRefKey
					, date_client_req AS dateClientReq
					, content AS channel1Content
					, NULL AS channel2Content
					, callback AS callback 
					, recipient_num AS recipientNum
					, NULL AS 080ArsNum
					, custom_key AS customKey
					, extra_data AS extraData
					, date_rslt AS channel1DateRslt
					, NULL AS channel2DateRslt
					, date_mt_report AS channel1DateMtReport
					, NULL AS channel2DateMtReport
					, agent_version AS agentVersion
			FROM	ita_talk_tran
			WHERE	date_mt_report IS NOT NULL
					AND org_id = #{orgId}
		]]>
	</insert>

	<select id="selectFailbackItaList" parameterType="map"
		resultType="string">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.selectFailbackItaList] 실패한 ita notiid 목록 */
			SELECT	messageId
			FROM	${tableName}
			WHERE	channel1_f_code <> 1000
		]]>
	</select>

	<select id="selectFailbackTarget" parameterType="map"
		resultType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.selectFailbackTarget] failback 전송 target */
			SELECT	  messageid AS messageId
					, channel1 AS channel2
					, channel1_f_code AS channel2FCode
					, channel1_date_rslt AS channel2DateRslt
					, channel1_date_mt_report AS channel2DateMtReport
					, channel1_content AS channel2Content
					, comp_dt AS compDt
			FROM	${tableName}
			WHERE	messageid = #{messageId}
					AND channel1 < 10
		]]>
	</select>

	<update id="updateFailbackTarget" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.updateFailbackTarget] failback 항목 원본 반영 */
			UPDATE		${tableName}
			SET			  channel2 = #{channel2}
						, channel2_f_code = #{channel2FCode}
						, channel2_date_rslt = #{channel2DateRslt}
						, channel2_date_mt_report = #{channel2DateMtReport}
						, channel2_content = #{channel2Content}
						, comp_dt = #{compDt}
			WHERE		messageid = #{messageId}
						AND channel1 in (1008, 1009)
		]]>
	</update>

	<delete id="deleteFailbackTarget" parameterType="map">
		<![CDATA[
			/* [com.i2sema.v2.comm.dao.CsvCreateDAO.deleteFailbackTarget] failback 항목 제거 */
			DELETE
			FROM		${tableName}
			WHERE		messageid = #{messageId}
						AND channel1 in (0, 2, 3)
		]]>
	</delete>

	<select id="selectMcCsvCount" parameterType="map"
		resultType="int">
	<![CDATA[
		/* [com.i2sema.v2.comm.dao.CsvCreateDAO.selectMcCsvCount] csv 목록 개수 */
		SELECT		COUNT(*) AS cnt
     	FROM		${tableName}
     	WHERE		1=1
     				AND messageid IS NOT NULL
	]]>
	</select>

	<select id="listMcCsv" parameterType="map" resultType="map">
	<![CDATA[
		/* [com.i2sema.v2.comm.dao.CsvCreateDAO.listMcCsv] csv 목록*/
		SELECT			groupid,
						messageid,
						channel1,
						channel2,
						comp_dt,
						channel1_f_code,
						channel2_f_code,
						mt_refkey,
						date_client_req,
						channel1_content,
						channel2_content,
						callback,
						recipient_num,
						ars_080_num,
						custom_key,
						extra_data,
						channel1_date_rslt,
						channel2_date_rslt,
						channel1_date_mt_report,
						channel2_date_mt_report,
						agent_version
     	FROM		${tableName}
     	WHERE		messageid IS NOT NULL
     	ORDER BY 	date_client_req
     	LIMIT #{firstIndex}, #{recordCountPerPage}
	]]>
	</select>
	
	<select id="authCheck" parameterType="map" resultType="string">
		<![CDATA[
		/* [com.i2sema.v2.comm.dao.CsvCreateDAO.authCheck] 인증 */
		SELECT		client_id
     	FROM		sns_access_token
     	WHERE		access_token = #{accessToken}
		]]>
	</select>
	
	<select id="listSfdcBulkTarget" resultType="string">
		<![CDATA[
		/* [com.i2sema.v2.comm.dao.CsvCreateDAO.listSfdcBulkTarget] Sfdc Bulk Target */
		SELECT		org_id AS orgId
     	FROM		v2_sfdc_bulk_target
		]]>
	</select>
</mapper>