<?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.opinion.dao.OpinionDAO">

	<resultMap id="opinionVO"      type="i2c.biz.admin.ntcn.bbsMng.opinion.vo.OpinionVO" />
	
	<sql id="searchQuery">  
    	<if test="searchKeyword != null and searchKeyword !=''">  
          <if test="searchCondition == 'SUBJECT'">
          	AND B.SUBJECT LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>
          <if test="searchCondition == 'USRNM'">
          	AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          </if> 
          <if test="searchCondition == 'USRID'">
          	AND SU.LOGIN_ID LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>  
      	</if>      	
      	<if test="@i2c.cmm.util.StringUtil@isEmpty(board_tp) == false">
      		AND B.BOARD_TP = #{board_tp}
      	</if>       	 	 
    </sql>  

	<select id="countOpinion" parameterType="i2c.biz.admin.ntcn.bbsMng.opinion.vo.OpinionVO"   resultType="int">
	/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml countOpinion 사용자 의견 정보 건수 */		
		SELECT 
               COUNT(B.BOARD_ID)          
          FROM BOARD B
	   	     , SNS_POST SP
	   	     , SNS_USER SU
   	     WHERE SP.TAR_OBJ_ID = B.BOARD_ID
   	       AND B.REGIST_ID = SU.USR_ID
      	   AND SP.POST_TP = 'OPINION'		
	     <include refid="searchQuery"/>
	</select>	
	
	<select id="listOpinion" parameterType="i2c.biz.admin.ntcn.bbsMng.opinion.vo.OpinionVO"  resultMap="opinionVO">
	/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml listOpinion 사용자 의견 정보  목록 */
		SELECT *
        FROM (
            SELECT 
            	  B.*
            	, (@ROWNUM  := @ROWNUM + 1) RNUM              	        	
              FROM (
	               SELECT 
	                     B.BOARD_ID
			           , B.BOARD_TP
			           , B.NTICE_START_DT
			           , B.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
					   , SU.USR_NM REGIST_NM
					   , DATE_FORMAT(B.REGIST_DE, '%Y-%m-%d') REGIST_DE
					   , CASE WHEN B.ANSWER_CONTENTS IS NULL THEN '접수대기'
					     ELSE '답변완료'
					      END ANSWER_STTUS
					   , SP.CRT_DTTM
					   , SU.USR_NM
					   , SU.LOGIN_ID
	                FROM BOARD B
				   	   , SNS_POST SP
				   	   , SNS_USER SU
		    	   WHERE SP.TAR_OBJ_ID = B.BOARD_ID
		    	     AND B.REGIST_ID = SU.USR_ID
		       		 AND SP.POST_TP = 'OPINION'	
		       		 <include refid="searchQuery"/>
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM            
             ORDER BY CRT_DTTM DESC	
        ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}		 
	</select>		
	
	<select id="selectOpinion"  parameterType="i2c.biz.admin.ntcn.bbsMng.opinion.vo.OpinionVO" resultMap="opinionVO">
	/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml selectOpinion 사용자 의견 상세 */	              
		SELECT 
               B.BOARD_ID
             , B.BOARD_TP
             , B.BOARD_PASSWORD
             , B.NTICE_START_DT
             , B.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
	      FROM BOARD B
	         , SNS_POST SP
	     WHERE SP.TAR_OBJ_ID = B.BOARD_ID
	       AND SP.POST_TP = 'OPINION'
	       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="saveOpinion" parameterType="Map">
		/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml saveOpinion 사용자 의견 정보 저장 */
		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}	
			, #{regist_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, #{regist_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
			ON DUPLICATE KEY 
		UPDATE 
			  UPDT_ID			= #{regist_id}
			, UPDT_DE			= DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, BOARD_TP          = #{board_tp}       
            , 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="deleteOpinion" parameterType="Map">
	/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml deleteOpinion 사용자 의견 정보 삭제 */
		DELETE FROM	BOARD
		WHERE BOARD_ID = #{board_id}
	</delete>
	
	
	<update id="saveOpinionAnswer" parameterType="Map">
		/* i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.xml saveOpinionAnswer 사용자 의견에 대한 답변 저장 */
		UPDATE BOARD 
		   SET ANSWER_CONTENTS = #{answer_contents}
	  	 WHERE BOARD_ID = #{board_id} 
	</update>
	
	<select id="viewOpinion" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* [i2c.biz.admin.ntcn.bbsMng.opinion.dao.OpinionDAO.viewOpinion] 사용자의견 게시물 제목 조회 */
			SELECT B.SUBJECT
			     , DATE_FORMAT(B.REGIST_DE, '%Y-%m-%d') REGIST_DE
			     , B.REGIST_ID
			FROM BOARD B
	           , SNS_POST SP
	       WHERE SP.TAR_OBJ_ID = B.BOARD_ID
	         AND SP.POST_TP = 'OPINION'
	         AND B.BOARD_ID = #{board_id}
	 </select>
	
</mapper>