<?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="i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO">

	<resultMap id="noticeVO"      type="i2c.biz.admin.ntcn.bbsMng.notice.vo.NoticeVO" />
	
	<sql id="searchQuery">  
    	<if test="searchKeyword != null and searchKeyword !=''"> 
          	AND B.SUBJECT LIKE CONCAT('%', #{searchKeyword}, '%')
      	</if>      	
      	<if test="@i2c.cmm.util.StringUtil@isEmpty(board_tp) == false">
      		AND B.BOARD_TP = #{board_tp}
      	</if>       	 	 
    </sql>  

	<select id="countNotice" parameterType="i2c.biz.admin.ntcn.bbsMng.notice.vo.NoticeVO"   resultType="int">
	/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml countNotice 공지사항/도움말 정보 건수 */		
		SELECT 
               COUNT(B.BOARD_ID)          
          FROM BOARD B
	   	     , SNS_POST SP
   	     WHERE SP.TAR_OBJ_ID = B.BOARD_ID
      	   AND SP.POST_TP = 'NOTICE'		
	     <include refid="searchQuery"/>
	</select>	
	
	<select id="listNotice" parameterType="i2c.biz.admin.ntcn.bbsMng.notice.vo.NoticeVO"  resultMap="noticeVO">
	/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml listNotice 공지사항/도움말 정보  목록 */
		SELECT *
        FROM (
            SELECT 
            	  B.*
            	, (@ROWNUM  := @ROWNUM + 1) RNUM              	        	
              FROM (
	               SELECT 
	                     B.BOARD_ID
			           , B.BOARD_TP
			           , DATE_FORMAT(B.NTICE_START_DT, '%Y-%m-%d') NTICE_START_DT
             		   , DATE_FORMAT(B.NTICE_END_DT, '%Y-%m-%d') NTICE_END_DT  			           
			           , B.EMAIL
			           , B.LOCK_AT
			           , B.NOTICE_AT
			           , B.SUBJECT
			           , B.CONTENTS
			           , B.CATEGORY_SE
			           , FN_GET_CODE_NM('CATEGORY_SE',B.CATEGORY_SE) CATEGORY_SE_NM
			           , B.PHN_NUM
			           , B.SMS_AT
			           , B.BOARD_STTUS
			           , FN_GET_CODE_NM('BOARD_STTUS',B.BOARD_STTUS) BOARD_STTUS_NM
			           , B.ANSWER_CONTENTS
					   , B.ANSWER_PUSH_AT
					   , FN_GET_USR_NM(B.REGIST_ID) REGIST_NM
					   , DATE_FORMAT(B.REGIST_DE, '%Y-%m-%d') REGIST_DE
					   , CASE WHEN B.ANSWER_CONTENTS IS NULL THEN '접수대기'
					     ELSE '답변완료'
					      END ANSWER_STTUS	
					   , B.INQUERY			
					   , SU.USR_NM	   
	                FROM BOARD B				   	   
	                , SNS_USER SU
		    	   WHERE 1=1	
		    	   	 AND B.REGIST_ID = SU.USR_ID
				     <include refid="searchQuery"/>
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
            ORDER BY NOTICE_AT DESC, REGIST_DE DESC	
        ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}		 
	</select>		
	
	<select id="selectNotice"  parameterType="i2c.biz.admin.ntcn.bbsMng.notice.vo.NoticeVO" resultMap="noticeVO">
	/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml selectNotice 공지사항/도움말 상세 */	              
		SELECT 
               B.BOARD_ID
             , IFNULL(B.BOARD_TP,#{board_tp}) BOARD_TP
             , B.BOARD_PASSWORD
             , DATE_FORMAT(B.NTICE_START_DT, '%Y-%m-%d') NTICE_START_DT
             , DATE_FORMAT(B.NTICE_END_DT, '%Y-%m-%d') NTICE_END_DT             
             , B.EMAIL
             , B.LOCK_AT
             , B.NOTICE_AT
             , B.SUBJECT
             , B.CONTENTS
             , B.CATEGORY_SE
             , FN_GET_CODE_NM('CATEGORY_SE',B.CATEGORY_SE) CATEGORY_SE_NM
             , B.PHN_NUM
             , B.SMS_AT
             , B.BOARD_STTUS
             , FN_GET_CODE_NM('BOARD_STTUS',B.BOARD_STTUS) BOARD_STTUS_NM
             , B.ANSWER_CONTENTS
		     , B.ANSWER_PUSH_AT
		     , B.REGIST_ID
		     , FN_GET_USR_NM(B.REGIST_ID) REGIST_NM
			 , B.REGIST_DE
		     , SP.POST_ID
		     , SP.POST_TP
		     , B.INQUERY
	      FROM BOARD B
	         , SNS_POST SP
	     WHERE SP.TAR_OBJ_ID = B.BOARD_ID
	       AND SP.POST_TP = 'NOTICE'
	       AND B.BOARD_ID = #{board_id}
	     <if test="@i2c.cmm.util.StringUtil@isEmpty(board_tp) == false">
      		AND B.BOARD_TP = #{board_tp}
      	 </if> 
      	 <if test="@i2c.cmm.util.StringUtil@isEmpty(board_password) == false">
      		AND B.BOARD_PASSWORD = #{board_password}
      	 </if>	      		       
	</select>		
	
	
	<update id="saveNotice" parameterType="Map">
		/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml saveNotice 공지사항/도움말 정보 저장 */
		INSERT INTO BOARD
			(
			  BOARD_ID
            , BOARD_TP
            , NTICE_START_DT
            , NTICE_END_DT
            , BOARD_PASSWORD             
            , EMAIL
            , LOCK_AT
            , NOTICE_AT
            , SUBJECT
            , CONTENTS
            , CATEGORY_SE
            , PHN_NUM
            , SMS_AT
            , BOARD_STTUS            
		    , ANSWER_PUSH_AT
			, REGIST_ID
			, REGIST_DE		
			, UPDT_ID
			, UPDT_DE	
			)
		VALUES 
			(
			  #{board_id}
            , #{board_tp}
            , #{ntice_start_dt}
            , #{ntice_end_dt} 
            , #{board_password}     
            , #{email}
            , #{lock_at}
            , #{notice_at}
            , #{subject}
            , #{contents}
            , #{category_se}
            , #{phn_num}
            , #{sms_at}
            , 'BRST01'            
		    , #{answer_push_at}	
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
			ON DUPLICATE KEY 
		UPDATE 
			  UPDT_ID			= #{usr_id}
			, UPDT_DE			= DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')			 
            , NTICE_START_DT    = #{ntice_start_dt} 
            , NTICE_END_DT      = #{ntice_end_dt}   
            , BOARD_PASSWORD    = #{board_password}          
            , EMAIL             = #{email}          
            , LOCK_AT           = #{lock_at}        
            , NOTICE_AT         = #{notice_at}      
            , SUBJECT           = #{subject}        
            , CONTENTS          = #{contents}       
            , CATEGORY_SE       = #{category_se}    
            , PHN_NUM           = #{phn_num}        
            , SMS_AT            = #{sms_at}         
            , BOARD_STTUS       = #{board_sttus}                
		    , ANSWER_PUSH_AT    = #{answer_push_at}				    
	</update>
	
	
	<delete id="deleteNotice" parameterType="Map">
	/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml deleteNotice 공지사항/도움말 정보 삭제 */
		DELETE FROM	BOARD
		WHERE BOARD_ID = #{board_id}
	</delete>
	
	
	<update id="saveNoticeAnswer" parameterType="Map">
		/* i2c.biz.admin.ntcn.bbsMng.notice.dao.NoticeDAO.xml saveNoticeAnswer 공지사항/도움말에 대한 답변 저장 */
		UPDATE BOARD 
		   SET ANSWER_CONTENTS = #{answer_contents}
	  	 WHERE BOARD_ID = #{board_id} 
	</update>
	
	<update id="updateInquery" parameterType="java.lang.String">
    	/* [com.i2sema.board.dao.BoardDAO.updateInquery] 조회수 업데이트 */
		UPDATE BOARD
		SET INQUERY = INQUERY +1
		WHERE 
			BOARD_ID =  #{board_id}				     
	</update>
	
	
</mapper>