<?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.SchdlMapper">

<!-- 일정관리 정보 매퍼
 ========== 변경 이력 ==========
 2024-02-26	leebj 최초 작성
 ============================ -->

<resultMap id="schdlRow" type="cokr.xit.fims.mngt.Schdl"> <!-- 일정관리 -->
    <result property="schdlId"       column="SCHDL_ID" />       <!-- 일정 ID -->
    <result property="schdlBgngYmd"  column="SCHDL_BGNG_YMD" /> <!-- 일정 시작 일자 -->
    <result property="schdlEndYmd"   column="SCHDL_END_YMD" />  <!-- 일정 종료 일자 -->
    <result property="userId"        column="USER_ID" />        <!-- 사용자 ID -->
    <result property="schdlCn"       column="SCHDL_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 SCHDL_ID       <!-- 일정 ID -->
     , SCHDL_BGNG_YMD <!-- 일정 시작 일자 -->
     , SCHDL_END_YMD  <!-- 일정 종료 일자 -->
     , USER_ID        <!-- 사용자 ID -->
     , SCHDL_CN       <!-- 일정 내용 -->
     , DEL_YN         <!-- 삭제 여부 -->
     , REG_DT         <!-- 등록 일시 -->
     , RGTR           <!-- 등록자 -->
     , MDFCN_DT       <!-- 수정 일시 -->
     , MDFR           <!-- 수정자 -->
     , DEL_DT         <!-- 삭제 일시 -->
     , DLTR           <!-- 삭제자 -->
     , DEL_RSN        <!-- 삭제 사유 -->
  FROM TB_SCHDL
</sql>

<select id="selectSchdlList" parameterType="map" resultType="dataobject">
/* 일정관리 목록 조회(schdlMapper.selectSchdlList) */
<include refid="select" />
WHERE DEL_YN = 'N'
  AND USER_ID = #{userId}
<include refid="utility.orderBy" />
</select>

<select id="selectSchdlInfo" parameterType="string" resultType="dataObject">
/* 일정관리 객체 가져오기(schdlMapper.selectSchdlInfo) */
<include refid="select" />
WHERE DEL_YN = 'N'
  AND SCHDL_ID = #{schdlId}
</select>

<insert id="insertSchdl" parameterType="map">
/* 일정관리 등록(schdlMapper.insertSchdl) */
<selectKey resultType="string" keyProperty="schdl.schdlId" keyColumn="NEW_ID" order="BEFORE">
	<include refid="numbering.key">
		<property name="TABLE_NAME" value="TB_SCHDL" />
		<property name="TABLE_KEY" value="SCHDL_ID" />
		<property name="pad" value="10" />
	</include>
</selectKey>
INSERT 
  INTO TB_SCHDL (
       SCHDL_ID       <!-- 일정 ID -->
     , SCHDL_BGNG_YMD <!-- 일정 시작 일자 -->
     , SCHDL_END_YMD  <!-- 일정 종료 일자 -->
     , USER_ID        <!-- 사용자 ID -->
     , SCHDL_CN       <!-- 일정 내용 -->
     , DEL_YN         <!-- 삭제 여부 -->
     , REG_DT         <!-- 등록 일시 -->
     , RGTR           <!-- 등록자 -->
     , MDFCN_DT       <!-- 수정 일시 -->
     , MDFR           <!-- 수정자 -->
) VALUES (
       #{schdl.schdlId}                <!-- 일정 ID -->
     , #{schdl.schdlBgngYmd}           <!-- 일정 시작 일자 -->
     , #{schdl.schdlEndYmd}            <!-- 일정 종료 일자 -->
     , #{schdl.userId}                 <!-- 사용자 ID -->
     , #{schdl.schdlCn}                <!-- 일정 내용 -->
     , 'N'                             <!-- 삭제 여부 -->
     , <include refid="utility.now" /> <!-- 등록 일시 -->
     , #{currentUser.id}               <!-- 등록자 -->
     , <include refid="utility.now" /> <!-- 수정 일시 -->
     , #{currentUser.id}               <!-- 수정자 -->
)
</insert>

<update id="updateSchdl" parameterType="map">
/* 일정관리 수정(schdlMapper.updateSchdl) */
UPDATE TB_SCHDL 
   SET SCHDL_BGNG_YMD = #{schdl.schdlBgngYmd}     <!-- 일정 시작 일자 -->
     , SCHDL_END_YMD = #{schdl.schdlEndYmd}       <!-- 일정 종료 일자 -->
     , USER_ID = #{schdl.userId}                  <!-- 사용자 ID -->
     , SCHDL_CN = #{schdl.schdlCn}                <!-- 일정 내용 -->
     , MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
     , MDFR = #{currentUser.id}                   <!-- 수정자 -->
 WHERE SCHDL_ID = #{schdl.schdlId}
</update>

<update id="deleteSchdl" parameterType="map">
/* 일정관리 삭제(schdlMapper.deleteSchdl) */
UPDATE TB_SCHDL 
   SET DEL_YN = 'Y'
     , DEL_DT = <include refid="utility.now" />
     , DLTR   = #{currentUser.id}
 WHERE SCHDL_ID = #{schdl.schdlId}
</update>
 
</mapper>