<?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.fims.epst.dao.EpostGdntcMapper">

<!-- 전자우편 안내문 정보 매퍼
 ========== 변경 이력 ==========
 2023-12-04	JoJH 최초 작성
 ============================ -->

	<resultMap id="epostGdntcRow" type="cokr.xit.fims.epst.EpostGdntc"> <!-- 전자우편 안내문 -->
		<result property="gdntcId"			column="GDNTC_ID" />	<!-- 안내문 ID -->
		<result property="sggCd"			column="SGG_CD" />		<!-- 시군구 코드 -->
		<result property="taskSeCd"			column="TASK_SE_CD" />	<!-- 업무 구분 코드 -->
		<result property="sndngSeCd"		column="SNDNG_SE_CD" />	<!-- 발송 구분 코드 -->
		<result property="ttlNm"			column="TTL_NM" />		<!-- 제목 명 -->
		<result property="wordsCn"			column="WORDS_CN" />	<!-- 문구 내용 -->
		<result property="lastUseDt"		column="LAST_USE_DT" /> <!-- 최종 사용 일시 -->
		<result property="useYn"			column="USE_YN" />		<!-- 최종 사용 여부 -->
		<result property="createdAt"		column="REG_DT" />		<!-- 등록 일시 -->
		<result property="createdBy"		column="RGTR" />		<!-- 등록자 -->
		<result property="lastModified"		column="MDFCN_DT" />	<!-- 수정 일시 -->
		<result property="modifiedBy"		column="MDFR" />		<!-- 수정자 -->
	</resultMap>

    <sql id="select">
        SELECT EG.GDNTC_ID      <!-- 안내문 ID -->
             , EG.SGG_CD        <!-- 시군구 코드 -->
             , EG.TASK_SE_CD    <!-- 업무 구분 코드 -->
             , (SELECT GET_CODE_NM('FIM054', EG.TASK_SE_CD) FROM DUAL)  AS TASK_SE_NM   <!-- 업무 구분 명 -->
             , EG.SNDNG_SE_CD   <!-- 발송 구분 코드 -->
             , (SELECT GET_CODE_NM('FIM047', EG.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM  <!-- 발송 구분 명 -->
             , EG.TTL_NM        <!-- 제목 명 -->
             , EG.WORDS_CN      <!-- 문구 내용 -->
             , EG.LAST_USE_DT   <!-- 최종 사용 일시 -->
             , EG.USE_YN        <!-- 사용 여부 -->
             , (SELECT GET_CODE_NM('CMN003', EG.USE_YN) FROM DUAL)  AS USE_YN_NM    <!-- 사용 여부 명 -->
             , EG.REG_DT        <!-- 등록 일시 -->
             , EG.RGTR          <!-- 등록자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = EG.RGTR) AS RGTR_NM <!-- 등록자 명 -->
             , EG.MDFCN_DT      <!-- 수정 일시 -->
             , EG.MDFR          <!-- 수정자 -->
             , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = EG.MDFR) AS MDFR_NM <!-- 수정자 명 -->
          FROM TB_EPOST_GDNTC   EG
    </sql>

    <select id="selectEpostGdntcList" parameterType="map" resultType="dataobject">/* 전자우편 안내문 목록 조회(epostGdntcMapper.selectEpostGdntcList) */
        <include refid="utility.paging-prefix" />
        <include refid="select" />
         WHERE EG.SGG_CD        =  #{sggCd}         <!-- 시군구 코드 -->
           AND EG.TASK_SE_CD    =  #{taskSeCd}      <!-- 업무 구분 코드 -->
        <if test="schSndngSeCd != null">
           AND EG.SNDNG_SE_CD   =  #{schSndngSeCd}  <!-- 발송 구분 코드 -->
        </if>
        <if test="useYn != null">
           AND EG.USE_YN        =  #{useYn}         <!-- 사용 여부 -->
        </if>
        <choose>
            <when test="schRegDateOpt == 'regDt'">
                <if test="schRegDateFrom != null">
           AND EG.REG_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000')  <!-- 등록 일자 시작 -->
                </if>
                <if test="schRegDateTo != null">
           AND EG.REG_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')    <!-- 등록 일자 종료 -->
                </if>
            </when>
            <when test="schRegDateOpt == 'mdfcnDt'">
                <if test="schRegDateFrom != null">
           AND EG.MDFCN_DT <![CDATA[>=]]> CONCAT(#{schRegDateFrom},'000000') <!-- 수정 일자 시작 -->
                </if>
                <if test="schRegDateTo != null">
           AND EG.MDFCN_DT <![CDATA[<=]]> CONCAT(#{schRegDateTo},'235959')  <!-- 수정 일자 종료 -->
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <choose>
            <when test="schRgtrOpt == 'rgtr'">
                <if test="schRgtrCd != null">
           AND EG.RGTR          =  #{schRgtrCd}     <!-- 등록자 코드 -->
                </if>
            </when>
            <when test="schRgtrOpt == 'mdfr'">
                <if test="schRgtrCd != null">
           AND EG.MDFR          =  #{schRgtrCd}     <!-- 수정자 코드 -->
                </if>
            </when>
            <otherwise>
            </otherwise>
        </choose>
        <if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(by) and @org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(term)">
            <choose>
                <when test="mainOption == 'codeValue' or mainOption == 'match' or mainOption == 'ymd'">
                    <include refid="dynamicSearch.start" />
                    <choose>
                        <when test="by == 'sndngSeCd'"> EG.SNDNG_SE_CD </when>
                        <when test="by == 'ttlNm'"> EG.TTL_NM </when>
                        <when test="by == 'wordsCn'"> EG.WORDS_CN </when>
                        <when test="by == 'lastUseDt'"> EG.LAST_USE_DT </when>
                    </choose>
                    <include refid="dynamicSearch.center" />#{term}<include refid="dynamicSearch.end" />
                </when>
                <otherwise>
                </otherwise>
            </choose>
        </if>
        <include refid="utility.orderBy" />
        <include refid="utility.paging-suffix" />
    </select>

    <select id="selectEpostGdntcs" parameterType="map" resultType="dataobject">/* 전자우편 안내문 객체 가져오기(epostGdntcMapper.selectEpostGdntcs) */
        <include refid="select" />
        <where>
            <if test="gdntcIds != null">
           AND EG.GDNTC_ID  IN (            <!-- 안내문 Ids -->
                <foreach collection="gdntcIds" item="gdntcId" separator=","> #{gdntcIds} </foreach>
             )
            </if>
            <if test="gdntcId != null">
           AND EG.GDNTC_ID  =  #{gdntcId}    <!-- 안내문 ID -->
            </if>
            <if test="useYn != null">
           AND EG.USE_YN    =  #{useYn}     <!-- 사용 여부 -->
            </if>
        </where>
        <include refid="utility.orderBy" />
    </select>

    <insert id="insertEpostGdntc" parameterType="cokr.xit.fims.epst.EpostGdntc">/* 전자우편 안내문 등록(epostGdntcMapper.insertEpostGdntc) */
        <selectKey resultType="string" keyProperty="gdntcId" keyColumn="NEW_ID" order="BEFORE">
            SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y%m%d'), '-', LPAD(CAST(IFNULL(MAX(SUBSTRING(GDNTC_ID, 10)) + 1, 1) AS INT), 4, '0')) AS NEW_ID
              FROM TB_EPOST_GDNTC
             WHERE GDNTC_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y%m%d'), '%')
        </selectKey>
        INSERT
          INTO TB_EPOST_GDNTC (
               GDNTC_ID         <!-- 안내문 ID -->
             , SGG_CD           <!-- 시군구 코드 -->
             , TASK_SE_CD       <!-- 업무 구분 코드 -->
             , SNDNG_SE_CD      <!-- 발송 구분 코드 -->
             , TTL_NM           <!-- 제목 명 -->
             , WORDS_CN         <!-- 문구 내용 -->
             , LAST_USE_DT      <!-- 최종 사용 일시 -->
             , USE_YN           <!-- 사용 여부 -->
             , REG_DT           <!-- 등록 일시 -->
             , RGTR             <!-- 등록자 -->
             , MDFCN_DT         <!-- 수정 일시 -->
             , MDFR             <!-- 수정자 -->
        )
        VALUES (
               #{gdntcId}       <!-- 안내문 ID -->
             , #{sggCd}         <!-- 시군구 코드 -->
             , #{taskSeCd}      <!-- 업무 구분 코드 -->
             , #{sndngSeCd}     <!-- 발송 구분 코드 -->
             , #{ttlNm}         <!-- 제목 명 -->
             , #{wordsCn}       <!-- 문구 내용 -->
             , #{lastUseDt}     <!-- 최종 사용 일시 -->
             , 'Y'              <!-- 사용 여부 -->
             , <include refid="utility.now" />  <!-- 등록 일시 -->
             , #{createdBy}     <!-- 등록자 -->
             , <include refid="utility.now" />  <!-- 수정 일시 -->
             , #{modifiedBy}    <!-- 수정자 -->
        )
    </insert>

    <update id="updateEpostGdntc" parameterType="cokr.xit.fims.epst.EpostGdntc">/* 전자우편 안내문 수정(epostGdntcMapper.updateEpostGdntc) */
        UPDATE TB_EPOST_GDNTC
           SET SNDNG_SE_CD  =  #{sndngSeCd} <!-- 발송 구분 코드 -->
             , TTL_NM       =  #{ttlNm}     <!-- 제목 명 -->
             , WORDS_CN     =  #{wordsCn}   <!-- 문구 내용 -->
             , MDFCN_DT     =  <include refid="utility.now" />  <!-- 수정 일시 -->
             , MDFR         =  #{modifiedBy} <!-- 수정자 -->
         WHERE GDNTC_ID     =  #{gdntcId}   <!-- 안내문 ID -->
           AND USE_YN       =  'Y'          <!-- 사용 여부 -->
    </update>

    <update id="deleteEpostGdntc" parameterType="cokr.xit.fims.epst.EpostGdntc">/* 전자우편 안내문 삭제(epostGdntcMapper.deleteEpostGdntc) */
        UPDATE TB_EPOST_GDNTC
           SET USE_YN       =  'N'          <!-- 사용 여부 -->
             , MDFCN_DT     =  <include refid="utility.now" />  <!-- 수정 일시 -->
             , MDFR         =  #{modifiedBy} <!-- 수정자 -->
        <choose>
            <when test="gdntcIds != null">
         WHERE GDNTC_ID     IN (            <!-- 안내문 Ids -->
                <foreach collection="gdntcIds" item="gdntcId" separator=","> #{gdntcId} </foreach>
               )
            </when>
            <otherwise>
         WHERE GDNTC_ID     =  #{gdntcId}   <!-- 안내문 ID -->
            </otherwise>
        </choose>
           AND USE_YN       =  'Y'          <!-- 사용 여부 -->
    </update>

</mapper>
