<?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="kr.co.i2talk.admin">
<!-- 1. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.admin.listAdminLinkStats"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminLinkStats */	
	SELECT
		*
	FROM
	(
		select
			COUNT(conn.CONN_DTTM) OVER() TOTAL_CNT,
			ROW_NUMBER() OVER(ORDER BY conn.CONN_DTTM DESC) RN,
			IFNULL(conn.p_conn,0) as p_conn, IFNULL(conn.m_conn,0) as m_conn, IFNULL(conn.total_conn,0) as total_conn, IFNULL(usr.usr_conn,0) as usr_conn, TO_CHAR(TO_DATE(conn.CONN_DTTM,'YYYYMMDD'),'YYYY-MM-DD') CONN_DTTM
		from 
			(
				select
					max(p_conn) as p_conn, max(m_conn) as m_conn,
					max(p_conn)+max(m_conn) as total_conn,
					conn_dttm
				from
				(
					select
						IFNULL(decode(client_tp_cd,'WEB',count(*)), 0) p_conn,
						IFNULL(decode(client_tp_cd,'AND',count(*)), 0) m_conn,
						conn_dttm
					from (
					select
						his.access_token, his.conn_dttm, client.client_tp_cd
					from
					(select
						his.access_token, SUBSTR(his.req_DTTM,0,8) conn_dttm, token.client_id
					from sns_request_history his, sns_access_token token
					WHERE his.access_token = token.access_token
					<![CDATA[
					and SUBSTR(his.req_DTTM,0,8) >=  #{start_dttm}
					AND SUBSTR(his.req_DTTM,0,8) <=  #{end_dttm}
					]]>
					group by SUBSTR(his.req_DTTM,0,8), his.access_token, token.client_id ) as his,
					sns_client as client
					where his.client_id = client.client_id
					) group by conn_dttm, client_tp_cd
				)
				group by conn_dttm
			) conn,			
			(
				select
					conn_dttm, count(*) as usr_conn
				from (
					select
						SUBSTR(his.req_DTTM,0,8) conn_dttm, token.usr_id
					from sns_request_history his, sns_access_token token
					where his.access_token = token.access_token
					<![CDATA[
					and SUBSTR(req_DTTM,0,8) >=  #{start_dttm}
					AND SUBSTR(req_DTTM,0,8) <=  #{end_dttm}
					]]>
					group by SUBSTR(his.req_DTTM,0,8), token.usr_id
				)group by conn_dttm
			) usr
		where conn.conn_dttm = usr.conn_dttm
	)
	WHERE
	RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminLinkStatsTotal"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminLinkStatsTotal */
		select
			SUM(conn.p_conn) t_p_conn, SUM(conn.m_conn) t_m_conn, SUM(conn.total_conn) t_total_conn, SUM(usr.usr_conn) t_usr_conn
		from (
			select
				max(p_conn) as p_conn, max(m_conn) as m_conn,
				max(p_conn)+max(m_conn) as total_conn,
				conn_dttm
			from
			(
				select
					IFNULL(decode(client_tp_cd,'WEB',count(*)), 0) p_conn,
					IFNULL(decode(client_tp_cd,'AND',count(*)), 0) m_conn,
					conn_dttm
				from (
				select
					his.access_token, his.conn_dttm, client.client_tp_cd
				from
				(select
					his.access_token, SUBSTR(his.req_DTTM,0,8) conn_dttm, token.client_id
				from sns_request_history his, sns_access_token token
				WHERE his.access_token = token.access_token
				<![CDATA[
				and SUBSTR(his.req_DTTM,0,8) >=  #{start_dttm}
				AND SUBSTR(his.req_DTTM,0,8) <=  #{end_dttm}
				]]>
				group by SUBSTR(his.req_DTTM,0,8), his.access_token, token.client_id ) as his,
				sns_client as client
				where his.client_id = client.client_id
				) group by conn_dttm, client_tp_cd
			)
			group by conn_dttm
		) conn, 
		(
			select
				conn_dttm, count(*) as usr_conn
			from (
				select
					SUBSTR(his.req_DTTM,0,8) conn_dttm, token.usr_id
				from sns_request_history his, sns_access_token token
				where his.access_token = token.access_token
				<![CDATA[
				and SUBSTR(req_DTTM,0,8) >=  #{start_dttm}
				AND SUBSTR(req_DTTM,0,8) <=  #{end_dttm}
				]]>
				group by SUBSTR(his.req_DTTM,0,8), token.usr_id
			)group by conn_dttm
		) usr		
		where conn.conn_dttm = usr.conn_dttm
	</select>

	<update id="kr.co.i2talk.admin.updateAdminUseStop"
		parameterType="Map">
		/* kr.co.i2talk.sns.updateAdminUseStop */
		UPDATE sns_group SET
			use_stop_yn = #{use_stop_yn}
		, mod_usr_id  = #{mod_usr_id}
		, mod_dttm    = #{mod_dttm}
		WHERE
			grp_id = #{grp_id}
	</update>

	<select id="kr.co.i2talk.admin.listAdminUseStats"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminUseStats */
	SELECT
		*
	FROM
	(
		SELECT COUNT(DTTM) OVER() TOTAL_CNT
			 , ROW_NUMBER() OVER(ORDER BY DTTM DESC) RN
			 <if test="period == 6">
			 , TO_CHAR(TO_DATE(DTTM,'YYYYMM'),'YYYY-MM') DTTM
			 </if>
			 <if test="period == 8">
			 , TO_CHAR(TO_DATE(DTTM,'YYYYMMDD'),'YYYY-MM-DD') DTTM
			 </if>
			 , MAX(FEED_CNT) AS FEED_CNT
			 , MAX(RECV_CNT) AS RECV_CNT
			 , MAX(TASK_CNT) AS TASK_CNT
			 , MAX(CONFERENCE_CNT) AS CONFERENCE_CNT
			 , MAX(MSFRTN_CNT) AS MSFRTN_CNT
		FROM (
		     /* 소통 커뮤니티 */
			SELECT SUBSTR(REG_DTTM,0,#{period}) AS DTTM, COUNT(CRT_USR_ID) AS FEED_CNT,
				   0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
			FROM SNS_POST
			WHERE TAR_OBJ_TP IN ('USER','GROUP')
			AND POST_TP IN ('FEED','POLL')
			<![CDATA[
			AND SUBSTR(REG_DTTM,0,#{period}) >= #{start_dttm}
			AND SUBSTR(REG_DTTM,0,#{period}) <= #{end_dttm}
			]]>
			GROUP BY SUBSTR(REG_DTTM,0,#{period})

			UNION
		    /* 소통 커뮤니티 -댓글 */
			SELECT
				SUBSTR(REG_DTTM,0,#{period}) AS DTTM, 0 AS FEED_CNT,
				COUNT(CRT_USR_ID) AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
			FROM SNS_POST
			WHERE UP_POST_ID IN (
				SELECT POST_ID FROM SNS_POST
				WHERE TAR_OBJ_TP IN ('USER','GROUP')
				AND POST_TP IN ('FEED','POLL')
			)
			<![CDATA[
			AND SUBSTR(REG_DTTM,0,#{period}) >= #{start_dttm}
			AND SUBSTR(REG_DTTM,0,#{period}) <= #{end_dttm}
			]]>
			GROUP BY SUBSTR(REG_DTTM,0,#{period})

			UNION

			/* 작업 */
			SELECT
				SUBSTR(START_DTTM,0,#{period}) AS DTTM, 0 AS FEED_CNT,
				0 AS RECV_CNT, COUNT(CRT_USR_ID) AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
			FROM SNS_TASK
			<![CDATA[
			WHERE SUBSTR(START_DTTM,0,#{period}) >= #{start_dttm}
			AND SUBSTR(START_DTTM,0,#{period}) <= #{end_dttm}
			]]>
			GROUP BY SUBSTR(START_DTTM,0,#{period})

			UNION
			/* 회의 */
			SELECT
				SUBSTR(CFRC_DT,0,#{period}) AS DTTM, 0 AS FEED_CNT,
				0 AS RECV_CNT, 0 AS TASK_CNT, COUNT(CRT_USR_ID) AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
			FROM SNS_CONFERENCE
			<![CDATA[
			WHERE SUBSTR(CFRC_DT,0,#{period}) >= #{start_dttm}
			AND SUBSTR(CFRC_DT,0,#{period}) <= #{end_dttm}
			]]>
			GROUP BY SUBSTR(CFRC_DT,0,#{period})
			
			UNION
			/* 재난상황등록 */
			SELECT
				 <if test="period == 6">			     
			        TO_CHAR(CRT_DTTM, 'YYYYMM') AS DTTM
			    </if>
			    <if test="period == 8">			     
			        TO_CHAR(CRT_DTTM, 'YYYYMMDD') AS DTTM
			    </if> 
			    , 0 AS FEED_CNT,
				0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, COUNT(CRT_USR_ID) AS MSFRTN_CNT
			FROM SITE_MSFRTN
			
			WHERE 
			 <if test="period == 6">
			   <![CDATA[
			      TO_CHAR(CRT_DTTM, 'YYYYMM') >= #{start_dttm}
		      AND TO_CHAR(CRT_DTTM, 'YYYYMM') <= #{end_dttm} 
		         ]]>
			 </if>
			 <if test="period == 8">
			  <![CDATA[
			      TO_CHAR(CRT_DTTM, 'YYYYMMDD') >= #{start_dttm}
		      AND TO_CHAR(CRT_DTTM, 'YYYYMMDD') <= #{end_dttm}
		       ]]>
			 </if>			
			 
			 <if test="period == 6">
			      GROUP BY TO_CHAR(CRT_DTTM, 'YYYYMM')
			 </if>
			 <if test="period == 8">
			      GROUP BY TO_CHAR(CRT_DTTM, 'YYYYMMDD')
			 </if>
			
		)
		GROUP BY DTTM
	)
	WHERE
	RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminUseStatsTotal"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminUseStatsTotal */
	SELECT  SUM(FEED_CNT) AS FEED_CNT
		  , SUM(RECV_CNT) AS RECV_CNT
		  , SUM(TASK_CNT) AS TASK_CNT
		  , SUM(CONFERENCE_CNT) AS CONFERENCE_CNT
		  , SUM(MSFRTN_CNT) AS MSFRTN_CNT
	FROM (
	    /* 소통 커뮤니티 */
		SELECT
			SUBSTR(REG_DTTM,0,#{period}) AS DTTM, COUNT(CRT_USR_ID) AS FEED_CNT,
			0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
		FROM SNS_POST
		WHERE TAR_OBJ_TP IN ('USER','GROUP')
		AND POST_TP IN ('FEED','POLL')
		<![CDATA[
		AND SUBSTR(REG_DTTM,0,#{period}) >= #{start_dttm}
		AND SUBSTR(REG_DTTM,0,#{period}) <= #{end_dttm}
		]]>
		GROUP BY SUBSTR(REG_DTTM,0,#{period})

		UNION
        /* 소통 커뮤니티 - 댓글 */
		SELECT
			SUBSTR(REG_DTTM,0,#{period}) AS DTTM, 0 AS FEED_CNT,
			COUNT(CRT_USR_ID) AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
		FROM SNS_POST
		WHERE UP_POST_ID IN (
			SELECT POST_ID FROM SNS_POST
			WHERE TAR_OBJ_TP IN ('USER','GROUP')
			AND POST_TP IN ('FEED','POLL')
		)
		<![CDATA[
		AND SUBSTR(REG_DTTM,0,#{period}) >= #{start_dttm}
		AND SUBSTR(REG_DTTM,0,#{period}) <= #{end_dttm}
		]]>
		GROUP BY SUBSTR(REG_DTTM,0,#{period})

		UNION
		/* 작업 */
		SELECT
			SUBSTR(START_DTTM,0,#{period}) AS DTTM, 0 AS FEED_CNT,
			0 AS RECV_CNT, COUNT(CRT_USR_ID) AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
		FROM SNS_TASK
		<![CDATA[
		WHERE SUBSTR(START_DTTM,0,#{period}) >= #{start_dttm}
		AND SUBSTR(START_DTTM,0,#{period}) <= #{end_dttm}
		]]>
		GROUP BY SUBSTR(START_DTTM,0,#{period})

		UNION

		/*회의 */
		SELECT
			SUBSTR(CFRC_DT,0,#{period}) AS DTTM, 0 AS FEED_CNT,
			0 AS RECV_CNT, 0 AS TASK_CNT, COUNT(CRT_USR_ID) AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
		FROM SNS_CONFERENCE
		<![CDATA[
		WHERE SUBSTR(CFRC_DT,0,#{period}) >= #{start_dttm}
		  AND SUBSTR(CFRC_DT,0,#{period}) <= #{end_dttm}
		]]>
		GROUP BY SUBSTR(CFRC_DT,0,#{period})
		
		UNION

		/* 재난 상황 등록 */
		SELECT
			    <if test="period == 6">			     
			        TO_CHAR(CRT_DTTM, 'YYYYMM') AS DTTM
			    </if>
			    <if test="period == 8">			     
			        TO_CHAR(CRT_DTTM, 'YYYYMMDD') AS DTTM
			    </if> 
			    , 0 AS FEED_CNT,
			0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, COUNT(CRT_USR_ID) AS MSFRTN_CNT
		FROM SITE_MSFRTN
		WHERE 
		      <if test="period == 6">
			     <![CDATA[
			      TO_CHAR(CRT_DTTM, 'YYYYMM') >= #{start_dttm}
		      AND TO_CHAR(CRT_DTTM, 'YYYYMM') <= #{end_dttm}
		         ]]>
			 </if>
			 <if test="period == 8">
			 <![CDATA[
			      TO_CHAR(CRT_DTTM, 'YYYYMMDD') >= #{start_dttm}
		      AND TO_CHAR(CRT_DTTM, 'YYYYMMDD') <= #{end_dttm}
		       ]]>
			 </if>	
		
		 <if test="period == 6">
		      GROUP BY TO_CHAR(CRT_DTTM, 'YYYYMM')
		 </if>
		 <if test="period == 8">
		      GROUP BY TO_CHAR(CRT_DTTM, 'YYYYMMDD')
		 </if>
	)

	</select>
	<select id="kr.co.i2talk.admin.listAdminUseUserStats"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminUseUserStats */
		SELECT
			*
		FROM
		(
			SELECT COUNT(USR_NM) OVER() TOTAL_CNT
				 , ROW_NUMBER() OVER(ORDER BY USR_NM ASC) RN
				 , USR_ID, USR_NM
				 , MAX(FEED_CNT) AS FEED_CNT
				 , MAX(RECV_CNT) AS RECV_CNT
				 , MAX(TASK_CNT) AS TASK_CNT
				 , MAX(CONFERENCE_CNT) AS CONFERENCE_CNT
				 , MAX(MSFRTN_CNT) AS MSFRTN_CNT
			FROM(
				SELECT
					USR.USR_ID, USR.USR_NM, COUNT(POST.CRT_USR_ID) AS FEED_CNT,
					0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT,0 AS MSFRTN_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.TAR_OBJ_TP IN ('USER','GROUP')
				AND POST.POST_TP IN ('FEED','POLL')
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION

				SELECT
					USR.USR_ID, USR.USR_NM, 0 AS FEED_CNT,
					COUNT(POST.CRT_USR_ID) AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT,0 AS MSFRTN_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.UP_POST_ID IN (
					SELECT POST_ID FROM SNS_POST
					WHERE TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
				)
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION

				SELECT
					USR.USR_ID, USR.USR_NM ,0 AS FEED_CNT,
					0 AS RECV_CNT, COUNT(TASK.CRT_USR_ID) AS TASK_CNT, 0 AS CONFERENCE_CNT,0 AS MSFRTN_CNT
				FROM SNS_TASK TASK, SNS_USER USR
				WHERE TASK.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(TASK.START_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(TASK.START_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION

				SELECT
					USR.USR_ID, USR.USR_NM, 0 AS FEED_CNT,
					0 AS RECV_CNT, 0 AS TASK_CNT, COUNT(CON.CRT_USR_ID) AS CONFERENCE_CNT,0 AS MSFRTN_CNT
				FROM SNS_CONFERENCE CON, SNS_USER USR
				WHERE CON.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(CON.CFRC_DT,0,8) >= #{start_dttm}
				AND SUBSTR(CON.CFRC_DT,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM
				
				UNION
				/* 재난 상황 등록 */ 
				SELECT USR.USR_ID, USR.USR_NM, 0 AS FEED_CNT,
					   0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, COUNT(MSFRTN.CRT_USR_ID) AS MSFRTN_CNT
				FROM SITE_MSFRTN MSFRTN, SNS_USER USR
				WHERE MSFRTN.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND TO_CHAR(MSFRTN.CRT_DTTM, 'YYYYMMDD') >= #{start_dttm}
				AND TO_CHAR(MSFRTN.CRT_DTTM, 'YYYYMMDD') <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM
			)
			GROUP BY USR_ID, USR_NM
			)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminUseUserStatsTotal"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminUseUserStatsTotal */
		  
		  SELECT   SUM(FEED_CNT) AS FEED_CNT
				 , SUM(RECV_CNT) AS RECV_CNT
				 , SUM(TASK_CNT) AS TASK_CNT
				 , SUM(CONFERENCE_CNT) AS CONFERENCE_CNT
				 , SUM(MSFRTN_CNT) AS MSFRTN_CNT
			FROM(
			   /* 소통 커뮤니티 */
				SELECT USR.USR_ID, USR.USR_NM, COUNT(POST.CRT_USR_ID) AS FEED_CNT,
					0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.TAR_OBJ_TP IN ('USER','GROUP')
				AND POST.POST_TP IN ('FEED','POLL')
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION
				/* 소통커뮤니티 - 댓글 */
				SELECT
					USR.USR_ID, USR.USR_NM, 0 AS FEED_CNT,
					COUNT(POST.CRT_USR_ID) AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
				FROM SNS_POST POST, SNS_USER USR
				WHERE POST.CRT_USR_ID = USR.USR_ID
				AND POST.UP_POST_ID IN (
					SELECT POST_ID FROM SNS_POST
					WHERE TAR_OBJ_TP IN ('USER','GROUP')
					AND POST_TP IN ('FEED','POLL')
				)
				<![CDATA[
				AND SUBSTR(POST.REG_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(POST.REG_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION
				/* 작업 */
				SELECT
					USR.USR_ID, USR.USR_NM ,0 AS FEED_CNT,
					0 AS RECV_CNT, COUNT(TASK.CRT_USR_ID) AS TASK_CNT, 0 AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
				FROM SNS_TASK TASK, SNS_USER USR
				WHERE TASK.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(TASK.START_DTTM,0,8) >= #{start_dttm}
				AND SUBSTR(TASK.START_DTTM,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM

				UNION
				/* 회의 */
				SELECT
					USR.USR_ID, USR.USR_NM, 0 AS FEED_CNT,
					0 AS RECV_CNT, 0 AS TASK_CNT, COUNT(CON.CRT_USR_ID) AS CONFERENCE_CNT, 0 AS MSFRTN_CNT
				FROM SNS_CONFERENCE CON, SNS_USER USR
				WHERE CON.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND SUBSTR(CON.CFRC_DT,0,8) >= #{start_dttm}
				AND SUBSTR(CON.CFRC_DT,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM
				
				UNION
				
				/* 재난상황등록 */
				SELECT USR.USR_ID, USR.USR_NM ,0 AS FEED_CNT,
					0 AS RECV_CNT, 0 AS TASK_CNT, 0 AS CONFERENCE_CNT, COUNT(MSFRTN_ID) AS MSFRTN_CNT
				FROM SITE_MSFRTN MAFRTN, SNS_USER USR
				WHERE MAFRTN.CRT_USR_ID = USR.USR_ID
				<![CDATA[
				AND TO_CHAR(MAFRTN.CRT_DTTM, 'YYYYMMDD') >= #{start_dttm}
				AND TO_CHAR(MAFRTN.CRT_DTTM, 'YYYYMMDD') <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_nm)">
				AND USR.USR_NM = #{usr_nm}
				</if>
				GROUP BY USR.USR_ID, USR.USR_NM
			)
	</select>

	<update id="kr.co.i2talk.admin.updateAdminInfo"
		parameterType="Map">
		/* kr.co.i2talk.sns.updateAdminInfo */
		UPDATE SDB_SNS_USER SET
			usr_nm  = #{usr_nm}
		, email   = DBSEC.SDB_CRYPTO.ENCRYPT(#{email}, 'JULIET','SNS_USER','email','UPDATE')
		, phn_num = DBSEC.SDB_CRYPTO.ENCRYPT(#{phn_num}, 'JULIET','SNS_USER','phn_num','UPDATE')
		, mod_usr_id  = #{mod_usr_id}
		, mod_dttm    = #{mod_dttm}
		WHERE
			usr_id = #{usr_id}
	</update>

	<select id="kr.co.i2talk.admin.listAdminUseGroupStats"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminUseGroupStats */
		SELECT
			*
		FROM
		(
			select
				COUNT(grp_id) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY max(feed_cnt)+max(recv_cnt)+max(join_cnt)+max(file_cnt) DESC) RN,
				grp_id, fn_get_grp_nm(grp_id) grp_nm,
				max(feed_cnt) as feed_cnt,
				max(recv_cnt) as recv_cnt,
				max(join_cnt) as join_cnt,
				max(file_cnt) as file_cnt
			from (
				select
					count(*) as feed_cnt,
					0 as recv_cnt,
					0 as join_cnt,
					0 as file_cnt,
					tar_grp_id as grp_id
				from sns_post post
				where post.tar_obj_tp = 'GROUP'
				and tar_grp_id is not null
				and post.post_tp IN ('FEED','POLL')
				<![CDATA[
				and substr(post.reg_dttm,0,8) >= #{start_dttm}
				and substr(post.reg_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
				</if>
				group by tar_grp_id

				union

				select
					0 as feed_cnt,
					count(*) as recv_cnt,
					0 as join_cnt,
					0 as file_cnt,
					tar_grp_id as grp_id
				from sns_post post
				where post.up_post_id IN (
					select post_id from sns_post
					where tar_obj_tp = 'GROUP'
					and post_tp IN ('FEED','POLL'))
				and tar_grp_id is not null
				<![CDATA[
				and substr(post.reg_dttm,0,8) >= #{start_dttm}
				and substr(post.reg_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
				</if>
				group by tar_grp_id

				union

				select
					0 as feed_cnt,
					0 as recv_cnt,
					count(*) as join_cnt,
					0 as file_cnt,
					grp.grp_id as grp_id
				from sns_group grp, sns_users_by_group by_grp
				where grp.grp_id = by_grp.grp_id
				and by_grp.leave_dttm is null
				<![CDATA[
				and substr(by_grp.join_dttm,0,8) >= #{start_dttm}
				and substr(by_grp.join_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(grp.grp_id) = #{grp_nm}
				</if>
				group by grp.grp_id

				union

				select
					0 as feed_cnt,
					0 as recv_cnt,
					0 as join_cnt,
					count(*) as file_cnt,
					post.tar_grp_id as grp_id
				from sns_attach att, sns_post post
				where att.post_id = post.post_id
				and post.tar_obj_tp = 'GROUP'
				and post.post_tp in ('FEED','POLL')
				and post.tar_grp_id is not null
				<![CDATA[
				and substr(att.crt_dttm,0,8) >= #{start_dttm}
				and substr(att.crt_dttm,0,8) <= #{end_dttm}
				]]>
				<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
				</if>
				group by post.tar_grp_id
			) group by grp_id
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminUseGroupStatsTotal"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminUseGroupStatsTotal */
		select
			sum(feed_cnt) as t_feed_cnt,
			sum(recv_cnt) as t_recv_cnt,
			sum(join_cnt) as t_join_cnt,
			sum(file_cnt) as t_file_cnt
		from (
			select
				count(*) as feed_cnt,
				0 as recv_cnt,
				0 as join_cnt,
				0 as file_cnt,
				tar_grp_id as grp_id
			from sns_post post
			where post.tar_obj_tp = 'GROUP'
			and tar_grp_id is not null
			and post.post_tp IN ('FEED','POLL')
			<![CDATA[
			and substr(post.reg_dttm,0,8) >= #{start_dttm}
			and substr(post.reg_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
			</if>
			group by tar_grp_id

			union

			select
				0 as feed_cnt,
				count(*) as recv_cnt,
				0 as join_cnt,
				0 as file_cnt,
				tar_grp_id as grp_id
			from sns_post post
			where post.up_post_id IN (
				select post_id from sns_post
				where tar_obj_tp = 'GROUP'
				and post_tp IN ('FEED','POLL'))
			and tar_grp_id is not null
			<![CDATA[
			and substr(post.reg_dttm,0,8) >= #{start_dttm}
			and substr(post.reg_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
			</if>
			group by tar_grp_id

			union

			select
				0 as feed_cnt,
				0 as recv_cnt,
				count(*) as join_cnt,
				0 as file_cnt,
				grp.grp_id as grp_id
			from sns_group grp, sns_users_by_group by_grp
			where grp.grp_id = by_grp.grp_id
			and by_grp.leave_dttm is null
			<![CDATA[
			and substr(by_grp.join_dttm,0,8) >= #{start_dttm}
			and substr(by_grp.join_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(grp.grp_id) = #{grp_nm}
			</if>
			group by grp.grp_id

			union

			select
				0 as feed_cnt,
				0 as recv_cnt,
				0 as join_cnt,
				count(*) as file_cnt,
				post.tar_grp_id as grp_id
			from sns_attach att, sns_post post
			where att.post_id = post.post_id
			and post.tar_obj_tp = 'GROUP'
			and post.post_tp in ('FEED','POLL')
			and post.tar_grp_id is not null
			<![CDATA[
			and substr(att.crt_dttm,0,8) >= #{start_dttm}
			and substr(att.crt_dttm,0,8) <= #{end_dttm}
			]]>
			<if test="@i2c.cmm.util.StringUtil@isNotEmpty(grp_nm)">
				and fn_get_grp_nm(post.tar_grp_id) = #{grp_nm}
			</if>
			group by post.tar_grp_id
		)

	</select>

	<select id="kr.co.i2talk.admin.listAdminLink"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminLink */
		SELECT
			*
		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
			from sns_login_history his, sns_user usr
			where his.usr_id = usr.usr_id
			<if test="type == 'user'">
				and (usr.sys_admin_yn != 'Y' or usr.sys_admin_yn is null)
			</if>
			<if test="type == 'admin'">
				and usr.sys_admin_yn = 'Y'
			</if>
			<if test="flag == 'home'">
				<![CDATA[
					and substr(conn_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
			</if>
			<if test="flag != 'home'">
				<![CDATA[
					and substr(his.conn_dttm,0,8) >= #{start_dttm}
					and substr(his.conn_dttm,0,8) <= #{end_dttm}
				]]>
			</if>

		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminConnLink"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminConnLink */
		SELECT
			*
		FROM
		(
			SELECT
				COUNT(conn_dttm) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY conn_dttm desc) RN,
				<if test="term == 6">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymm'),'yyyy-mm') conn_dttm,
				</if>
				<if test="term == 8">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymmdd'),'yyyy-mm-dd DY') conn_dttm,
				</if>
				COUNT(CONN_DTTM) conn_cnt
			FROM (
				SELECT
					SUBSTR(REQ_DTTM,0,#{term}) CONN_DTTM, ACCESS_TOKEN
				FROM SNS_REQUEST_HISTORY
				where 1=1
				<![CDATA[
					and substr(REQ_DTTM,0,#{term}) <= to_char(sysdate+1,'yyyymmdd')
					GROUP BY SUBSTR(REQ_DTTM,0,#{term}), ACCESS_TOKEN
				]]>
			)
			GROUP BY CONN_DTTM
			ORDER BY CONN_DTTM DESC
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listAdminConnTotalLink"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminConnTotalLink */
		SELECT
			IFNULL(SUM(conn_cnt),0) TOTAL_CNT
		FROM
		(
			SELECT
				COUNT(conn_dttm) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY conn_dttm desc) RN,
				<if test="term == 6">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymm'),'yyyy-mm') conn_dttm,
				</if>
				<if test="term == 8">
				to_char(TO_DATE(substr(conn_dttm,0,#{term}),'yyyymmdd'),'yyyy-mm-dd DY') conn_dttm,
				</if>
				COUNT(CONN_DTTM) conn_cnt
			FROM (
				SELECT
					SUBSTR(REQ_DTTM,0,#{term}) CONN_DTTM, ACCESS_TOKEN
				FROM SNS_REQUEST_HISTORY
				where 1=1
				<![CDATA[
					and substr(REQ_DTTM,0,#{term}) <= to_char(sysdate+1,'yyyymmdd')
					GROUP BY SUBSTR(REQ_DTTM,0,#{term}), ACCESS_TOKEN
				]]>
			)
			GROUP BY CONN_DTTM
			ORDER BY CONN_DTTM DESC
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listUserRank"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listUserRank */
		SELECT
			*
		FROM
		(
			select
				COUNT(usr_id) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY rank_cnt desc) RN,
				fn_get_usr_nm(usr_id) as usr_nm, rank_cnt
			from (
				select
					usr_id, count(*) as rank_cnt
				from sns_user usr, sns_post post
				where usr.usr_id = post.tar_usr_id
				<![CDATA[
					and substr(post.crt_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
				group by usr_id
			)
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<select id="kr.co.i2talk.admin.listUserTotalRank"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listUserTotalRank */
		SELECT
			SUM(rank_cnt) TOTAL_CNT
		FROM
		(
			select
				ROW_NUMBER() OVER(ORDER BY rank_cnt desc) RN,
				fn_get_usr_nm(usr_id) as usr_nm, rank_cnt
			from (
				select
					usr_id, count(*) as rank_cnt
				from sns_user usr, sns_post post
				where usr.usr_id = post.tar_usr_id
				<![CDATA[
					and substr(post.crt_dttm,0,8) <= to_char(sysdate+1,'yyyymmdd')
				]]>
				group by usr_id
			)
		)
		WHERE
		RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

	<update id="kr.co.i2talk.admin.initAdminPassword"
		parameterType="Map">
/* kr.co.i2talk.login.initAdminPassword */
UPDATE sns_user SET
	passwd_mod_dttm = #{passwd_mod_dttm},
	temp_passwd_yn  = 'Y',
	login_passwd = #{login_passwd},
	prev_passwd     = #{prev_passwd}

WHERE
	usr_id = #{usr_id}
	</update>

		<insert id="kr.co.i2talk.admin.insertAdminKPI"
		parameterType="Map">
/* kr.co.i2talk.admin.insertAdminKPI */
INSERT INTO tb_mp_kpi (
	kpi_id, bas_dt, score_cols1, score_cols2, score_cols3,
	score_cols4, score_cols5, score_cols6, score_cols7, score_cols8,
	score_cols9, score_cols10, score_cols11, score_cols12,
	score_cols13, score_cols14, score_cols15, score_cols16, score_cols17, score_cols18,
	score_cols19, score_cols20, score_cols21, score_cols22, score_cols23,
	score_cols24, score_cols25, score_detail_cols1, score_detail_cols2, score_detail_cols3,
	score_detail_cols4, score_detail_cols5, score_detail_cols6, score_detail_cols7,
	goal_detail_cols1, goal_detail_cols2,goal_detail_cols3,goal_detail_cols4,goal_detail_cols5,
	goal_detail_cols6,goal_detail_cols7,result_detail_cols1, result_detail_cols2, result_detail_cols3,
	result_detail_cols4, result_detail_cols5, result_detail_cols6, result_detail_cols7)
VALUES (
	#{kpi_id}, #{bas_dt}, #{score_cols1}, #{score_cols2}, #{score_cols3}, #{score_cols4},
	#{score_cols5}, #{score_cols6}, #{score_cols7}, #{score_cols8}, #{score_cols9},
	#{score_cols10}, #{score_cols11}, #{score_cols12}, #{score_cols13},
	#{score_cols14}, #{score_cols15}, #{score_cols16}, #{score_cols17}, #{score_cols18}, #{score_cols19},
	#{score_cols20}, #{score_cols21}, #{score_cols22}, #{score_cols23}, #{score_cols24},
	#{score_cols25}, #{score_detail_cols1}, #{score_detail_cols2}, #{score_detail_cols3}, #{score_detail_cols4},
	#{score_detail_cols5}, #{score_detail_cols6},#{score_detail_cols7},#{goal_detail_cols1},#{goal_detail_cols2},
	#{goal_detail_cols3},#{goal_detail_cols4},#{goal_detail_cols5},#{goal_detail_cols6},#{goal_detail_cols7},
	#{result_detail_cols1},#{result_detail_cols2},#{result_detail_cols3},#{result_detail_cols4},#{result_detail_cols5},
	#{result_detail_cols6},#{result_detail_cols7})
	</insert>

			<update id="kr.co.i2talk.admin.updateAdminKPI"
		parameterType="Map">
/* kr.co.i2talk.admin.updateAdminKPI */

UPDATE tb_mp_kpi SET
			kpi_id = #{kpi_id}
		, score_cols1         = #{score_cols1}
		, score_cols2         = #{score_cols2}
		, score_cols3         = #{score_cols3}
		, score_cols4         = #{score_cols4}
		, score_cols5         = #{score_cols5}
		, score_cols6         = #{score_cols6}
		, score_cols7         = #{score_cols7}
		, score_cols8         = #{score_cols8}
		, score_cols9         = #{score_cols9}
		, score_cols10        = #{score_cols10}
		, score_cols11        = #{score_cols11}
		, score_cols12        = #{score_cols12}
		, score_cols13        = #{score_cols13}
		, score_cols14        = #{score_cols14}
		, score_cols15        = #{score_cols15}
		, score_cols16        = #{score_cols16}
		, score_cols17        = #{score_cols17}
		, score_cols18        = #{score_cols18}
		, score_cols19        = #{score_cols19}
		, score_cols20        = #{score_cols20}
		, score_cols21        = #{score_cols21}
		, score_cols22        = #{score_cols22}
		, score_cols23        = #{score_cols23}
		, score_cols24        = #{score_cols24}
		, score_cols25        = #{score_cols25}
		, score_detail_cols1  = #{score_detail_cols1}
		, score_detail_cols2  = #{score_detail_cols2}
		, score_detail_cols3  = #{score_detail_cols3}
		, score_detail_cols4  = #{score_detail_cols4}
		, score_detail_cols5  = #{score_detail_cols5}
		, score_detail_cols6  = #{score_detail_cols6}
		, score_detail_cols7  = #{score_detail_cols7}
		, goal_detail_cols1   = #{goal_detail_cols1}
		, goal_detail_cols2   = #{goal_detail_cols2}
		, goal_detail_cols3   = #{goal_detail_cols3}
		, goal_detail_cols4   = #{goal_detail_cols4}
		, goal_detail_cols5   = #{goal_detail_cols5}
		, goal_detail_cols6   = #{goal_detail_cols6}
		, goal_detail_cols7   = #{goal_detail_cols7}
		, result_detail_cols1 = #{result_detail_cols1}
		, result_detail_cols2 = #{result_detail_cols2}
		, result_detail_cols3 = #{result_detail_cols3}
		, result_detail_cols4 = #{result_detail_cols4}
		, result_detail_cols5 = #{result_detail_cols5}
		, result_detail_cols6 = #{result_detail_cols6}
		, result_detail_cols7 = #{result_detail_cols7}
		WHERE
			kpi_id = #{kpi_id}

	</update>

		<select id="kr.co.i2talk.admin.adminKPIView"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.adminKPIView */
	select
				kpi_id, bas_dt,
				score_cols1, score_cols2, score_cols3,
				score_cols4, score_cols5, score_cols5,
				score_cols6, score_cols7, score_cols8,
				score_cols6, score_cols7, score_cols8,
				score_cols9, score_cols10, score_cols11,
				score_cols12, score_cols13, score_cols14,
				score_cols15, score_cols16, score_cols17,
				score_cols18, score_cols19, score_cols20,
				score_cols21, score_cols22, score_cols23,
				score_cols24, score_cols25, score_detail_cols1,
				score_detail_cols2, score_detail_cols3, score_detail_cols4,
				score_detail_cols5, score_detail_cols6, score_detail_cols7,
				goal_detail_cols1, goal_detail_cols2, goal_detail_cols3,
				goal_detail_cols4, goal_detail_cols5, goal_detail_cols6,
				goal_detail_cols7, result_detail_cols1, result_detail_cols1,
				result_detail_cols2,result_detail_cols3, result_detail_cols4,
				result_detail_cols5, result_detail_cols6, result_detail_cols7
			from tb_mp_kpi
		where SUBSTR(bas_dt,0,6) = #{bas_dt}
	</select>

	<select id="kr.co.i2talk.admin.listAdminAppVersion"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminAppVersion */
		select
			  app_type
			, version
			, file_nm
			, descrip
			, crt_dttm
			, crt_usr_id
			, mod_dttm
			, mod_usr_id
		from sns_mobile_mng
	</select>	
	
	<select id="kr.co.i2talk.admin.listAdminWorkIndex"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminWorkIndex */
		select
			ROW_NUMBER() OVER(ORDER BY mod_dttm desc) rn,
			index_id, crt_usr_id, fn_get_usr_nm(crt_usr_id) crt_usr_nm, ttl, comm_idx ,task_idx_01 ,task_idx_02 ,task_idx_03,
			crt_idx_01 ,crt_idx_02 ,crt_idx_03 ,emt_idx_01 ,emt_idx_02 ,emt_idx_03,
			obs_idx ,use_yn ,crt_dttm ,mod_dttm ,mot_idx_01 ,mot_idx_02 ,abl_idx_01 ,abl_idx_02,
			task_idx_evg, crt_idx_evg, emt_idx_evg
		from sns_work_index
		where use_yn = 'Y'
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(index_id)">
			and index_id = #{index_id}
		</if>
		order by crt_dttm desc
	</select>
	
	<insert id="kr.co.i2talk.admin.insertAdminWorkIndex"
		parameterType="Map">
/* kr.co.i2talk.admin.insertAdminWorkIndex */
INSERT INTO sns_work_index
	(
	index_id, crt_usr_id, ttl, comm_idx ,task_idx_01 ,task_idx_02 ,task_idx_03
	,crt_idx_01 ,crt_idx_02 ,crt_idx_03 ,emt_idx_01 ,emt_idx_02 ,emt_idx_03
	,obs_idx ,use_yn ,crt_dttm ,mod_dttm ,mot_idx_01 ,mot_idx_02 ,abl_idx_01 ,abl_idx_02
	,task_idx_evg, crt_idx_evg, emt_idx_evg
	)
VALUES 
	(
	#{index_id}, #{crt_usr_id}, #{ttl}, #{comm_idx}, #{task_idx_01}, #{task_idx_02}, #{task_idx_03}, 
	#{crt_idx_01}, #{crt_idx_02}, #{crt_idx_03}, #{emt_idx_01}, #{emt_idx_02}, #{emt_idx_03}, 
	#{obs_idx}, #{use_yn}, #{crt_dttm}, #{mod_dttm}, #{mot_idx_01}, #{mot_idx_02}, #{mot_idx_02}, #{mot_idx_02},
	#{task_idx_evg}, #{crt_idx_evg}, #{crt_idx_evg}
	)
	</insert>
	
	<update id="kr.co.i2talk.admin.updateAdminWorkIndex"
		parameterType="Map">
/* kr.co.i2talk.login.updateAdminWorkIndex */
UPDATE 
	sns_work_index 
SET
	ttl 		= #{ttl}, 
	comm_idx 	= #{comm_idx},
	task_idx_01 = #{task_idx_01},
	task_idx_02 = #{task_idx_02},
	task_idx_03 = #{task_idx_03},
	crt_idx_01 	= #{crt_idx_01},
	crt_idx_02 	= #{crt_idx_02},
	crt_idx_03 	= #{crt_idx_03},
	emt_idx_01 	= #{emt_idx_01},
	emt_idx_02 	= #{emt_idx_02},
	emt_idx_03 	= #{emt_idx_03},
	obs_idx 	= #{obs_idx},		
	mot_idx_01 	= #{mot_idx_01},
	mot_idx_02 	= #{mot_idx_02},
	abl_idx_01 	= #{abl_idx_01},
	abl_idx_02 	= #{abl_idx_02},
	task_idx_evg= #{task_idx_evg}, 
	crt_idx_evg = #{crt_idx_evg}, 
	emt_idx_evg = #{emt_idx_evg},
	mod_dttm 	= #{mod_dttm}

WHERE
	index_id = #{index_id}
	</update>
	
	<update id="kr.co.i2talk.admin.deleteAdminWorkIndex"
		parameterType="Map">
/* kr.co.i2talk.login.deleteAdminWorkIndex */
UPDATE 
	sns_work_index 
SET
	use_yn 	= #{use_yn}
WHERE
	index_id = #{index_id}
	</update>
	
<!-- 2. 추가  쿼리 메소드 작성 끝 -->

	<insert id="kr.co.i2talk.admin.insertAdminUser"
		parameterType="Map">
/* kr.co.i2talk.admin.insertAdminUser */
INSERT INTO SDB_SNS_USER
	(
	usr_id, usr_nm, email, login_id, login_passwd, 
	self_intro, photo_img, use_stop_yn, use_stop_dttm, photo_img_mid, 
	photo_img_min, sys_admin_yn, outs_usr_yn, pos_cd, tel_num, 
	phn_num, fax_num, birth_dt, cover_img, ext_user_id, mng_usr_id, 
	crt_usr_id, crt_dttm, mod_usr_id, mod_dttm, dept_id, 
	dept_nm, pos_nm, mng_usr_nm, mng_usr_pos_nm, passwd_mod_dttm, 
	prev_passwd, temp_passwd_yn, auth_code, role_ctprvn, role_city
	)
VALUES 
	(
	#{usr_id}, #{usr_nm}, 
	DBSEC.SDB_CRYPTO.ENCRYPT(#{email}, 'JULIET','SNS_USER','email','INSERT'), 
	#{login_id}, #{login_passwd}, 
	#{self_intro}, #{photo_img}, #{use_stop_yn}, #{use_stop_dttm}, #{photo_img_mid}, 
	#{photo_img_min}, #{sys_admin_yn}, #{outs_usr_yn}, #{pos_cd}, 
	DBSEC.SDB_CRYPTO.ENCRYPT(#{tel_num}, 'JULIET','SNS_USER','tel_num','INSERT'),
	DBSEC.SDB_CRYPTO.ENCRYPT(#{phn_num}, 'JULIET','SNS_USER','phn_num','INSERT'), 
	#{fax_num}, #{birth_dt}, #{cover_img}, #{ext_user_id}, #{mng_usr_id}, 
	#{crt_usr_id}, #{crt_dttm}, #{mod_usr_id}, #{mod_dttm}, #{dept_id}, 
	#{dept_nm}, #{pos_nm}, #{mng_usr_nm}, #{mng_usr_pos_nm}, #{passwd_mod_dttm}, 
	#{prev_passwd}, #{temp_passwd_yn}, #{auth_code}, #{role_ctprvn}, #{role_city}
	)
	</insert>

	<update id="kr.co.i2talk.admin.updateAdminUser"
		parameterType="Map">
/* kr.co.i2talk.admin.updateAdminUser */
UPDATE SDB_SNS_USER SET
	email = DBSEC.SDB_CRYPTO.ENCRYPT(#{email}, 'JULIET','SNS_USER','email','UPDATE'),
	use_stop_yn = #{use_stop_yn},
	use_stop_dttm = #{use_stop_dttm},
	sys_admin_yn = #{sys_admin_yn},
	pos_cd = #{pos_cd},
	pos_nm = #{pos_nm},
	dept_id = #{dept_id},
	dept_nm = #{dept_nm},
	mng_usr_id = #{mng_usr_id},
	mng_usr_nm = #{mng_usr_nm},
	mng_usr_pos_nm = #{mng_usr_pos_nm},
	tel_num = DBSEC.SDB_CRYPTO.ENCRYPT(#{tel_num}, 'JULIET','SNS_USER','tel_num','UPDATE'),
	phn_num = DBSEC.SDB_CRYPTO.ENCRYPT(#{phn_num}, 'JULIET','SNS_USER','phn_num','UPDATE'),
	fax_num = #{fax_num},
	birth_dt = #{birth_dt},
	auth_code = #{auth_code}, 
	role_ctprvn = #{role_ctprvn}, 
	role_city = #{role_city},
	role_gu = #{role_gu},
	mod_usr_id = #{mod_usr_id},
	mod_dttm = #{mod_dttm}
WHERE
	usr_id = #{usr_id}
	</update>
	
	<select id="kr.co.i2talk.admin.listDepartment"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.admin.listDepartment */
SELECT
	dept_id,
	dept_cd,
	dept_nm,
	dept_descrip,
	up_dept_cd,
	srt_ord,
	use_yn,
	crt_usr_id,
	crt_dttm,
	mod_usr_id,
	mod_dttm
FROM
	EXT_DEPARTMENT
WHERE 1=1
<if test="@i2c.cmm.util.StringUtil@isNotEmpty(dept_nm)">
	and dept_nm like '%' || #{dept_nm} || '%'
</if>
	</select>
	
	
	<select id="kr.co.i2talk.admin.listAdminMenu"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminMenu */
		<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id)">
			select 
				menu_id,
				menu_nm,
				menu_cd,			
				menu_url,
				depth1, 
				depth2,
				depth3
			from
				sns_admin_menu 
			where 1=1			
			and use_yn = 'Y'					
			order by depth1, depth2, depth3 desc
		</if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_id)">
			select 
				a.menu_id,
				a.menu_nm,				
				a.menu_url,
				a.depth1, 
				a.depth2,
				a.depth3,
				b.role_id,
				b.usr_id,
				fn_get_usr_nm(b.usr_id) usr_nm
			from
				sns_admin_menu a,
				sns_admin_role b
			where 1=1			
			and a.use_yn = 'Y'	
			and a.menu_id = b.menu_id
			and b.usr_id = #{usr_id}	
			order by a.depth1, a.depth2, a.depth3 desc		
		</if>
			
				
	</select>
	
	<select id="kr.co.i2talk.admin.listAdminMenuMsfrtn"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listAdminMenuMsfrtn */
		select 
			menu_id,
			menu_nm,						
			menu_url,
			depth1, 
			depth2,
			depth3
		from
			sns_admin_menu 
		where 1=1			
		and use_yn = 'Y'
			
		order by depth1, depth2, depth3 desc				
	</select>
	
	<select id="kr.co.i2talk.admin.viewAdminMenu"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.viewAdminMenu */
		select 
			a.menu_id,
			a.menu_nm,
			a.menu_cd,			
			a.menu_url,
			a.depth1, 
			a.depth2,
			a.depth3,
			b.role_id,
			b.usr_id,
			fn_get_usr_nm(b.usr_id) usr_nm
		from
			sns_admin_menu a,
			sns_admin_role b
		where 1=1			
		and a.use_yn = 'Y'			
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(usr_id)">
		and b.usr_id = #{usr_id}	
		</if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(search_word)">
		and usr_nm like '%' || #{search_word} || '%'
		</if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(gubun)">
		and a.menu_id = b.menu_id
		order by usr_nm, a.depth1, a.depth2, a.depth3 desc
		</if>
		<if test="@i2c.cmm.util.StringUtil@isEmpty(gubun)">
		and a.menu_id = b.menu_id(+)
		order by a.depth1, a.depth2, a.depth3 desc
		</if>		
		
	</select>
	
	<insert id="kr.co.i2talk.admin.insertAdminMenuUser"
		parameterType="Map">
	/* kr.co.i2talk.admin.insertAdminMenuUser */
       INSERT INTO SNS_ADMIN_ROLE (ROLE_ID, MENU_ID, USR_ID, USR_NM)
       VALUES(	#{role_id}, #{menu_id}, #{usr_id}, #{usr_nm} )
	</insert>
	
	<delete id="kr.co.i2talk.admin.deleteAdminMenuUser"
		parameterType="Map">
	/* kr.co.i2talk.admin.deleteAdminMenuUser */	
       DELETE FROM 
       SNS_ADMIN_ROLE 
       WHERE 1=1
       <if test="@i2c.cmm.util.StringUtil@isNotEmpty(role_id)">
       AND ROLE_ID = #{role_id}  
       </if>
       <if test="@i2c.cmm.util.StringUtil@isEmpty(role_id)">
       AND USR_ID = #{usr_id}   
       </if>    
	</delete> 
	
	<update id="kr.co.i2talk.admin.updateAdminMenuUser"
		parameterType="Map">
	/* kr.co.i2talk.admin.updateAdminMenuUser */	
       UPDATE SNS_USER SET 
       <if test="@i2c.cmm.util.StringUtil@isNotEmpty(admin_yn)">
       		SYS_ADMIN_YN = '',
       		OUTS_USR_YN = '',
       		LOGIN_PASSWD = ''  
       </if>
       <if test="@i2c.cmm.util.StringUtil@isEmpty(role_id)">
       		SYS_ADMIN_YN = 'Y',
       		OUTS_USR_YN = 'Y',
       		LOGIN_PASSWD = 'D/4avRoIIVNTwjPW4AlhPpXuxCU4Mqdhryj/N6xaFQw='   
       </if>
       		
       WHERE  
      		USR_ID = #{usr_id}  
      
	</update>
	
	<select id="kr.co.i2talk.admin.listAdminWork"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminWork */
		SELECT *
		FROM (
			SELECT
				COUNT(*) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY a.mod_dttm DESC) RN,
				a.WORK_ID,
				a.GRP_CD, FN_GET_CODE_NM('GRP_CD', a.GRP_CD) grp_cd_nm,
				a.OWNER_ID, FN_GET_USR_PHOTO(a.OWNER_ID) owner_photo, FN_GET_USR_NM(a.OWNER_ID) owner_nm,
				FN_GET_USR_ORIGIN_PHOTO(a.OWNER_ID) own_photo_img,
				a.TTL, a.CNTN,
				a.START_DT, a.END_DT,
				a.PGRS_ST, FN_GET_CODE_NM('PGRS_ST', a.PGRS_ST) pgrs_st_nm, a.PGRS_RATE,
				a.crt_usr_id, FN_GET_USR_PHOTO(a.crt_usr_id) crt_usr_photo, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm,
				FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) crt_photo_img,
				a.mod_usr_id, FN_GET_USR_PHOTO(a.mod_usr_id) mod_usr_photo, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm,
				FN_GET_USR_ORIGIN_PHOTO(a.mod_usr_id) mod_photo_img
				, a.mod_poss_yn, a.cplt_dttm
				, (
					select count(a.work_id) from sns_work where up_work_id = a.work_id
					) work_detail_cnt
			FROM (
				SELECT a.*
				FROM sns_work a
					, sns_post b
				WHERE 1=1
					AND a.work_id = b.tar_obj_id
					AND a.up_work_id is null
					AND b.post_tp = 'WORK'
					AND a.START_DT between #{start_dttm} AND #{end_dttm}
				
			) a
			ORDER BY a.mod_dttm DESC
		)
		WHERE RN BETWEEN (((#{page} - 1) * #{limit}) + 1) AND (#{page} * #{limit})
	</select>
	
	<select id="kr.co.i2talk.admin.listAdminWorkPlan"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminWorkPlan */
		SELECT 
			rownum RN,
			ti.*
		FROM (
			SELECT
				COUNT(*) OVER() TOTAL_CNT,
				a.*
			FROM (
				SELECT
					st.task_id, st.tar_usr_id, FN_GET_USR_NM(st.tar_usr_id) tar_usr_nm, st.tar_obj_id, st.tar_obj_tp,
					st.ttl, st.cntn, st.rest_cntn,
					st.task_st_cd, FN_GET_CODE_NM('TASK_ST_CD', st.task_st_cd) task_st_nm, st.task_st_mod_dttm, st.start_dttm, st.end_dttm, st.cplt_dttm,
					(case when (st.task_st_cd = 'NST' or st.task_st_cd = 'ING') then case when (DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s') > st.end_dttm) then '지연' else null end else null end) dlay,
					st.task_ord, st.impt_tp, FN_GET_CODE_NM('IMPT_TP', st.impt_tp) impt_tp_nm,
					st.crt_usr_id, FN_GET_USR_NM(st.crt_usr_id) crt_usr_nm, st.crt_dttm, st.mod_usr_id, FN_GET_USR_NM(st.mod_usr_id) mod_usr_nm, st.mod_dttm
					, st.open_yn
				FROM
					sns_task st
				WHERE 1=1
				AND st.tar_obj_id =  #{work_id}
			) a			 
			 
			ORDER BY a.crt_dttm asc
			 
		) ti
		
	</select>
	
	<select id="kr.co.i2talk.admin.listAdminWorkDetail"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAdminWorkDetail */
		SELECT
				COUNT(*) OVER() TOTAL_CNT,
				ROW_NUMBER() OVER(ORDER BY a.END_DT DESC) RN,
				a.WORK_ID,
				-- a.GRP_CD, FN_GET_CODE_NM('GRP_CD', a.GRP_CD) grp_cd_nm,
				a.OWNER_ID, FN_GET_USR_PHOTO(a.OWNER_ID) owner_photo, FN_GET_USR_NM(a.OWNER_ID) owner_nm,
				FN_GET_USR_ORIGIN_PHOTO(a.OWNER_ID) own_photo_img,
				a.TTL, a.CNTN,
				a.START_DT, a.END_DT,
				a.PGRS_ST, FN_GET_CODE_NM('PGRS_ST', a.PGRS_ST) pgrs_st_nm, -- a.PGRS_RATE,
				a.crt_usr_id, FN_GET_USR_PHOTO(a.crt_usr_id) crt_usr_photo, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm, a.crt_dttm,
				FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) crt_photo_img,
				a.mod_usr_id, FN_GET_USR_PHOTO(a.mod_usr_id) mod_usr_photo, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm, a.mod_dttm,
				FN_GET_USR_ORIGIN_PHOTO(a.mod_usr_id) mod_photo_img
				, a.mod_poss_yn, a.cplt_dttm, IFNULL(a.total_task_cnt, 0) total_task_cnt, a.fnl_reg_yn
				, a.up_ttl, a.up_crt_usr_id, a.up_crt_usr_nm, a.code_path				
			FROM (
				SELECT ROW_NUMBER() OVER(ORDER BY a.mod_dttm DESC) rn 
					, a.*
					, c.ttl up_ttl, c.crt_usr_id up_crt_usr_id, FN_GET_USR_NM(c.crt_usr_id) up_crt_usr_nm
					, (
							SELECT
								IFNULL(substr(sys_connect_by_path(work_cate_nm, ' > '), 4), '') code_path
							FROM sns_work_category
							WHERE 1=1
								AND work_cate_id = a.work_cate_id
							START WITH up_work_cate_id =  #{work_id}
							CONNECT BY PRIOR work_cate_id = up_work_cate_id
						) code_path
				FROM sns_work a
					
					, sns_work c
				WHERE 1=1
					AND a.up_work_id = c.work_id
					AND a.grp_cd = 'GTSK'
				 
					AND a.up_work_id =  #{work_id}
				
				) a	
		
	</select>	
	
	<select id="kr.co.i2talk.admin.listArea"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listArea */
		SELECT CODE AS AREA_CODE
		      , CODE_NM AS AREA_NM
      	FROM CMMN_DETAIL_CODE 
		WHERE CODE_ID  = 'LLR001'
		<if test="@i2c.cmm.util.StringUtil@isEmpty(code)">
       		AND UPPER_CODE is null  
        </if>
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(code)">
       		AND UPPER_CODE = #{code}  
        </if>
		ORDER BY CODE
	</select>
	
	 <select id="kr.co.i2talk.admin.listAuthInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.admin.listAuthInfo */
        SELECT 
        	AUTHOR_CODE, AUTHOR_NM, AUTHOR_DC, AUTHOR_CREAT_DE
        FROM AUTH_INFO 
        WHERE AUTHOR_CODE IN ('ROLE_USER','ROLE_CTPRVN','ROLE_CITY')
        ORDER BY AUTHOR_CODE DESC
    </select>
	
	<select id="kr.co.i2talk.admin.listAdminConverterLogs"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.admin.listAdminConverterLogs */
SELECT
	*
FROM
(
	SELECT 
		COUNT(a.attach_nm) OVER() TOTAL_CNT,
		ROW_NUMBER() OVER(ORDER BY a.conv_req_dttm) RN,
		a.*
	FROM (
		SELECT
			   TO_CHAR(TO_DATE(conv_req_dttm,'yyyyMMddHH24MISS'), 'yyyy-MM-dd DY HH24:MI:SS') conv_req_dttm
			 , tar_tp, attach_nm
			 , crt_usr_id, FN_GET_USR_NM(crt_usr_id) crt_usr_nm
    		 , conv_yn
			 , case tar_tp 
				when 'WORK' then '업무'
				when 'TASK' then '작업'
				when 'POST' then '피드'
				when 'CFRC' then '회의'
				when 'APPR' then '메모보고'
	   		   end tar_tp_nm
		FROM
			sns_attach
		WHERE conv_req_dttm is not null
		AND substr(conv_req_dttm,0,8) between #{start_dttm} AND #{end_dttm}
	) a
	order by a.conv_req_dttm
)
WHERE RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>
	
	<select id="kr.co.i2talk.admin.listAdminConverterStats"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.admin.listAdminConverterStats */
SELECT
	*
FROM
(
	SELECT 
		COUNT(a.conv_dttm) OVER() TOTAL_CNT,
		ROW_NUMBER() OVER(ORDER BY a.conv_dttm) RN,
		a.*
	FROM (
		select 
		     conv_dttm
		   , tar_tp
		   , case tar_tp 
				when 'WORK' then '업무'
				when 'TASK' then '작업'
				when 'POST' then '커뮤니티'
				when 'CFRC' then '회의'
				when 'APPR' then '메모보고'
		     end tar_tp_nm
		   , IFNULL(max(y_cnt),0) + IFNULL(max(n_cnt),0) t_cnt 
		   , IFNULL(max(y_cnt),0) as y_cnt
		   , IFNULL(max(n_cnt),0) as n_cnt 
		from (
			select 
			     substr(conv_req_dttm,0,8) conv_dttm
			   , tar_tp
			   , decode(IFNULL(conv_yn,'N'),'Y',count(*)) as y_cnt
			   , decode(IFNULL(conv_yn,'N'),'N',count(*)) as n_cnt
			from sns_attach
			where  substr(conv_req_dttm,0,8) between #{start_dttm} AND #{end_dttm}
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(tar_tp)">
			and tar_tp = #{tar_tp}
		</if>
			group by substr(conv_req_dttm,0,8), tar_tp, conv_yn
		) group by conv_dttm, tar_tp
	) a
	order by a.conv_dttm, tar_tp
)
WHERE RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
<!-- 	and conv_yn = 'Y' -->

	</select>
	
</mapper>
