<?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.appDrvNtcn.dao.AppDrvNtcnDAO">
    <resultMap id="appDrvNtcnVO"     type="i2c.biz.admin.ntcn.appDrvNtcn.vo.AppDrvNtcnVO"     />    
    <parameterMap id="appDrvNtcnVO"  type="i2c.biz.admin.ntcn.appDrvNtcn.vo.AppDrvNtcnVO"     />
    
    
    <select id="countAppDrvNtcn" parameterMap="appDrvNtcnVO" resultType="int">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.countAppDrvNtcn] 앱 구동공지 건수 */
        SELECT 
			   COUNT(EN.EXOR_NOTICE_ID)
		  FROM 
			   EXOR_NOTICE EN
		 WHERE 
			  EN.NOTICE_STTUS IN ('STTUS2', 'STTUS9')
    </select>
    
    <select id="listAppDrvNtcn" parameterMap="appDrvNtcnVO" resultMap="appDrvNtcnVO">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.listAppDrvNtcn] 앱 구동공지 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT 
			         EN.EXOR_NOTICE_ID
			       , FN_GET_CODE_NM('EXOR_NOTICE_SE',EN.EXOR_NOTICE_SE) EXOR_NOTICE_SE_NM
			       , EN.SUBJECT
			       , EN.UPDT_DE
			       , CONCAT(SUBSTR(EN.NOTICE_START_DE, 1,4), '-', SUBSTR(EN.NOTICE_START_DE, 5,2), '-', SUBSTR(EN.NOTICE_START_DE, 7,2), ' ', SUBSTR(EN.NOTICE_START_DE, 9,2), ':', SUBSTR(EN.NOTICE_START_DE, 11,2) ) NOTICE_START_DE
			       , IFNULL(DATE_FORMAT(EN.UPDT_DE, '%Y-%m-%d %H:%i'),'-') NOTICE_END_DE
			       , (SELECT SU.USR_NM
			           FROM SNS_USER SU 
			          WHERE SU.USR_ID = EN.REGIST_ID
			          ) REGIST_NM
			       , DATE_FORMAT(EN.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE  
			       , FN_GET_CODE_NM('NOTICE_STTUS',EN.NOTICE_STTUS) NOTICE_STTUS_NM
		           , CASE WHEN EN.NOTICE_STTUS IN ('STTUS1', 'STTUS2')
		                  THEN 1
		                  ELSE 0  
		                   END AS TOP_AT
			    FROM 
			         EXOR_NOTICE EN
			    WHERE 1=1
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
            ORDER BY B.UPDT_DE
        ) C        
		ORDER BY TOP_AT DESC, RNUM DESC
		LIMIT #{firstIndex} , #{recordCountPerPage}		 		 
    </select>
    
    <select id="selectAppDrvNtcn" parameterMap="appDrvNtcnVO" resultMap="appDrvNtcnVO">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.selectAppDrvNtcn] 앱 구동공지 조회 */
        SELECT
	           EXOR_NOTICE_ID 
			 , EXOR_NOTICE_SE  
			 , FN_GET_CODE_NM('EXOR_NOTICE_SE',EXOR_NOTICE_SE) EXOR_NOTICE_SE_NM
			 , SUBJECT    		
			 , NOTICE_CONTENTS  
			 , CONCAT(SUBSTR(NOTICE_START_DE, 1,4), '-', SUBSTR(NOTICE_START_DE, 5,2), '-', SUBSTR(NOTICE_START_DE, 7,2))  START_YMD
			 , SUBSTR(NOTICE_START_DE, 9,2) START_HH
			 , SUBSTR(NOTICE_START_DE, 11,2) START_MM
			 , FN_GET_CODE_NM('NOTICE_STTUS',NOTICE_STTUS) NOTICE_STTUS_NM
			 , CONN_METHOD
			 , LINK_URL
			 , NOTICE_STTUS
		  FROM EXOR_NOTICE
		 WHERE NOTICE_STTUS IN ('STTUS1', 'STTUS2')
    </select> 
    
     <select id="checkAppSttus" parameterMap="appDrvNtcnVO" resultType="int">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.checkAppSttus] 앱 상태 조회 */
             SELECT COUNT(EN.EXOR_NOTICE_ID)
			  FROM EXOR_NOTICE EN 
			  WHERE EN.NOTICE_STTUS IN ('STTUS1' ,'STTUS2')
     </select>
    
    <insert id="insertAppDrvNtcn" parameterMap="appDrvNtcnVO">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.insertAppDrvNtcn] 앱 구동공지 생성 */
        INSERT INTO EXOR_NOTICE
			(
               EXOR_NOTICE_ID
             , EXOR_NOTICE_SE
             , SUBJECT
             , NOTICE_CONTENTS
             , NOTICE_START_DE
             , NOTICE_STTUS
             , CONN_METHOD
			 , LINK_URL
             , REGIST_ID
             , REGIST_DE
			)
		VALUES 
			(
               #{exor_notice_id }
             , #{exor_notice_se }
             , #{subject        }
             , #{notice_contents}
             , #{notice_start_de}
             , #{notice_sttus   }
             , #{conn_method    }
             , #{link_url       }
             , #{regist_id      }
             , DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    <update id="updateAppDrvNtcn" parameterMap="appDrvNtcnVO">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.updateAppDrvNtcn] 앱 구동공지 수정 */
        UPDATE EXOR_NOTICE SET
        	NOTICE_STTUS = 'STTUS9'
          , UPDT_DE = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
		WHERE
			EXOR_NOTICE_ID = #{exor_notice_id}
    </update>     
    
    <delete id="cancelAppDrvNtcn" parameterMap="appDrvNtcnVO">
	  /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.cancelAppDrvNtcn] 앱 구동공지 취소 */
		DELETE FROM	EXOR_NOTICE
		WHERE NOTICE_STTUS = 'STTUS1'
	</delete>  
    
    <select id="selectAppDrvNtcnApi" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.selectAppDrvNtcnApi] 앱 구동공지 Api조회 */
        SELECT
	           FN_GET_CODE_NM('EXOR_NOTICE_SE',EXOR_NOTICE_SE) EXOR_NOTICE_SE_NM
			 , SUBJECT    		
			 , NOTICE_CONTENTS
			 , CONN_METHOD
			 , LINK_URL
		  FROM EXOR_NOTICE
		 WHERE 1=1		 
		 <if test="@i2c.cmm.util.StringUtil@isEmpty(notice_sttus) == false">
		   AND NOTICE_STTUS = #{notice_sttus}
		 </if>
    </select> 
    
    <select id="appDrvScheduleInfo" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.appDrvScheduleInfo] 앱 구동공지 스케줄링 정보 */
        SELECT
	           EXOR_NOTICE_ID
			 , SUBJECT    		
			 , NOTICE_CONTENTS			 
			 , NOTICE_START_DE
		  FROM EXOR_NOTICE
		 WHERE NOTICE_STTUS = 'STTUS1'		   
		   AND NOTICE_START_DE = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i')	
    </select>     
    
    <update id="updateAppDrvSttus" parameterMap="appDrvNtcnVO">
        /* [i2c.biz.admin.ntcn.appDrvNtcn.dao.AppDrvNtcnDAO.updateAppDrvSttus] 앱 구동공지 상태 수정(scheduling) */
        UPDATE EXOR_NOTICE SET
        	NOTICE_STTUS = #{notice_sttus}          
		WHERE
			EXOR_NOTICE_ID = #{exor_notice_id}
    </update>
    
</mapper>