<?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.sns">
<!-- 1. 추가  쿼리 메소드 작성 -->
    <select id="kr.co.i2talk.sns.listExtDepartment"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listExtDepartment */
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(dept_id) == false">
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(dept_cd) == false">
			SELECT 
			    'JOJIK' as type
			  ,	dept_id
			  , dept_cd
			  , dept_nm
			  , srt_ord
			  , '' as usr_id
			  , '' as usr_nm
			  , '' as email
			  , '' as login_id
			  , '' as photo_img
			  , '' as photo_img_mid
			  , '' as photo_img_min
			  , '' as photo_img_path
			  , '' as photo_img_mid_path
			  , '' as photo_img_min_path
			  , '' as use_stop_yn
			  , '' as use_stop_dttm
			  , '' as sys_admin_yn
			  , '' as outs_usr_yn
			  , '' as tel_num
			  , '' as pos_cd
			  , '' as pos_nm
			  , '' as dept_nm
			  , '' as mng_usr_id
			  , '' as mng_usr_nm
			  , '' as mng_usr_pos_nm
			  , '' as phn_num
			  , '' as fax_num
			  , '' as birth_dt
			  , '' as cover_img
			  , '' as ext_user_id
			  , '' as crt_usr_id
			  , '' as crt_dttm
			  , '' as mod_usr_id
			  , '' as mod_dttm
			  , '' as follow_yn
			  , '' as connect_yn
			  , '' as lst_connect_dttm
			FROM
				ext_department
		   where srt_ord in (1,2)
		   order by dept_id
		</if>
	</if>
	
	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(dept_id) == true">
		<if test="@i2c.cmm.util.StringUtil@isNotEmpty(dept_cd) == true">
			<if test="srt_ord == 1">
				SELECT
				    'USER' as type
				  ,	'' as dept_id
				  , '' as dept_cd
				  , '' as dept_nm
				  , 99 as srt_ord
				  ,	usr_id
				  , usr_nm
				  , email
				  , login_id, /*login_passwd,*/
					photo_img,
					photo_img_mid,
					photo_img_min,
					FN_GET_IMG_NM('user',usr_id,photo_img) as photo_img_path,
					FN_GET_IMG_NM('user',usr_id,photo_img_mid) as photo_img_mid_path,
					FN_GET_IMG_NM('user',usr_id,photo_img_min) as photo_img_min_path,
					use_stop_yn, use_stop_dttm, sys_admin_yn, outs_usr_yn, tel_num,
					pos_cd, pos_nm, FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
					phn_num, fax_num, birth_dt, cover_img, ext_user_id,
					crt_usr_id, crt_dttm, mod_usr_id, mod_dttm,
					(
						case
							when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = #{fllw_applr_id}) > 0 then
								'Y'
							else
								'N'
						end
					) follow_yn,
					(
						decode((select count(usr_id) cnt from sns_user_client it where it.usr_id = a.usr_id and it.CONNECT_STATE_CD = 'ON'), 0, 'N', 'Y')
					) connect_yn,
					(
						select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
					) lst_connect_dttm
				FROM
					sns_user a
	 		   where dept_id = #{dept_id}
	 		   order by usr_nm
			</if>
			<if test="srt_ord != 1">
				select 
				    'JOJIK' as type
				  ,	dept_id
				  , dept_cd
				  , dept_nm
				  , srt_ord
				  , '' as usr_id
				  , '' as usr_nm
				  , '' as email
				  , '' as login_id
				  , '' as photo_img
				  , '' as photo_img_mid
				  , '' as photo_img_min
				  , '' as photo_img_path
				  , '' as photo_img_mid_path
				  , '' as photo_img_min_path
				  , '' as use_stop_yn
				  , '' as use_stop_dttm
				  , '' as sys_admin_yn
				  , '' as outs_usr_yn
				  , '' as tel_num
				  , '' as pos_cd
				  , '' as pos_nm
				  , '' as dept_nm
				  , '' as mng_usr_id
				  , '' as mng_usr_nm
				  , '' as mng_usr_pos_nm
				  , '' as phn_num
				  , '' as fax_num
				  , '' as birth_dt
				  , '' as cover_img
				  , '' as ext_user_id
				  , '' as crt_usr_id
				  , '' as crt_dttm
				  , '' as mod_usr_id
				  , '' as mod_dttm
				  , '' as follow_yn
				  , '' as connect_yn
				  , '' as lst_connect_dttm 
				from ext_department
				where up_dept_cd = #{dept_id}
				union
				select
				    'USER' as type
				  ,	'' as dept_id
				  , '' as dept_cd
				  , '' as dept_nm
				  , 99 as srt_ord
				  , usr_id
				  , usr_nm
				  , email
				  , login_id, /*login_passwd,*/
					photo_img,
					photo_img_mid,
					photo_img_min,
					FN_GET_IMG_NM('user',usr_id,photo_img) as photo_img_path,
					FN_GET_IMG_NM('user',usr_id,photo_img_mid) as photo_img_mid_path,
					FN_GET_IMG_NM('user',usr_id,photo_img_min) as photo_img_min_path,
					use_stop_yn, 
					use_stop_dttm, 
					sys_admin_yn, 
					outs_usr_yn, 
					tel_num,
					pos_cd, 
					pos_nm, 
					FN_GET_USR_DEPT_NM(A.USR_ID) dept_nm, 
					mng_usr_id,
					mng_usr_nm, 
					mng_usr_pos_nm,
					phn_num
				  , fax_num
				  , birth_dt
				  , cover_img
				  , ext_user_id
				  , crt_usr_id
				  , crt_dttm
				  , mod_usr_id
				  , mod_dttm,
					(
						case
							when (select count(*) from sns_follow it where it.tar_usr_id = a.usr_id and it.fllw_applr_id = #{fllw_applr_id}) > 0 then
								'Y'
							else
								'N'
						end
					) follow_yn,
					(
						decode((select count(usr_id) cnt from sns_user_client it where it.usr_id = a.usr_id and it.CONNECT_STATE_CD = 'ON'), 0, 'N', 'Y')
					) connect_yn,
					(
						select max(lst_connect_dttm) from sns_user_client it where it.usr_id = a.usr_id
					) lst_connect_dttm
				from sns_user a
				where dept_id = #{dept_id}
				order by usr_nm
			</if>
		</if>
	</if>
    </select>

    <select id="kr.co.i2talk.sns.viewExtDepartment"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.viewExtDepartment */
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
	dept_id = #{dept_id}
    </select>

    <insert id="kr.co.i2talk.sns.insertExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.insertExtDepartment */
INSERT INTO ext_department ( 
	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)
VALUES (
	#{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})
    </insert>
    
	<update id="kr.co.i2talk.sns.updateExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.updateExtDepartment */
UPDATE ext_department SET
	dept_cd = #{dept_cd}, 
	dept_nm = #{dept_nm}, 
	dept_descrip = #{dept_descrip}, 
	up_dept_cd = #{up_dept_cd}, 
	srt_ord = #{srt_ord}, 
	use_yn = #{use_yn}, 
	crt_usr_id = #{crt_usr_id}, 
	crt_dttm = #{crt_dttm}, 
	mod_usr_id = #{mod_usr_id}, 
	mod_dttm = #{mod_dttm}
WHERE
	dept_id = #{dept_id}
    </update>

	<delete id="kr.co.i2talk.sns.deleteExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.deleteExtDepartment */
DELETE FROM ext_department WHERE
	dept_id = #{dept_id}
    </delete>
<!-- 1. 추가  쿼리 메소드 작성 끝 -->

<!-- 2. 추가  쿼리 메소드 작성 -->


	<select id="kr.co.i2talk.sns.listLayerExtDepartment"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listLayerExtDepartment */
	SELECT  
			dept_id, 
			dept_cd, 
			dept_nm, 
			dept_descrip, 
			IFNULL(up_dept_cd,'0') up_dept_cd,
			(select count(dept_id) from ext_department where up_dept_cd = ext_department.dept_id) low_cnt,
			srt_ord,
			base_dept_cd,
			use_yn, 
			crt_usr_id, 
			crt_dttm, 
			mod_usr_id, 
			mod_dttm 
		FROM ext_department
		WHERE 1=1		
		<if test="@i2c.cmm.util.StringUtil@isEmpty(up_dept_cd) == false">
			 AND up_dept_cd = #{up_dept_cd}
		</if>	
		START WITH up_dept_cd = '0'
		CONNECT BY PRIOR dept_id = up_dept_cd
		ORDER SIBLINGS BY srt_ord
	
    </select>

    <select id="kr.co.i2talk.sns.viewLayerExtDepartment"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.viewLayerExtDepartment */	
	SELECT
			a.dept_id, a.dept_cd, a.dept_nm, a.dept_descrip, a.up_dept_cd, 
			a.srt_ord, a.use_yn, a.crt_usr_id, a.crt_dttm, a.mod_usr_id, 
			a.mod_dttm, biz_type, base_dept_cd, dept_year, biz_id, default_author_code
			, (
					SELECT
						IFNULL(substr(sys_connect_by_path(dept_nm, ' > '), 4), '') code_path
					FROM ext_department
					WHERE 1=1
						AND dept_id = a.up_dept_cd					
					START WITH up_dept_cd = '0'
					CONNECT BY PRIOR dept_id = up_dept_cd
				) code_path
		FROM ext_department a
		WHERE 1=1
		<if test="@i2c.cmm.util.StringUtil@isEmpty(up_dept_cd) == false">
			AND a.up_dept_cd = #{up_dept_cd}
		</if>				
			AND a.dept_id = #{dept_id}			
	
    </select>
    
    <select id="kr.co.i2talk.sns.orderLayerExtDepartment" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.orderLayerExtDepartment */
		SELECT
			(IFNULL(max(srt_ord), 0) + 1) srt_ord
		FROM ext_department
		WHERE up_dept_cd = #{up_dept_cd}
		
	</select>

    <insert id="kr.co.i2talk.sns.insertLayerExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.insertLayerExtDepartment */
INSERT INTO ext_department ( 
	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, base_dept_cd,dept_year,biz_type,biz_id,default_author_code)
VALUES (
	#{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}, #{base_dept_cd}, #{dept_year}, #{biz_type}, #{biz_id},#{default_author_code})	
    </insert>
    
	<update id="kr.co.i2talk.sns.updateLayerExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.updateLayerExtDepartment */

	UPDATE ext_department
	SET
		dept_nm = #{dept_nm}
		, use_yn = #{use_yn}
	<if test="@i2c.cmm.util.StringUtil@isEmpty(srt_ord) == false">
		, srt_ord = #{srt_ord}
	</if>
		, mod_usr_id = #{mod_usr_id}
		, mod_dttm = #{mod_dttm}
		, dept_year = #{dept_year}
		, biz_type = #{biz_type}
		, biz_id = #{biz_id}
		, default_author_code = #{default_author_code}
	WHERE 1=1	
		AND dept_id = #{dept_id}
    </update>

	<delete id="kr.co.i2talk.sns.deleteLayerExtDepartment"
		parameterType="Map">
/* kr.co.i2talk.sns.deleteLayerExtDepartment */
DELETE FROM ext_department
		WHERE dept_id in (
				SELECT
					dept_id
				FROM ext_department
				WHERE 1=1				
				START WITH dept_id = #{dept_id}
				CONNECT BY PRIOR dept_id = up_dept_cd
			)
    </delete>


	<select id="kr.co.i2talk.sns.listSnsOrg"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listSnsOrg */
	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, dept_year, biz_type, biz_id
	FROM
		ext_department
	WHERE 
		use_yn = 'Y'
		<if test="overlapCheckId == 'instt_member_list'">
		AND BIZ_TYPE = 'I'
		AND DEPT_YEAR = #{startYear}
		</if>
		<if test="overlapCheckId == 'bsnm_member_list'">
		AND BIZ_TYPE = 'B'
		AND DEPT_YEAR = #{startYear}
		</if>
		<if test="@i2c.cmm.util.StringUtil@isEmpty(type) == false">
			<if test="type == 'SBSCRB'">
			AND UP_DEPT_CD = (SELECT DEPT_ID FROM EXT_DEPARTMENT WHERE UP_DEPT_CD = '0')
			</if>
		</if>
		<if test="@i2c.cmm.util.StringUtil@isEmpty(up_dept_cd) == false">
			<choose>
				<when test="up_dept_cd == 'DEFAULT'">
					AND UP_DEPT_CD = (SELECT DEPT_ID 
			                          FROM EXT_DEPARTMENT 
			                          WHERE UP_DEPT_CD = (
			                                             SELECT DEPT_ID 
			                                             FROM EXT_DEPARTMENT 
			                                             WHERE UP_DEPT_CD = '0'
			                                             ) AND SRT_ORD = 1)
				</when>
				<otherwise>
					AND UP_DEPT_CD = #{up_dept_cd}							
				</otherwise>
			</choose>
		</if>
	ORDER BY SRT_ORD
	</select>
	
	<select id="kr.co.i2talk.sns.listOrgUsr"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listOrgUsr */
		select  
			usr_id, usr_nm, email, tel_num, phn_num,
			pos_cd, pos_nm, FN_GET_USR_DEPT_NM(SU.USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
			photo_img_min, FN_GET_IMG_NM('user', usr_id, photo_img_min) as photo_img_min_path 
			, FN_GET_IMG_NM('user', usr_id, photo_img_min) as usr_photo_img,
			emp_no,
			login_id,
			SU.auth_code,
			use_stop_yn,
			AUTH.AUTHOR_NM
			, SU.MASKING_YN
		from sns_user SU
		LEFT OUTER JOIN COMTNAUTHORINFO AUTH ON AUTH.AUTHOR_CODE = SU.AUTH_CODE
		where dept_id = #{dept_id}
		AND APPROVAL = 'Y'  /* 승인 회원 */
		<if test="search_word != null and search_word !=''">
		and usr_nm like '%'|| #{search_word} ||'%'
		</if>
		order by usr_nm
    </select>
    
    <select id="kr.co.i2talk.sns.listOrgName"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listOrgName */
		select  
			usr_id, usr_nm, email, tel_num, phn_num,
			pos_cd, pos_nm, FN_GET_USR_DEPT_NM(USR_ID) dept_nm, mng_usr_id, mng_usr_nm, mng_usr_pos_nm,
			photo_img_min, FN_GET_IMG_NM('user', usr_id, photo_img_min) as photo_img_min_path 
			, FN_GET_IMG_NM('user', usr_id, photo_img_min) as usr_photo_img
			, MASKING_YN
		from sns_user
		WHERE 1=1		
		AND APPROVAL = 'Y' 		/* 승인 회원 */
		AND USE_STOP_YN = 'N' 	/* 사용중 회원 */
		and usr_nm like '%'|| #{searchOrgKeyword} ||'%'
		order by usr_nm
    </select>
	
	<update id="kr.co.i2talk.sns.moveLayerExtDepartment" parameterType="Map">
		/* kr.co.i2talk.sns.moveLayerExtDepartment */
		UPDATE 
			EXT_DEPARTMENT 
		SET			
			<if test="@i2c.cmm.util.StringUtil@isEmpty(up_dept_cd) == false">UP_DEPT_CD = #{up_dept_cd},</if>
		    <if test="@i2c.cmm.util.StringUtil@isEmpty(srt_ord) == false">SRT_ORD = #{srt_ord},</if>
		    <if test="@i2c.cmm.util.StringUtil@isEmpty(base_dept_cd) == false">BASE_DEPT_CD = #{base_dept_cd},</if>
		    MOD_DTTM = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
		WHERE
			DEPT_ID = #{dept_id}
    </update>
<!-- 2. 추가  쿼리 메소드 작성 끝 -->

	<select id="kr.co.i2talk.sns.listInstt" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listInstt */	
	SELECT
		instt_id,
		instt_nm
	FROM
		instt
	</select>
	
	<select id="kr.co.i2talk.sns.listBsnm" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listBsnm*/	
	SELECT
		bsnm_id,
		bsnm_nm
	FROM
		bsnm
	</select>
	
	<select id="kr.co.i2talk.sns.listUpExtDepartment" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	    /* [kr.co.i2talk.sns.listUpExtDepartment] 상위부서에 대한 하위부서 조회 */
	    SELECT DEPT_ID
	         , DEPT_NM
	      FROM EXT_DEPARTMENT ED
	     WHERE ED.UP_DEPT_CD = #{up_dept_cd}
	       AND ED.USE_YN     = 'Y'
	     ORDER BY ED.SRT_ORD
	</select>
	
	<select id="selectAuthorList" resultType="i2c.cmm.base.CommonResultMap">
	/* [kr.co.i2talk.sns.selectAuthorList] 권한목록 */
	 SELECT 
		    AUTHOR_CODE
		  , AUTHOR_NM 
	   FROM COMTNAUTHORINFO		
	</select>
</mapper>
