<?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.dsptchNumMng.dao.DsptchNumMngDAO">
	<resultMap    id="dsptchNumMngVO"  type="i2c.biz.admin.dsptchNumMng.vo.DsptchNumMngVO"     />    
    <parameterMap id="dsptchNumMngVO"  type="i2c.biz.admin.dsptchNumMng.vo.DsptchNumMngVO"     />
    
    <sql id="searchQuery">    	
		<if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">			
			<if test="searchCondition == 'CMPNM'">
			AND DP.MBER_NO = (SELECT AMI.MBER_NO FROM ADD_MBER_INFO AMI WHERE AMI.CMPNM = #{searchKeyword} LIMIT 1)
			</if>
			<if test="searchCondition == 'DSPTCHNUM'">
			AND DP.DSPTCH_NUM LIKE CONCAT('%', #{searchKeyword} , '%')
			</if>				
			<if test="searchCondition == 'USRNM'">
		    AND DP.USR_ID = SU.USR_ID
       		AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword} , '%')
			</if>	
		</if>	
      	<if test="searchSdate != null and searchSdate !='' and searchEdate !=null and searchEdate !='' ">
      		AND DP.REGIST_DE BETWEEN CONCAT(REPLACE(#{searchSdate}, '-', ''), '000000') AND CONCAT(REPLACE(#{searchEdate}, '-', ''), '235959')
      	</if>
      	<if test="@i2c.cmm.util.StringUtil@isEmpty(auth_code) == false">
      		<if test="auth_code == 'ROLE_ADMIN'">
			AND DP.MBER_NO = #{mber_no}		
            </if>
            <if test="auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR'">
			AND DP.USR_ID = #{usr_id}		
            </if>
      	</if>
      	
    </sql>
    
    <select id="countDsptchNumMng" parameterMap="dsptchNumMngVO" resultType="int">
        /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.countDsptchNumMng] 발신번호 카운트 */
        SELECT
        	COUNT(DSPTCH_ID)
          FROM
	        (SELECT 
		           DP.DSPTCH_ID  
		      FROM 
		          DSPTCH_NUM_MNG DP 	
		          <if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">			
					<if test="searchCondition == 'USRNM'">
					, SNS_USER SU
					</if>	
				  </if>
		     WHERE 
		          DP.USE_AT = 'Y'	
		          <include refid="searchQuery"/>	   
		     ) A
		  WHERE 1=1
    </select>
    
    <select id="listDsptchNumMng" parameterMap="dsptchNumMngVO" resultMap="dsptchNumMngVO">
        /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.listDsptchNumMng] 발신번호 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
	               SELECT 
			           DP.DSPTCH_ID
			         , DP.USR_ID
			         , FN_GET_USR_NM(DP.USR_ID) USR_NM
			         , (SELECT AM.CMPNM
			             FROM ADD_MBER_INFO AM
			             WHERE AM.USR_ID = DP.USR_ID) CMPNM
			         , DP.MBER_NO
			         , DP.ORG_ID
			         , DP.DSPTCH_NUM
			         , DP.CSTMR_CD
			         , FN_GET_CODE_NM('CRTFC_TY', DP.CSTMR_CD) CSTMR_CD_NM   
			         , DP.PRPOS
			         , FN_GET_CODE_NM('DSPTCH_ST', DP.STATUS) STATUS  
			         , DP.USE_AT
			         , FN_GET_USR_NM(DP.REGIST_ID) REGIST_NM
			         , DATE_FORMAT(DP.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
			     FROM 
			          DSPTCH_NUM_MNG DP
			          <if test="@i2c.cmm.util.StringUtil@isEmpty(searchKeyword) == false">			
						<if test="searchCondition == 'USRNM'">
						, SNS_USER SU
						</if>	
					  </if>	
			     WHERE 
			          DP.USE_AT = 'Y'	
			     	 <include refid="searchQuery"/>   
		            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
		            ORDER BY B.REGIST_DE 
        	) C        
		ORDER BY RNUM DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}	 		 
    </select>
    
    <update id="deleteDsptchNumMng" parameterMap="dsptchNumMngVO">
    /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.deleteDsptchNumMng] 발신번호 삭제*/
	    UPDATE  DSPTCH_NUM_MNG
		 SET USE_AT = 'N'
		   , STATUS = 'DSPTCHST03'
		 WHERE DSPTCH_ID = #{dsptch_id}
    </update>
    
    <select id="selectAuthCode" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	    SELECT 
	          CRTFC_NUM
	        , RESULT_CODE
		FROM 
		     NARAE_CRTFC
	    WHERE 
	         ARS_NUM = #{ars_num}
	     AND CRTFC_NUM = #{crtfc_num}
	     LIMIT 1;
    </select>
    
    <select id="selectDsptchNumMng" parameterMap="dsptchNumMngVO" resultMap="dsptchNumMngVO">
       			SELECT 
			           DP.DSPTCH_ID
			         , DP.USR_ID
			         , FN_GET_USR_NM(DP.USR_ID) ADMIN_NM
			         , DP.MBER_NO
			         , DP.ORG_ID
			         , DP.DSPTCH_NUM
			         , DP.CSTMR_CD
			         , FN_GET_CODE_NM('CRTFC_TY', DP.CSTMR_CD) CSTMR_CD_NM   
			         , DP.PRPOS
			         , DP.STATUS
			         , FN_GET_CODE_NM('DSPTCH_ST', DP.STATUS) STATUS_NM
			         , DP.USE_AT
			         , FN_GET_USR_NM(DP.REGIST_ID) REGIST_NM
			         , DATE_FORMAT(DP.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
			     FROM 
			          DSPTCH_NUM_MNG DP
			     WHERE 
			          DP.USE_AT = 'Y'
			      AND DP.DSPTCH_ID = #{dsptch_id}
    </select>
    
    <insert id="insertDsptchNum" parameterType="i2c.biz.admin.dsptchNumMng.vo.DsptchNumMngVO">
         INSERT INTO DSPTCH_NUM_MNG
			(
               DSPTCH_ID
             , USR_ID
             , MBER_NO
             , ORG_ID
             , DSPTCH_NUM
             , CSTMR_CD
             , PRPOS
             , USE_AT
             , STATUS
             , REGIST_ID
             , REGIST_DE
			)
		VALUES 
			(
               #{dsptch_id}
             , #{usr_id}
             , #{mber_no}
             , #{org_id}
             , #{dsptch_num}
             , #{cstmr_cd}
             , #{prpos}
             , #{use_at}
             , #{status}
             , #{regist_id}
             , DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>
    
    <update id="updateDsptchNum" parameterMap="dsptchNumMngVO">
    	UPDATE
                 DSPTCH_NUM_MNG
            SET                                                                      UPDT_DE           = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
              <if test="@i2c.cmm.util.StringUtil@isEmpty(prpos           ) == false">, PRPOS           = #{prpos            } </if>    
              <if test="@i2c.cmm.util.StringUtil@isEmpty(status          ) == false">, STATUS          = #{status           } </if>
              <if test="@i2c.cmm.util.StringUtil@isEmpty(dsptch_num      ) == false">, DSPTCH_NUM      = #{dsptch_num       } </if>
              
          WHERE DSPTCH_ID = #{dsptch_id}        
    </update>
    
    <select id="userListCnt"  parameterMap="dsptchNumMngVO" resultType="int">
        /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.userListCnt] 회원 목록 count */
        SELECT
              COUNT(SU.USR_ID)
         FROM
              SNS_USER SU
        WHERE 
             ((SU.USE_STOP_YN is NULL) or (SU.USE_STOP_YN = 'N'))
          <if test="searchCondition == 'USRNM'">
          AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>  
          <if test="searchCondition == 'LOGINID'">
          AND SU.LOGINID LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>
    </select>
    
    <select id="userList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.userList] 회원 목록 */
          SELECT *
	   FROM (
	       SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*    
		    FROM (
	            SELECT 
				      SU.LOGIN_ID
				    , SU.USR_ID
				    , SU.USR_NM
				    , SU.ORG_SID
				    , SU.PHN_NUM
				    , SU.ORG_SID ORG_NM
				   , CONCAT(SU.USR_NM,' / ',SU.LOGIN_ID) USR_INFO
				   , SU.MBER_NO
				 FROM
				     SNS_USER SU
				WHERE ((SU.USE_STOP_YN is NULL) or (SU.USE_STOP_YN = 'N'))
				    <if test="searchCondition == 'USRNM'">
		            AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
		            </if>  
		            <if test="searchCondition == 'LOGINID'">
		            AND SU.LOGINID LIKE CONCAT('%', #{searchKeyword}, '%')
		            </if>
		            ORDER BY SU.CRT_DTTM DESC	
	           ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
	       ) C        
		ORDER BY RNUM DESC
		LIMIT #{firstIndex}, #{recordCountPerPage}
    </select>
    
    <select id="adminUserList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
         /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.adminUserList] 관리자 정보 */
		SELECT 
		       SU.USR_ID
		     , SU.MBER_NO
		     , SU.ORG_SID ORG_ID
		     , SU.USR_NM
		     , SU.LOGIN_ID
		     , CONCAT(SU.USR_NM,' / ',SU.LOGIN_ID,' / ',SU.MBER_NO) AD_INFO
		  FROM 
		      SNS_USER SU
		     , SUB_MBER_INFO SMI
		     , ADD_MBER_INFO AMI
	     WHERE 1=1
		   AND SMI.USR_ID = SU.USR_ID 
           AND AMI.USR_ID = SU.USR_ID    
		   AND SU.AUTH_CODE IN ('ROLE_ADMIN','ROLE_MC_MNGR','ROLE_CORE_MNGR')
	 </select>
	 
	 <select id="arsUserList" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.arsUserList] 회원 목록 */
         SELECT 
		      SU.LOGIN_ID
		    , SU.USR_ID
		    , SU.USR_NM
		    , SU.ORG_SID
		    , SU.MBER_NO
		    , SU.PHN_NUM
		    , CONCAT(SU.USR_NM,' / ',SU.LOGIN_ID) USR_INFO
		 FROM
		     SNS_USER SU
		WHERE 1=1
	    	AND SU.APPROVAL ='Y'
		    AND SU.USE_STOP_YN != 'Y'
     		<if test="auth_code == 'ROLE_ADMIN'">
		    AND SU.MBER_NO = #{mber_no}		
            </if>
            <if test="auth_code == 'ROLE_MC_MNGR' or auth_code == 'ROLE_CORE_MNGR'">
		    AND SU.USR_ID = #{usr_id}		
            </if>          
    </select>
    
    <select id="selectUserMber" parameterType="java.lang.String" resultType="java.lang.String">
    /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.selectUserMber] 회원정보 확인*/
     	 SELECT 
		      AM.MBER_NO
		 FROM
		     SNS_USER SU
		   , ADD_MBER_INFO AM
		WHERE
    		SU.USR_ID = AM.USR_ID
	    AND SU.USR_ID = #{usr_id}
     </select>
     
     <select id="selectCmp" parameterMap="dsptchNumMngVO" resultType="i2c.cmm.base.CommonResultMap">
    /* [i2c.biz.admin.dsptchNumMng.dao.DsptchNumMngDAO.selectCmp] 파트너 Admin-회원사 확인*/
    	SELECT 
    	      AMI.CMPNM
    	    , AMI.MBER_NO
    	    , AMI.ORG_ID
		 FROM 
		      ADD_MBER_INFO AMI 
		    , SNS_USER SU
		WHERE 
		     SU.USR_ID = AMI.USR_ID 
		 AND SU.USR_ID = #{usr_id}
    </select>
     

</mapper>