<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

<mapper namespace="i2c.biz.admin.loginHis.dao.LoginHisDAO">
 	
 	<parameterMap id="loginHisVO"  type="i2c.biz.admin.loginHis.vo.LoginHisVO" />
 	<resultMap 	  id="loginHisVO"  type="i2c.biz.admin.loginHis.vo.LoginHisVO" />
	
	
	<select id="selectUiCd"  parameterMap="loginHisVO"  resultMap="loginHisVO">
	 /* [i2c.biz.admin.loginHis.dao.LoginHisDAO.selectUiCd] 사용자관리화면 code조회*/
	 SELECT CD conn_ui_cd , 
	 		CD_NM conn_ui_cd_nm 
	 FROM 	SNS_COMMON_CODE  
	 WHERE 	UP_CD = 'CONN_UI_CD'
	   AND	CD_NM != 'HOME'
	</select>
	
	
	<select id="selectAdminLogCount"  parameterMap="loginHisVO" resultType="int">
		  /* [i2c.biz.admin.loginHis.dao.LoginHisDAO.selectAdminLogCount] 관리자로그인 내역리스트 count*/
		  	SELECT
				COUNT(0)
			FROM
			(
				SELECT ROW_NUMBER() OVER(ORDER BY REQ_DTTM desc) RNUM
						, TO_CHAR(TO_DATE(SRH.REQ_DTTM,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') REQ_DTTM
						, SRH.CONN_IP	
						, SU.USR_NM				
						, SRH.CONN_UI_CD
						, FN_GET_CODE_NM('CONN_UI_CD',CONN_UI_CD) CD_NM
						, SRH.CONN_CRUD
						, CASE WHEN SRH.CONN_UI_CD = 'ADM001' THEN '로그인' 
								WHEN SRH.CONN_CRUD = 'C' THEN '등록'
								 WHEN SRH.CONN_CRUD = 'R' THEN '조회' 
								 WHEN SRH.CONN_CRUD = 'U' THEN '수정' 
								 WHEN SRH.CONN_CRUD = 'D' THEN '삭제' 
								 END AS CRUD_NM
						, SRH.URL	
				FROM SNS_REQUEST_HISTORY SRH, SNS_USER SU
				
				WHERE SRH.CONN_UI_CD IN (SELECT SCC.CD FROM SNS_COMMON_CODE SCC WHERE SCC.UP_CD = 'CONN_UI_CD')
				AND SRH.USR_ID = SU.USR_ID
			<![CDATA[
				AND SUBSTR(SRH.REQ_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(SRH.REQ_DTTM,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchType)">				
				AND SRH.CONN_UI_CD IN 
				<foreach collection="searchType" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>			 
		    </if>
		    <if test="@i2c.cmm.util.StringUtil@isEmpty(searchType)">				
				AND SRH.CONN_UI_CD IN ('ADM002','ADM003','ADM004','ADM005')				 
		    </if>			  
			)
	</select>
		
		
   <select id="listAdminLogLink"  parameterMap="loginHisVO"  resultMap="loginHisVO">
        /* [i2c.biz.admin.loginHis.dao.LoginHisDAO.listAdminLogLink] 관리자로그인 내역 리스트*/
		SELECT
			*
		FROM
		(
			SELECT ROW_NUMBER() OVER(ORDER BY REQ_DTTM DESC) RNUM
					, TO_CHAR(TO_DATE(SRH.REQ_DTTM,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') REQ_DTTM
					, SRH.CONN_IP	
					, SU.USR_NM
					, SU.LOGIN_ID
					, SRH.CONN_UI_CD
					, FN_GET_CODE_NM('CONN_UI_CD',CONN_UI_CD) CONN_UI_CD_NM
					, SRH.CONN_CRUD
					, CASE WHEN SRH.CONN_UI_CD = 'ADM001' THEN '로그인' 
							WHEN SRH.CONN_CRUD = 'C' THEN '등록'
							 WHEN SRH.CONN_CRUD = 'R' THEN '조회' 
							 WHEN SRH.CONN_CRUD = 'U' THEN '수정' 
							 WHEN SRH.CONN_CRUD = 'D' THEN '삭제' 
							 END AS CONN_CRUD_NM
					, SRH.URL
			FROM SNS_REQUEST_HISTORY SRH, SNS_USER SU
			
			WHERE SRH.CONN_UI_CD IN (SELECT SCC.CD FROM SNS_COMMON_CODE SCC WHERE SCC.UP_CD = 'CONN_UI_CD')
			AND SRH.USR_ID = SU.USR_ID
		<![CDATA[
			AND SUBSTR(SRH.REQ_DTTM,0,8) >= #{start_dttm}
			AND SUBSTR(SRH.REQ_DTTM,0,8) <= #{end_dttm}
		]]>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchType)">
			AND SRH.CONN_UI_CD IN 
			<foreach collection="searchType" item="item" index="index" separator="," open="(" close=")">
               #{item}
            </foreach>	 
	    </if>			
	    <if test="@i2c.cmm.util.StringUtil@isEmpty(searchType)">				
			AND SRH.CONN_UI_CD IN ('ADM002','ADM003','ADM004','ADM005')				 
	    </if>	  
		)
	 <![CDATA[
		 WHERE RNUM  > #{firstIndex}
	     AND   RNUM <= #{firstIndex} + #{recordCountPerPage}
		 ORDER BY RNUM 
	   ]]> 
	</select>
		
		
    
	<select id="selectUsrLogCount"  parameterMap="loginHisVO" resultType="int">
	  /* [i2c.biz.admin.loginHis.dao.LoginHisDAO.selectUsrLogCount] 사용자 로그인 내역리스트 count*/
		SELECT COUNT(0) AS TOTCNT
		FROM (
				select ROWNUM RNUM,
					COUNT(*) OVER() TOTAL_CNT,
					ROW_NUMBER() OVER(ORDER BY his.conn_dttm desc) RN,
					TO_CHAR(TO_DATE(conn_dttm,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') conn_dttm,
					his.conn_ip,
					usr.usr_nm
				from sns_login_history his, sns_user usr
				where his.usr_id = usr.usr_id
				and (usr.sys_admin_yn != 'Y' or usr.sys_admin_yn is null)
				<![CDATA[
					and substr(his.conn_dttm,0,8) >= #{start_dttm}
					and substr(his.conn_dttm,0,8) <= #{end_dttm}
				]]>
				 <include refid="searchType"/>
				
			)
	</select>
	
	
   <select id="listUsrLogLink"  parameterMap="loginHisVO"  resultMap="loginHisVO">
        /* [i2c.biz.admin.loginHis.dao.LoginHisDAO.listUsrLogLink] 사용자 로그인 내역 리스트*/
		SELECT *
		FROM
		(SELECT
			A.*
			,ROWNUM RNUM
		FROM
		(
			select 
				COUNT(*) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY his.conn_dttm desc) RN,
				TO_CHAR(TO_DATE(conn_dttm,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') conn_dttm,
				his.conn_ip,
				usr.usr_nm
				, (SELECT AUTHOR_NM FROM COMTNAUTHORINFO CA WHERE CA.AUTHOR_CODE = USR.AUTH_CODE) AUTH_CODE_NM
			from sns_login_history his, sns_user usr
			where his.usr_id = usr.usr_id
			and (usr.sys_admin_yn != 'Y' or usr.sys_admin_yn is null)
			<![CDATA[
				and substr(his.conn_dttm,0,8) >= #{start_dttm}
				and substr(his.conn_dttm,0,8) <= #{end_dttm}
			]]>
			 <include refid="searchType"/>
		
		)A
		)
	 <![CDATA[
		 WHERE RNUM  > #{firstIndex}
	     AND   RNUM <= #{firstIndex} + #{recordCountPerPage}
		 ORDER BY RN 
	   ]]> 
	</select>
	
	<select id="selectDept"  parameterMap="loginHisVO"  resultType="java.lang.String">
	/* [i2c.biz.admin.loginHis.dao.LoginHisDAO.selectDept] 기관조회*/
		SELECT  ED.dept_id 
		FROM sns_common_code SC, ext_department ED
		WHERE SC.srt_ord = ED.srt_ord
		AND SC.cd = #{searchType}
		AND ED.base_dept_cd = '1'
	
	</select>
	
	<sql id="searchType">     
      	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(searchType)">
			AND USR.AUTH_CODE IN 
			<foreach collection="searchType" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
	    </if>	   
	</sql>

</mapper>