<?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.bbs.dao.BbsDAO">
    <resultMap id="bbsVO"     type="i2c.biz.admin.ntcn.bbsMng.bbs.vo.BbsVO"     />    
    <parameterMap id="bbsVO"  type="i2c.biz.admin.ntcn.bbsMng.bbs.vo.BbsVO"     />
        
    <select id="countBbs" parameterMap="bbsVO" resultType="int">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.countBbs] 전체 게시판 건수 */
        SELECT 
	           COUNT(BM.BOARD_TP)   
	      FROM BOARD_MASTER BM
    </select>
    
    <select id="listBbs" parameterMap="bbsVO" resultMap="bbsVO">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.listBbs] 전체 게시판 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	                SELECT 
						   BM.BOARD_TP
						 , BM.BOARD_MASTER_NM
						 , BM.GRP_NM
						 , BM.SRT_ORD
						 , (SELECT
						 			COUNT(B.BOARD_ID)
						 	  FROM BOARD B
						 	 WHERE B.BOARD_TP = BM.BOARD_TP
						 	) ALL_BBS_CNT
						 , (SELECT
						 			COUNT(B.BOARD_ID)
						 	  FROM BOARD B
						 	 WHERE B.BOARD_TP = BM.BOARD_TP
						 	   AND DATE_FORMAT(B.REGIST_DE,'%Y%M') = DATE_FORMAT(SYSDATE(),'%Y%M')
						 	) MON_BBS_CNT
						 , (SELECT
						 			COUNT(B.BOARD_ID)
						 	  FROM BOARD B
						 	 WHERE B.BOARD_TP = BM.BOARD_TP
						 	   AND DATE(B.REGIST_DE) = DATE(SYSDATE()) 
						 	) DAY_BBS_CNT
					  FROM BOARD_MASTER BM
			   		 WHERE 1=1      
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM		            
		     		ORDER BY SRT_ORD
        	  ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}	 		 
    </select>
    
    <select id="selectBbs" parameterMap="bbsVO" resultMap="bbsVO">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.selectBbs] 전체 게시판 상세 */
        SELECT 
			   BM.BOARD_TP
			 , BM.BOARD_MASTER_NM
			 , BM.GRP_NM
			 , BM.SRT_ORD			 
		  FROM BOARD_MASTER BM
	  	 WHERE BM.BOARD_TP = #{board_tp}
    </select> 
    
    <update id="saveBbs" parameterType="Map">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.saveBbs] 전체 게시판 저장 */
        INSERT INTO BOARD_MASTER 
        	(
			  BOARD_TP
			, BOARD_MASTER_NM
			, GRP_NM
			, SRT_ORD  
			, REGIST_ID
			, REGIST_DE
			, UPDT_ID
			, UPDT_DE	
			) 
        VALUES 
        	(
			  #{board_tp}
			, #{board_master_nm}
			, #{grp_nm}
			, #{srt_ord}		
			, #{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')  
			, BOARD_MASTER_NM	= #{board_master_nm}
			, GRP_NM			= #{grp_nm}
			, SRT_ORD 			= #{srt_ord}									
    </update>   
    
    <delete id="deleteBbs" parameterType="Map">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.deleteBbs] 전체 게시판 삭제 */
        DELETE FROM BOARD_MASTER WHERE BOARD_TP = #{board_tp}
    </delete>
    
    <select id="selectBbsAuth" parameterMap="bbsVO" resultMap="bbsVO">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.selectBbsAuth] 전체 게시판 권한목록 */
        SELECT 
			   SCC.CD BOARD_AUTHOR
			 , SCC.CD_NM BOARD_AUTHOR_NM				 
			 , BA.EMAIL_AT
			 , BA.SNS_AT
			 , SCC.SRT_ORD			 
		  FROM SNS_COMMON_CODE SCC 
		  LEFT OUTER JOIN BOARD_AUTH BA ON SCC.CD = BA.BOARD_AUTHOR AND BA.BOARD_TP = #{board_tp}
		 WHERE SCC.UP_CD = 'BOARD_AUTHOR'
		ORDER BY SCC.SRT_ORD	  	 
    </select>
    
    <delete id="deleteBbsAuth" parameterType="Map">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.deleteBbsAuth] 전체 게시판 권한 저장 */
        DELETE FROM BOARD_AUTH         
        <if test="@i2c.cmm.util.StringUtil@isEmpty(board_tp) == false">
        	WHERE BOARD_TP = #{board_tp}
        </if>
    </delete>   
    
    <insert id="saveBbsAuth" parameterType="Map">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.saveBbsAuth] 전체 게시판 권한 저장 */
        INSERT INTO BOARD_AUTH 
        	(
			  BOARD_AUTHOR
			, BOARD_TP
			, EMAIL_AT
			, SNS_AT 
			, REGIST_ID
			, REGIST_DE
			, UPDT_ID
			, UPDT_DE	
			) 
        VALUES         
        	(
			  #{board_author}
			, #{board_tp}
			, #{email_at}
			, #{sns_at}						
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)				
    </insert>   
    
    <delete id="deleteBoard" parameterType="Map">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.deleteBoard] 게시글 삭제 */
        DELETE FROM BOARD         
        <if test="@i2c.cmm.util.StringUtil@isEmpty(board_tp) == false">
        	WHERE BOARD_TP = #{board_tp}
        </if>
    </delete> 
    
    <select id="createBbsYn" parameterType="Map" resultType="int">
        /* [i2c.biz.admin.ntcn.bbsMng.bbs.dao.BbsDAO.createBbsYn] 게시판 생성 가능여부 */
        SELECT 
			   COUNT(SCC.CD) 			 
		  FROM SNS_COMMON_CODE SCC 
		  LEFT OUTER JOIN BOARD_MASTER BM ON SCC.CD = BM.BOARD_TP
		 WHERE SCC.UP_CD = 'BOARD_TP'
		   AND BM.BOARD_TP IS NULL
		   AND SCC.USE_YN = 'Y'		  	 
    </select>
    

</mapper>