<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="UserLog">

	<typeAlias  alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
	<!-- 사용자로그 VO -->	
	<typeAlias  alias="userLog" type="egovframework.com.sym.log.ulg.service.UserLog"/>
	
	<!-- 사용자로그 맵 -->	
	<resultMap id="UserLogVO" class="egovframework.com.sym.log.ulg.service.UserLog">
		<result property="occrrncDe" column="OCCRRNC_DE"/>
		<result property="rqesterId" column="RQESTER_ID"/>
		<result property="rqsterNm" column="RQESTER_NM"/>			
		<result property="srvcNm" column="SVC_NM"/>		
		<result property="methodNm" column="METHOD_NM"/>				
		<result property="creatCo" column="CREAT_CO"/>	
		<result property="updtCo" column="UPDT_CO"/>	
		<result property="rdCnt" column="RDCNT"/>	
		<result property="deleteCo" column="DELETE_CO"/>	
		<result property="outptCo" column="OUTPT_CO"/>	
		<result property="errorCo" column="ERROR_CO"/>	
	</resultMap>	

	<!-- 사용자 로그 등록 -->
	<insert id="UserLogDAO.logInsertUserLog">
		<![CDATA[
			INSERT INTO COMTNUSERLOG 
			SELECT b.OCCRRNC_DE 
				 , b.RQESTER_ID
			     , b.SVC_NM
			     , b.METHOD_NM
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'C' THEN 1 ELSE 0 END) AS CREAT_CO
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'U' THEN 1 ELSE 0 END) AS UPDT_CO
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'R' THEN 1 ELSE 0 END) AS RDCNT
			     , SUM(CASE WHEN b.PROCESS_SE_CODE = 'D' THEN 1 ELSE 0 END) AS DELETE_CO
			     , 0 AS OUTPT_CO
			     , 0 AS ERROR_CO
			  FROM COMTNSYSLOG b
			 WHERE NOT EXISTS (SELECT c.OCCRRNC_DE 
			                     FROM COMTNUSERLOG c
			                    WHERE c.OCCRRNC_DE = CONVERT(VARCHAR(8), DATEADD(D, -1, GETDATE()), 112)
			                  )
			   AND b.OCCRRNC_DE = CONVERT(VARCHAR(8), DATEADD(D, -1, GETDATE()), 112)
			   AND b.RQESTER_ID IS NOT NULL
			 GROUP BY b.OCCRRNC_DE
				    , b.RQESTER_ID
				    , b.SVC_NM
				    , b.METHOD_NM
				  
		]]>
	</insert>
	
	<!-- 사용자 로그 상세 조회 : 미사용(COMVNUSERMASTER NOT EXISTS) -->
	<select id="UserLogDAO.selectUserLog" parameterClass="userLog" resultMap="UserLogVO">
		<![CDATA[	
			SELECT 
				  a.OCCRRNC_DE
				, a.RQESTER_ID
				, b.USER_NM AS RQESTER_NM
				, a.SVC_NM
				, a.METHOD_NM
				, a.CREAT_CO
				, a.UPDT_CO
				, a.RDCNT
				, a.DELETE_CO
				, a.OUTPT_CO
				, a.ERROR_CO
			FROM
				COMTNUSERLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			WHERE 
				a.OCCRRNC_DE = #occrrncDe#
			AND	a.RQESTER_ID = #rqesterId#
			AND	a.SVC_NM = #srvcNm#
			AND	a.METHOD_NM = #methodNm#
			]]>	
	</select>	
	
	<!-- 사용자 로그 목록 조회 : 미사용(COMVNUSERMASTER NOT EXISTS) -->
	<select id="UserLogDAO.selectUserLogInf" parameterClass="userLog" resultMap="UserLogVO">
		<![CDATA[	
			SELECT 
				  a.OCCRRNC_DE
				, a.RQESTER_ID
				, b.USER_NM AS RQESTER_NM
				, a.SVC_NM
				, a.METHOD_NM
				, a.CREAT_CO
				, a.UPDT_CO
				, a.RDCNT
				, a.DELETE_CO
				, a.OUTPT_CO
				, a.ERROR_CO
			FROM
				COMTNUSERLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			WHERE 
				1 = 1
			]]>	
			<isNotEmpty prepend="AND" property="searchWrd">
				<![CDATA[	b.USER_NM LIKE '%' + #searchWrd# + '%' ]]>
			</isNotEmpty>
			<isNotEmpty prepend="AND" property="searchBgnDe">
				<![CDATA[	a.OCCRRNC_DE BETWEEN #searchBgnDe# AND #searchEndDe# ]]>
			</isNotEmpty>		
				<![CDATA[ ORDER BY a.OCCRRNC_DE DESC ]]>
			/*LIMIT #recordCountPerPage# OFFSET #firstIndex#*/
	</select>	
	
	<!-- 사용자 로그 총건수 : 미사용(COMVNUSERMASTER NOT EXISTS) -->
	<select id="UserLogDAO.selectUserLogInfCnt"  parameterClass="userLog"  resultClass="java.lang.Integer">
		<![CDATA[ 
			SELECT COUNT(a.OCCRRNC_DE) as cnt
			FROM
				COMTNUSERLOG a
			LEFT OUTER JOIN COMVNUSERMASTER b
				ON a.RQESTER_ID = b.ESNTL_ID
			WHERE 
				1 = 1
			]]>	
			<isNotEmpty prepend="AND" property="searchWrd">
				<![CDATA[ 	b.USER_NM LIKE '%' + #searchWrd# + '%'  ]]>
			</isNotEmpty>
			<isNotEmpty prepend="AND" property="searchBgnDe">
				<![CDATA[ 	a.OCCRRNC_DE BETWEEN #searchBgnDe# AND #searchEndDe#  ]]>
			</isNotEmpty>			
	</select>	

</sqlMap>

