<?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.base.user.dao.SigunguMapper">

<!-- 시군구 정보 매퍼
 ========== 변경 이력 ==========
 2023-10-06	mjkhan 최초 작성
 ============================ -->

<resultMap id="sggRow" type="cokr.xit.base.user.Sigungu"> <!-- 시군구 -->
    <result property="sggID"                   column="SGG_CD" />          <!-- 시군구 코드 -->
    <result property="sggName"                 column="SGG_NM" />          <!-- 시군구 이름 -->
    <result property="instCode"                column="INST_CD" />         <!-- 기관 코드 -->
    <result property="instType"                column="INST_SE_CD" />      <!-- 기관 구분 -->
    <result property="instName"                column="INST_NM" />         <!-- 기관 명 -->
    <result property="instAddress"             column="INST_ADDR" />       <!-- 기관 주소 -->
    <result property="instDetailAddress"       column="INST_DADDR" />      <!-- 기관 상세주소 -->
    <result property="instZipCode"             column="INST_ZIP" />        <!-- 기관 우편번호 -->
    <result property="officialSealFilepath"    column="OFFCS_FILE_PATH" /> <!-- 직인 파일 경로 -->
    <result property="officialSealFilename"    column="OFFCS_FILE_NM" />   <!-- 직인 파일 명 -->
    <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 SGG_CD          <!-- 시군구 코드 -->
     , SGG_NM          <!-- 시군구 이름 -->
     , INST_CD         <!-- 기관 코드 -->
     , INST_SE_CD      <!-- 기관 구분 -->
     , INST_NM         <!-- 기관 명 -->
     , INST_ADDR       <!-- 기관 주소 -->
     , INST_DADDR      <!-- 기관 상세주소 -->
     , INST_ZIP        <!-- 기관 우편번호 -->
     , OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
     , OFFCS_FILE_NM   <!-- 직인 파일 명 -->
     , UP_SGG_CD       <!-- 상위 시군구코드 -->
     , USE_YN          <!-- 사용 여부 -->
     , REG_DT          <!-- 등록 일시 -->
     , RGTR            <!-- 등록자 -->
     , MDFCN_DT        <!-- 수정 일시 -->
     , MDFR            <!-- 수정자 -->
  FROM TB_SGG
</sql>

<select id="selectSigunguList" parameterType="map" resultType="dataobject">
/* 시군구 목록 조회(sigunguMapper.selectSigunguList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where>
  <if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(by) and @org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(term)"> 
  AND ${by} LIKE CONCAT('%', #{term}, '%')
  </if>
  <if test="sggIDs != null">
  AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)
  </if>
  <if test="instCodes != null">
  AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)
  </if>
  <if test="!includeAll">
  AND USE_YN = 'Y'
  </if>
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></select>

<select id="selectSigungus" parameterType="map" resultMap="sggRow">
/* 시군구 객체 가져오기(sigunguMapper.selectSigungus) */
<include refid="select" />
<where>
  <if test="@org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(by) and @org.egovframe.rte.fdl.string.EgovStringUtil@isNotEmpty(term)"> 
  AND ${by} LIKE CONCAT('%', #{term}, '%')
  </if>
  <if test="sggIDs != null">AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
  <if test="instCodes != null">AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)</if>
  <if test="!includeAll"> AND USE_YN = 'Y'</if></where>
</select>

<insert id="insert" parameterType="cokr.xit.base.user.Sigungu">
/* 시군구 등록(sigunguMapper.insert) */
INSERT INTO TB_SGG (
       SGG_CD          <!-- 시군구 코드 -->
     , SGG_NM          <!-- 시군구 이름 -->
     , INST_CD         <!-- 기관 코드 -->
     , INST_SE_CD      <!-- 기관 구분 -->
     , INST_NM         <!-- 기관 명 -->
     , INST_ADDR       <!-- 기관 주소 -->
     , INST_DADDR      <!-- 기관 상세주소 -->
     , INST_ZIP        <!-- 기관 우편번호 -->
     , OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
     , OFFCS_FILE_NM   <!-- 직인 파일 명 -->
     , USE_YN          <!-- 사용 여부 -->
     , REG_DT          <!-- 등록 일시 -->
     , RGTR            <!-- 등록자 -->
     , MDFCN_DT        <!-- 수정 일시 -->
     , MDFR            <!-- 수정자 -->
) VALUES (
       #{sggID}                  <!-- 시군구 코드 -->
     , #{sggName}                <!-- 시군구 이름 -->
     , #{instCode}               <!-- 기관 코드 -->
     , #{instType}               <!-- 기관 구분 -->
     , #{instName}               <!-- 기관 명 -->
     , #{instAddress}            <!-- 기관 주소 -->
     , #{instDetailAddress}      <!-- 기관 상세주소 -->
     , #{instZipCode}            <!-- 기관 우편번호 -->
     , #{officialSealFilepath}   <!-- 직인 파일 경로 -->
     , #{officialSealFilename}   <!-- 직인 파일 명 -->
     , #{useYN}                  <!-- 사용 여부 -->
     , #{createdAt}              <!-- 등록 일시 -->
     , #{createdBy}              <!-- 등록자 -->
     , #{lastModified}           <!-- 수정 일시 -->
     , #{modifiedBy}             <!-- 수정자 -->
)
</insert>

<update id="update" parameterType="cokr.xit.base.user.Sigungu">
/* 시군구 수정(sigunguMapper.update) */
UPDATE TB_SGG
   SET INST_CD = #{instCode}                     <!-- 기관 코드 -->
     , INST_SE_CD = #{instType}                  <!-- 기관 구분 -->
     , SGG_NM = #{sggName}                       <!-- 시군구 이름 -->
     , INST_NM = #{instName}                     <!-- 기관 명 -->
     , INST_ADDR = #{instAddress}                <!-- 기관 주소 -->
     , INST_DADDR = #{instDetailAddress}         <!-- 기관 상세주소 -->
     , INST_ZIP = #{instZipCode}                 <!-- 기관 우편번호 -->
     , OFFCS_FILE_PATH = #{officialSealFilepath} <!-- 직인 파일 경로 -->
     , OFFCS_FILE_NM = #{officialSealFilename}   <!-- 직인 파일 명 -->
     , USE_YN = #{useYN}                         <!-- 사용 여부 -->
     , MDFCN_DT = #{lastModified}                <!-- 수정 일시 -->
     , MDFR = #{modifiedBy}                      <!-- 수정자 -->
 WHERE SGG_CD = #{sggID}
</update>

<update id="delete" parameterType="map">
/* 시군구 삭제(sigunguMapper.delete) */
UPDATE TB_SGG
   SET USE_YN = 'N'
     , MDFCN_DT =<include refid="utility.now" />
     , MDFR = #{currentUser.id}
 WHERE SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)
</update>

</mapper>