<?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="cokr.xit.ens.modules.kkotalk.mapper.IKkoTalkMapper">
    <!-- // FIXME: 카카오톡 신규 추가 -->
    <!-- =================================================================================== -->
    <!-- ================================ accept =========================================== -->
    <!-- =================================================================================== -->
    <insert id="saveSndDtlKkoTalk" parameterType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|saveSndDtlKkoTalk-카카오톡발송상세생성|julim  */
        INSERT INTO ens_snd_dtl_kko_talk (
            send_detail_id,                 /* 발송 상세 ID */
            title,                          /* 제목 */
            link,                           /* 웹링크 */
            hash,                           /* 해시 값 */
            guide,                          /* 메세지 */
            payload,                        /* 페이로드 */
            read_expires_at,                /* 최초열람 만료 일시 */
            review_expires_at,              /* 재열람 만료 일시 */
            use_non_personalized_noti,      /* 알림톡 개인정보 제거 여부 */
            status,                         /* 문서 상태 */
            ci,                             /* CI */
            phone_number,                   /* 수신인 전화번호 */
            name,                           /* 수신인 이름 */
            birthday,                       /* 수신인 생년월일 */
            external_id,                    /* 문서매핑 식별 ID */
            mk_jid,                         /* MK JID */
            mk_tmplt_msg_json_data,         /* 템플릿 메시지 JSON 데이터 */
            error_code,                     /* 오류 코드 */
            error_message,                  /* 오류 메시지 */
            mk_bill_use_yn,                 /* 빌 사용 여부 */
            bill_uid,                       /* 빌 UID */
            send_mast_id,                   /* 발송 마스터 ID */
            regist_dt
        ) VALUES (
            #{sendDetailId},
            #{title},
            #{link},
            #{hash},
            #{guide},
            #{payload},
            #{readExpiresAt},
            #{reviewExpiresAt},
            #{useNonPersonalizedNotification},
            #{status},
            #{ci},
            #{phoneNumber},
            #{name},
            #{birthday},
            #{externalId},
            #{mkJid},
            #{mkTmpltMsgJsonData},
            #{errorCode},
            #{errorMessage},
            #{mkBillUseYn},
            #{billUid},
            #{sendMastId},
            sysdate
        )
    </insert>

    <update id="updateSndDtlKkoTalk" parameterType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|updateSndDtlKkoTalk-카카오톡발송상세변경|julim  */
        UPDATE ens_snd_dtl_kko_talk
           SET title = #{title}                     /* 제목 */
             , hash = #{hash}                       /* 해시 값 */
             , guide = #{guide}                     /* 메세지 */
             , payload = #{payload}
             , use_non_personalized_noti = #{useNonPersonalizedNotification}
             , ci = #{ci}
             , phone_number = #{phoneNumber}        /* 수신인 전화번호 */
             , name = #{name}                       /* 수신인 이름 */
             , birthday = #{birthday}               /* 수신인 생년월일 */
             , external_id = #{externalId}          /* 문서 매핑 식별 ID */
             , error_code = #{errorCode}
             , error_message = #{errorMessage}
             , last_updt_dt = sysdate
         WHERE send_detail_id = #{sendDetailId}
    </update>

    <update id="updateKakaotalkSendBulksResult" parameterType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|updateKakaotalkSendBulksResult-카카오톡 문서요청 결과 반영|limju  */
        UPDATE ens_snd_dtl_kko_talk
           SET external_id = #{externalId}      /* 문서 매핑 식별 ID */
             , envelope_id = #{envelopeId}      /* 문서 고유 ID */
             , status = #{status}               /* 문서 상태 */
             , error_code = #{errorCode}
             , error_message = #{errorMessage}
             , last_updt_dt = sysdate
         WHERE send_detail_id = #{sendDetailId}
    </update>

    <update id="updateKakaotalkStatusBulksResult" parameterType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|updateKakaotalkStatusBulksResult-카카오톡 문서 상태조회 결과 반영|limju  */
        UPDATE ens_snd_dtl_kko_talk
           SET status = #{status}                       /* 문서 상태 */
             , sent_at = #{sentAt}                      /* 문서 송신 일시 */
             , received_at = #{receivedAt}              /* 문서 수신 일시 */
             , read_at = #{readAt}                      /* 문서 열람 일시 */
             , read_expires_at = #{readExpiredAt}       /* 최초 열람 만료 일시 */
             , authenticated_at = #{authenticatedAt}    /* 문서 열람 인증 일시 */
             , ott_verified_at = #{ottVerifiedAt}       /* 토큰 검증 일시 */
             , user_notified_at = #{userNotifiedAt}     /* 알림톡 수신 일시 */
             , distribution_received_at = #{distributionReceivedAt} /* 유통정보 수신 일시 */
             , payload = #{payload}
             , error_code = #{errorCode}
             , error_message = #{errorMessage}
             , last_updt_dt = sysdate
         WHERE send_detail_id = #{sendDetailId}
    </update>

    <select id="findAllBySendMastId" parameterType="long" resultType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|findAllBySendMastId-카카오톡발송대상 조회|julim  */
        <include refid="sqlSelectSendDetailKkoTalk"/>
          FROM ens_snd_dtl_kko_talk
         WHERE send_mast_id = #{sendMastId}
    </select>

    <select id="findAllBySendMastAndEnvlopeIdIsNotNull" parameterType="cokr.xit.ens.modules.common.domain.SendMast" resultType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|findAllBySendMastAndEnvlopeIdIsNotNull-카카오톡 발송 결과 대상?? 조회|julim  */
        <include refid="sqlSelectSendDetailKkoTalk"/>
          FROM ens_snd_dtl_kko_talk
         WHERE send_mast_id = #{sendMastId}
           AND envelope_id IS NOT NULL
    </select>

    <select id="findAllFetchBySendMastId" parameterType="long" resultType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|findAllFetchBySendMastId-카카오톡 발송 결과 대상 조회|julim  */
        <include refid="sqlSelectSendDetailKkoTalk"/>
        FROM ens_snd_dtl_kko_talk
        WHERE send_mast_id = #{sendMastId}
    </select>

    <select id="findFetchByExternalIdAndEnvelopeId" parameterType="map" resultType="cokr.xit.ens.modules.kkotalk.model.SendDetailKkoTalkDTO">
        /** iup-kkotalk-mapper|findFetchByExternalIdAndEnvelopeId-카카오톡 발송 결과 대상 조회|julim  */
        <include refid="sqlSelectSendDetailKkoTalk"/>
        FROM ens_snd_dtl_kko_talk
        WHERE envelope_id = #{envelopeId}
          <if test="externalId != null and externalId != ''">
          AND external_id = #{externalId}
          </if>
    </select>

    <select id="selectSendMastByExternalIdAndEnvelopeId" parameterType="map" resultType="cokr.xit.ens.modules.common.domain.SendMast">
        /** iup-kkotalk-mapper|selectSendMastByExternalIdAndEnvelopeId-전송마스터 정보 조회|julim  */
        SELECT esm.org_cd
             , esm.post_se
          FROM ens_snd_mast esm
          JOIN ens_snd_dtl_kko_talk esdkt
            ON esm.send_mast_id = esdkt.send_mast_id
         WHERE esdkt.external_id = #{externalId}
           AND esdkt.envelope_id = #{envelopeId}
    </select>

    <select id="selectBillByBillUid" parameterType="map" resultType="cokr.xit.ens.modules.common.ctgy.intgrnbill.support.entity.Bill">
        /** iup-kkotalk-mapper|selectBillByBillUid-Bill 정보 조회|julim  */
        SELECT bill_id
             , bill_uid
             , bill_se_cd
        FROM ens_bill
        WHERE bill_uid = #{billUid}
    </select>

    <sql id="sqlSelectSendDetailKkoTalk">
        SELECT send_detail_id,                 /* 발송 상세 ID */
               title,                          /* 제목 */
               link,                           /* 웹링크 */
               hash,                           /* 해시 값 */
               guide,                          /* 메세지 */
               payload,                        /* 페이로드 */
               read_expires_at,                /* 최초열람 만료 일시 */
               review_expires_at,              /* 재열람 만료 일시 */
               use_non_personalized_noti AS useNonPersonalizedNotification,      /* 알림톡 개인정보 제거 여부 */
               status,                         /* 문서 상태 */
               ci,                             /* CI */
               phone_number,                   /* 수신인 전화번호 */
               name,                           /* 수신인 이름 */
               birthday,                       /* 수신인 생년월일 */
               external_id,                    /* 문서매핑 식별 ID */
               envelope_id,
               mk_jid,                         /* MK JID */
               mk_tmplt_msg_json_data,         /* 템플릿 메시지 JSON 데이터 */
               error_code,                     /* 오류 코드 */
               error_message,                  /* 오류 메시지 */
               mk_bill_use_yn,                 /* 빌 사용 여부 */
               bill_uid,                       /* 빌 UID */
               send_mast_id                    /* 발송 마스터 ID */
    </sql>

</mapper>
