<?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.arsNumMng.dao.ArsNumMngDAO">
	<resultMap    id="arsNumMngVO"  type="i2c.biz.admin.arsNumMng.vo.ArsNumMngVO"     />    
    <parameterMap id="arsNumMngVO"  type="i2c.biz.admin.arsNumMng.vo.ArsNumMngVO"     />
    
    <sql id="searchQuery"> 
    	<if test="@i2c.cmm.util.StringUtil@isEmpty(auth_code) == false">
      		<if test="auth_code == 'ROLE_ADMIN'">
			AND MBER_NO = #{mber_no}		
            </if>
            <if test="auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR'">
			AND USR_ID = #{usr_id}		
            </if>
      	</if>
    	<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">	
			<if test="searchCondition == 'USRNM'">			
			AND USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
			</if>				
			<if test="searchCondition == 'ARSNUM'">			
			AND ARS_NUM LIKE CONCAT('%', #{searchKeyword}, '%')
			</if>				
		</if>
    </sql>
    
     <select id="countArsNumMng" parameterMap="arsNumMngVO" resultType="int">
        /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.countArsNumMng] 080 번호 목록 카운트 */
        SELECT 
				count(usr_id) 
		FROM 
			(
			 SELECT
		        	*
		       FROM
			        (SELECT 
				              AN.ARS_NUM
				            , AN.USR_ID
				            , AN.MBER_NO
				            , AN.PROVIDER
				            , FN_GET_USR_NM(AN.USR_ID) USR_NM
				            , (select PHN_NUM from SNS_USER where AN.USR_ID = USR_ID) as PHN_NUM  
				            , (select EMAIL from SNS_USER where AN.USR_ID = USR_ID) as EMAIL
				       FROM 
				              ARS_NUM_MNG AN 
				     WHERE
				              AN.USE_AT = 'Y'				              
				     ) A 
				     WHERE 1=1 
				     <include refid="searchQuery"/>		             
		    )B		
     </select>   
     
     <select id="listArsNumMng" parameterMap="arsNumMngVO" resultMap="arsNumMngVO">
        /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.listArsNumMng] 080 번호 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	               SELECT 
					     AN.ARS_ID
					   , AN.USR_ID
					   , FN_GET_USR_NM(AN.USR_ID) USR_NM
					   , AN.MBER_NO
					   , (SELECT SU.USR_NM 
					        FROM ADD_MBER_INFO AM, SNS_USER SU 
					       WHERE AM.USR_ID = SU.USR_ID
					         AND AM.MBER_NO = AN.MBER_NO
					     ) MBER_USR_NM
					   , (SELECT COUNT(RN.REJECT_ID)
					       FROM REJECT_NUM_MNG RN 
					      WHERE RN.ARS_ID = AN.ARS_ID
					      ) REJECT_CNT  
					   , AN.ORG_ID
					   , AN.ARS_NUM
					   , AN.PROVIDER
					   , AN.PRPOS
					   , AN.STATUS
					   , FN_GET_CODE_NM('ARS_ST', AN.STATUS) STATUS_NM 
					   , AN.USE_AT
					   , DATE_FORMAT(AN.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
					   , (select PHN_NUM from SNS_USER where an.USR_ID = USR_ID) as PHN_NUM
					   , (select EMAIL from SNS_USER where AN.USR_ID = USR_ID) as EMAIL
					   
				   FROM 
				        ARS_NUM_MNG AN
			      WHERE 1=1
			          AND AN.USE_AT = 'Y'				           		
			     	  ORDER BY AN.REGIST_DE DESC
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
		      WHERE 1=1
		      <include refid="searchQuery"/> 
        	) C	        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}
       
    </select>
    
    <update id="deleteArsNumMng" parameterMap="arsNumMngVO">
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.deleteArsNumMng] 080 번호 삭제*/
       UPDATE ARS_NUM_MNG 
		  SET USE_AT = 'N'
	    WHERE ARS_ID = #{ars_id}
    </update>
    
    <insert id="insertArsNumMng" parameterMap="arsNumMngVO" >
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.insertArsNumMng] 080 번호 등록*/
   		 INSERT INTO ARS_NUM_MNG
			(
               ARS_ID
             , USR_ID
             , MBER_NO
             , ORG_ID
             , ARS_NUM
             , PROVIDER
             , PRPOS
             , USE_AT
             , STATUS
             , REGIST_ID
             , REGIST_DE
			)
		VALUES 
			(
               #{ars_id}
             , #{usr_id}
             , #{mber_no}
             , #{org_id}
             , #{ars_num}
             , #{provider}
             , #{prpos}
             , #{use_at}
             , #{status}
             , #{regist_id}
             , DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    <select id="arsUsrSearch" parameterMap="arsNumMngVO" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.arsUsrSearch] auth_code별 유저검색 */
    	SELECT 
    			usr_id
    		   ,usr_nm 
    		   ,org_sid
    	  FROM 
    	  		sns_user 
    	 WHERE 	
    	 		1=1
    	   AND 	login_id = #{login_id}
    </select>
    
    <select id="count080ArsNum" parameterMap="arsNumMngVO" resultType="int">
        /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.count080ArsNum] 파트너 Admin-080 번호 목록 카운트 */
        SELECT 
				count(usr_id) 
		FROM 
			(
			 SELECT
		        	*
		       FROM
			        (SELECT 
				              AN.ARS_NUM
				            , AN.USR_ID
				            , AN.PROVIDER
				            , FN_GET_USR_NM(AN.USR_ID) USR_NM
				            , (select PHN_NUM from SNS_USER where AN.USR_ID = USR_ID) as PHN_NUM  
				            , (select EMAIL from SNS_USER where AN.USR_ID = USR_ID) as EMAIL
				       FROM 
				              ARS_NUM_MNG AN 
				     WHERE
				              AN.USE_AT = 'Y'		
				              <include refid="searchQuery"/>		              
				     ) A   				     
		     )B		
     </select>   
     
     <select id="list080ArsNum" parameterMap="arsNumMngVO" resultMap="arsNumMngVO">
        /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.list080ArsNum] 파트너 Admin-080 번호 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	               SELECT 
					     AN.ARS_ID
					   , AN.USR_ID
					   , FN_GET_USR_NM(AN.USR_ID) USR_NM
					   , AN.MBER_NO
					   , (SELECT COUNT(RN.REJECT_ID)
					       FROM REJECT_NUM_MNG RN 
					      WHERE RN.ARS_ID = AN.ARS_ID
					      ) REJECT_CNT  
					   , AN.ORG_ID
					   , AN.ARS_NUM
					   , AN.PROVIDER
					   , AN.PRPOS
					   , AN.STATUS
					   , FN_GET_CODE_NM('ARS_ST', AN.STATUS) STATUS_NM 
					   , AN.USE_AT
					   , DATE_FORMAT(AN.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
					   , (select PHN_NUM from SNS_USER where an.USR_ID = USR_ID) as PHN_NUM
					   , (select EMAIL from SNS_USER where AN.USR_ID = USR_ID) as EMAIL
				   FROM 
				        ARS_NUM_MNG AN
			      WHERE 1=1
			          AND AN.USE_AT = 'Y'				          
			     	  ORDER BY AN.REGIST_DE DESC
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
		 WHERE 1=1      
		 <include refid="searchQuery"/>   	
        ) C
        
		ORDER BY RNUM
		LIMIT #{firstIndex}, #{recordCountPerPage}
    </select>
    
    <insert id="save080ArsNum" parameterMap="arsNumMngVO" >
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.insert080ArsNum] 파트너 Admin 메인 - 080 ARS 등록 */
   		 INSERT INTO ARS_NUM_MNG
			(
               ARS_ID
             , USR_ID
             , MBER_NO
             , ORG_ID
             , ARS_NUM
             , PROVIDER
             , PRPOS
             , USE_AT
             , STATUS
             , REGIST_ID
             , REGIST_DE
			)
		VALUES 
			(
               #{ars_id}
             , #{usr_id}
             , #{mber_no}
             , #{org_id}
             , #{ars_num}
             , #{provider}
             , #{prpos}
             , #{use_at}
             , #{status}
             , #{regist_id}
             , DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    <update id="delete080ArsNum" parameterMap="arsNumMngVO">
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.delete080ArsNum] 파트너 Admin 메인 - 080 ARS 삭제 */
       UPDATE ARS_NUM_MNG 
		  SET USE_AT = 'N'
	    WHERE ARS_ID = #{ars_id}
    </update>
    
    <select id="selectCmp" parameterMap="arsNumMngVO" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.selectCmp] 파트너 Admin-회원사 확인*/
    	SELECT 
    	      AMI.CMPNM
    	    , AMI.MBER_NO
		 FROM 
		      ADD_MBER_INFO AMI 
		    , SNS_USER SU
		WHERE 
		     SU.USR_ID = AMI.USR_ID 
		 AND SU.USR_ID = #{usr_id}
    </select>
    
    <select id="findAdmin" parameterType="java.lang.String" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.arsNumMng.dao.ArsNumMngDAO.arsUsrSearch] auth_code별 유저검색 */
    	SELECT 
    			usr_id
    		   ,usr_nm 
    		   ,org_sid
    		   ,auth_code
    	  FROM 
    	  		sns_user 
    	 WHERE 	
    	 		1=1
    	   AND 	org_sid = #{org_id}
    </select>
    
</mapper>