<?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.munjaon.client.mssql.mapper.MssqlMapper">
    <select id="checkTime" resultType="String">
        /* MssqlMapper.checkTime */
        SELECT GETDATE()
    </select>
    <select id="checkTableForMessage" resultType="int">
        /* MssqlMapper.checkTableForMessage */
--         SELECT 1 FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
        <![CDATA[
        SELECT TOP 1 COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1
        ]]>
    </select>
    <select id="checkTableForLog" resultType="int">
        /* MssqlMapper.checkTableForLog */
        <![CDATA[
        SELECT TOP 1 COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1
        ]]>
    </select>
    <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
        /* MssqlMapper.selectToDeliver */
        <![CDATA[
        SELECT
            TOP 100
            MSG_ID
            , MSG_TYPE
             , REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(20),REQUEST_DATE,120),'-',''),' ',''),':','') RESERVE_DATE
             , REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),120),'-',''),' ',''),':','') REQUEST_DATE
            , RECV_PHONE
            , SEND_PHONE
            , SUBJECT
            , MESSAGE
            , FILENAME01
            , FILENAME02
            , FILENAME03
            , KAKAO_SENDER_KEY
            , KAKAO_TEMPLATE_CODE
            , KAKAO_JSON_FILE
        FROM MUNJAON_MSG
        WHERE SEND_STATUS = '0'
            AND MSG_TYPE = #{msgType}
            AND REQUEST_DATE <= GETDATE()
        ORDER BY REQUEST_DATE ASC
        ]]>
    </select>
    <update id="updateToDeliver">
        /* MssqlMapper.updateToDeliver */
        UPDATE MUNJAON_MSG SET
            SEND_STATUS = '1'
            , DELIVER_DATE = GETDATE()
        WHERE MSG_ID = #{msgId}
    </update>
    <update id="updateDeliverForList">
        /* MssqlMapper.updateDeliverForList */
        UPDATE MUNJAON_MSG SET
            SEND_STATUS = '1'
            , DELIVER_DATE = GETDATE()
        WHERE SEND_STATUS = '0'
        AND (
        <foreach separator="OR" item="item" collection="list">
            MSG_ID = #{item}
        </foreach>
        )
    </update>
    <update id="updateToReport">
        /* MssqlMapper.updateToReport */
        UPDATE MUNJAON_MSG SET
            SEND_STATUS = #{sendStatus}
            , SENT_DATE = CAST(#{sendDate} AS DATETIME)
            , REPORT_DATE = SYSDATE
            , TELECOM = #{telecom}
        WHERE MSG_ID = #{msgId}
    </update>
    <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
        /* MssqlMapper.selectToMove */
        <![CDATA[
        SELECT TOP 100
            MSG_ID, CONVERT(VARCHAR(6),REQUEST_DATE,112) REQUEST_DATE
        FROM MUNJAON_MSG
        WHERE SEND_STATUS NOT IN ('0', '1')
        ]]>
    </select>
    <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
        /* MssqlMapper.selectToExpire */
        <![CDATA[
            SELECT TOP 100
                MSG_ID, CONVERT(VARCHAR(6),REQUEST_DATE,112) REQUEST_DATE
            FROM MUNJAON_MSG
            WHERE REQUEST_DATE < CAST(#{expireTime} AS DATETIME)
                AND SEND_STATUS = '1'
        ]]>
    </select>
    <insert id="insertToLog">
        /* MssqlMapper.insertToLog */
        INSERT INTO MUNJAON_MSG_LOG
        (
            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
        )
        SELECT
            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
        FROM MUNJAON_MSG
        WHERE MSG_ID = #{msgId}
    </insert>
    <delete id="deleteFromDeliver">
        /* MssqlMapper.deleteFromDeliver */
        DELETE FROM MUNJAON_MSG
        WHERE MSG_ID = #{msgId}
    </delete>
</mapper>