<?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.mngt.dao.NtcMapper">

<!-- 공지사항 정보 매퍼
 ========== 변경 이력 ==========
 2024-02-26	leebj 최초 작성
 ============================ -->

<resultMap id="ntcRow" type="cokr.xit.fims.mngt.Ntc"> <!-- 공지사항 -->
    <result property="ntcId"         column="NTC_ID" />   <!-- 공지 ID -->
    <result property="sggCd"         column="SGG_CD" />   <!-- 시군구 코드 -->
    <result property="ntcTtl"        column="NTC_TTL" />  <!-- 공지 제목 -->
    <result property="ntcCn"         column="NTC_CN" />   <!-- 공지 내용 -->
    <result property="delYn"         column="DEL_YN" />   <!-- 삭제 여부 -->
    <result property="createdAt"     column="REG_DT" />   <!-- 등록 일시 -->
    <result property="createdBy"     column="RGTR" />     <!-- 등록자 -->
    <result property="lastModified"  column="MDFCN_DT" /> <!-- 수정 일시 -->
    <result property="modifiedBy"    column="MDFR" />     <!-- 수정자 -->
    <result property="removedAt"     column="DEL_DT" />   <!-- 삭제 일시 -->
    <result property="removedBy"     column="DLTR" />     <!-- 삭제자 -->
    <result property="delRsn"        column="DEL_RSN" />  <!-- 삭제 사유 -->
</resultMap>

<sql id="select">
SELECT A.NTC_ID   <!-- 공지 ID -->
     , A.CNTN_SE_CD
     , GET_CODE_NM('CMN009', A.CNTN_SE_CD) AS CNTN_SE_NM
     , A.SGG_CD   <!-- 시군구 코드 -->
     , (CASE 
        WHEN (SELECT SGG_NM FROM TB_SGG WHERE SGG_CD = A.SGG_CD) IS NOT NULL
        THEN (SELECT SGG_NM FROM TB_SGG WHERE SGG_CD = A.SGG_CD)
        ELSE '전체' END) AS SGG_NM
     , A.NTC_TTL  <!-- 공지 제목 -->
     , A.NTC_CN   <!-- 공지 내용 -->
     , A.DEL_YN   <!-- 삭제 여부 -->
     , A.REG_DT   <!-- 등록 일시 -->
     , A.RGTR     <!-- 등록자 -->
     , A.MDFCN_DT <!-- 수정 일시 -->
     , A.MDFR     <!-- 수정자 -->
     , A.DEL_DT   <!-- 삭제 일시 -->
     , A.DLTR     <!-- 삭제자 -->
     , A.DEL_RSN  <!-- 삭제 사유 -->
  FROM TB_NOTICE A
</sql>

<select id="selectNtcList" parameterType="map" resultType="dataobject">
/* 공지사항 목록 조회(ntcMapper.selectNtcList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
 WHERE A.DEL_YN = 'N'
 <if test="sggCd != null and sggCd != ''">
   AND (A.SGG_CD = #{sggCd} OR A.SGG_CD = '' OR A.SGG_CD IS NULL)
 </if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(by) and @org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(term)">
   AND A.${by} LIKE CONCAT('%',#{term},'%')
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(cntnSeCd)">
   AND A.CNTN_SE_CD = #{cntnSeCd}
</if>
<if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(userSggCd)">
    <if test="userCntnSeCd == '01'">
   AND (
      (A.SGG_CD IS NULL OR A.SGG_CD = '')
      OR
      (GET_SGG_RELATION(A.SGG_CD,#{userSggCd}) IN ('SF','CP','PC'))
   )
    </if>
    <if test="userCntnSeCd == '02'">
   AND A.CNTN_SE_CD = '02'
   AND GET_SGG_RELATION(A.SGG_CD,#{userSggCd}) IN ('SF','CP')
    </if>
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>

<select id="selectNtcInfo" parameterType="string" resultType="dataobject">
/* 공지사항 상세 내용 조회(ntcMapper.selectNtcInfo) */
<include refid="select" />
WHERE A.DEL_YN = 'N'
  AND A.NTC_ID = #{ntcId}
</select>

<insert id="insertNtc" parameterType="map">
/* 공지사항 등록(ntcMapper.insertNtc) */
<selectKey resultType="string" keyProperty="ntc.ntcId" keyColumn="NEW_ID" order="BEFORE">
	<include refid="numbering.key">
		<property name="TABLE_NAME" value="TB_NOTICE" />
		<property name="TABLE_KEY" value="NTC_ID" />
		<property name="pad" value="10" />
	</include>
</selectKey>
INSERT 
  INTO TB_NOTICE (
       NTC_ID   <!-- 공지 ID -->
     , CNTN_SE_CD
     , SGG_CD   <!-- 시군구 코드 -->
     , NTC_TTL  <!-- 공지 제목 -->
     , NTC_CN   <!-- 공지 내용 -->
     , DEL_YN   <!-- 삭제 여부 -->
     , REG_DT   <!-- 등록 일시 -->
     , RGTR     <!-- 등록자 -->
     , MDFCN_DT <!-- 수정 일시 -->
     , MDFR     <!-- 수정자 -->
) VALUES (
       #{ntc.ntcId}                    <!-- 공지 ID -->
     , #{ntc.cntnSeCd}
     , #{ntc.sggCd}                    <!-- 시군구 코드 -->
     , #{ntc.ntcTtl}                   <!-- 공지 제목 -->
     , #{ntc.ntcCn}                    <!-- 공지 내용 -->
     , 'N'                             <!-- 삭제 여부 -->
     , <include refid="utility.now" /> <!-- 등록 일시 -->
     , #{currentUser.id}               <!-- 등록자 -->
     , <include refid="utility.now" /> <!-- 수정 일시 -->
     , #{currentUser.id}               <!-- 수정자 -->
)
</insert>

<update id="updateNtc" parameterType="map">
/* 공지사항 수정(ntcMapper.updateNtc) */
UPDATE TB_NOTICE 
   SET NTC_TTL  = #{ntc.ntcTtl}                   <!-- 공지 제목 -->
     , NTC_CN   = #{ntc.ntcCn}                    <!-- 공지 내용 -->
     , MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
     , MDFR     = #{currentUser.id}               <!-- 수정자 -->
 WHERE NTC_ID   = #{ntc.ntcId}
</update>

<update id="deleteNtc" parameterType="map">
/* 공지사항 삭제(ntcMapper.deleteNtc) */
UPDATE TB_NOTICE 
   SET DEL_YN = 'Y'
     , DEL_DT = <include refid="utility.now" />
     , DLTR   = #{currentUser.id}
 WHERE NTC_ID = #{ntc.ntcId}
</update>
 
</mapper>