<?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">
<!-- 멘션 사용자 VO -->
	<resultMap id="mentionResultMap"    type="i2c.biz.sns.vo.MentionUserVO" />
<!-- 1. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.sns.listSnsPostUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsPostUser */
SELECT
	post_usr_id, post_id, usr_id, fnl_appr_yn, usr_tp
FROM
	sns_post_user
	</select>

	<select id="kr.co.i2talk.sns.viewSnsPostUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.viewSnsPostUser */
	SELECT
		   POST_USR_ID
		 , SPU.USR_ID
		 , SP.POST_ID
		 , SPU.FNL_APPR_YN		 
	  FROM SNS_POST_USER SPU
	     , SNS_POST SP
	 WHERE 1=1
	   AND SPU.POST_ID = SP.POST_ID
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(device_id) == false">
	   	AND SPU.DEVICE_ID = #{device_id}	   
	   </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
	   	AND SPU.USR_ID = #{usr_id}	   
	   </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(post_tp) == false">
	   	AND SP.POST_TP = #{post_tp}	   
	   </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_tp) == false">
	   	AND SPU.USR_TP = #{usr_tp}	   
	   </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(tar_obj_id) == false">
	   	AND SP.TAR_OBJ_ID = #{tar_obj_id}	   
	   </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(tar_obj_tp) == false">
	   	AND SP.POST_TP = #{tar_obj_tp}	
	   </if>  
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(post_usr_id) == false">
	   	AND SPU.POST_USR_ID = #{post_usr_id}	
	   </if>
	</select>

	<insert id="kr.co.i2talk.sns.insertSnsPostUser"
		parameterType="Map">
/* kr.co.i2talk.sns.insertSnsPostUser */
INSERT INTO sns_post_user (
	post_usr_id, post_id, usr_id, fnl_appr_yn, cfrc_usr_flag, usr_tp, usr_map_idx, reg_dttm, device_id)
VALUES (
	#{post_usr_id}, #{post_id}, #{usr_id}, #{fnl_appr_yn}, #{cfrc_usr_flag}, #{usr_tp}, #{usr_map_idx}, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'),#{device_id})
	</insert>

	<update id="kr.co.i2talk.sns.updateSnsPostUser"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsPostUser */
UPDATE sns_post_user SET
	post_id = #{post_id},
	usr_id = #{usr_id},
	fnl_appr_yn = #{fnl_appr_yn},
	usr_tp		= #{usr_tp},
	usr_map_idx = #{usr_map_idx}
WHERE
	post_usr_id = #{post_usr_id}
	</update>

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

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

	<delete id="kr.co.i2talk.sns.deleteSnsPostUserByPostId"
		parameterType="Map">
/* kr.co.i2talk.sns.deleteSnsPostUserByPostId */
DELETE FROM sns_post_user WHERE
	post_id = #{post_id}
	</delete>

	<select id="kr.co.i2talk.sns.listSnsPostUserByConference" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.listSnsPostUserByConference */
		SELECT
			a.post_usr_id, a.usr_id, a.cfrc_cnnt_tp, a.cfrc_atdc_yn, a.cfrc_atdc_st,
			a.cfrc_usr_flag, FN_GET_CODE_NM('CFRC_USR_FLAG', a.cfrc_usr_flag) cfrc_usr_flag_nm,
			c.usr_nm, c.pos_nm, FN_GET_USR_DEPT_NM(c.USR_ID) dept_nm, c.mng_usr_id, c.mng_usr_nm, c.mng_usr_pos_nm,
			FN_GET_IMG_NM('user',a.usr_id, c.photo_img_min) photo_img_min
			, FN_GET_USR_ORIGIN_PHOTO(a.usr_id) usr_photo_img
		FROM
			sns_post_user a,
			sns_post b,
			sns_user c
		WHERE
			a.post_id = b.post_id
		AND a.usr_id = c.usr_id
		--AND b.tar_obj_tp = 'CFRC'
		AND b.post_tp = 'CFRC'
		AND b.tar_obj_id = #{tar_obj_id}
	</select>

	<select id="kr.co.i2talk.sns.listSnsPostUserByTarObjId" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.listSnsPostUserByTarObjId */
		SELECT
			  POST_USR_ID, POST_ID, USR_ID, USR_TP
			, CFRC_USR_FLAG
			, DECODE(CFRC_USR_FLAG,'HOST','사회자','GNER','참가자') CFRC_USR_FLAG_NM
			, CFRC_ATDC_YN, CFRC_ATDC_ST, CFRC_CNNT_TP, FNL_APPR_YN
			, FN_GET_USR_PHOTO(USR_ID) USR_PHOTO
			, FN_GET_USR_ORIGIN_PHOTO(USR_ID) USR_PHOTO_IMG
			, FN_GET_USR_NM(USR_ID) USR_NM			
			, FN_GET_USR_DEPT_NM(USR_ID) DEPT_NM
			, FN_GET_USR_POS_NM(USR_ID) POS_NM
			, CFRC_IN_DTTM
			, CFRC_OUT_DTTM
		FROM
			SNS_POST_USER
		WHERE
			POST_ID = (
				SELECT POST_ID FROM SNS_POST
				WHERE POST_TP = #{post_tp}
				AND TAR_OBJ_ID = #{tar_obj_id}
			)
			<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
				AND USR_ID = #{usr_id}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(fnl_appr_yn) == false">
				AND FNL_APPR_YN = #{fnl_appr_yn}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(cfrc_usr_flag) == false">
				AND CFRC_USR_FLAG = #{cfrc_usr_flag}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_tp) == false">
				AND USR_TP = #{usr_tp}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(cfrc_st) == false">
				AND (CFRC_USR_FLAG = 'HOST' OR  CFRC_IN_DTTM IS NOT NULL)
			</if>
		ORDER BY FNL_APPR_YN DESC, USR_TP ASC
	</select>
	
	<!-- work_id 로 게시물 사용자 조회 : 20141021(이균추가) -->
	<select id="kr.co.i2talk.sns.listSnsPostUserByWorkId" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.listSnsPostUserByWorkId */
		SELECT  
				POST_USR_ID, POST_ID, USR_ID
		    ,   FN_GET_USR_DEPT_NM(USR_ID) USR_DEPT_NM
		    ,   FN_GET_USR_PHOTO(USR_ID) USR_photo
		    ,   FN_GET_USR_ORIGIN_PHOTO(USR_ID) usr_photo_img
		    ,   FN_GET_USR_NM(USR_ID) USR_nm
		    ,   FN_GET_USR_ORIGIN_PHOTO(USR_ID) as USR_photo_img
		    ,   FNL_APPR_YN, usr_tp
		    ,	CFRC_USR_FLAG
		    , 	CFRC_ATDC_YN
		    , 	CFRC_ATDC_ST
		    , 	CFRC_CNNT_TP
		FROM    SNS_POST_USER T
		WHERE   EXISTS (
		            SELECT  'X'
		            FROM    VW_WORK_TASK T1
		                ,   SNS_POST T2
		            WHERE   T1.TASK_ID = T2.TAR_OBJ_ID
		            AND     T1.TAR_OBJ_ID = #{tar_obj_id}
		            AND     T2.POST_TP = UPPER(#{post_tp})
		            AND     T2.POST_ID = T.POST_ID
		        )
			<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
				and usr_id = #{usr_id}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(fnl_appr_yn) == false">
				and fnl_appr_yn = #{fnl_appr_yn}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(cfrc_usr_flag) == false">
				and cfrc_usr_flag = #{cfrc_usr_flag}
			</if>
			<if test="@i2c.cmm.util.StringUtil@isEmpty(usr_tp) == false">
				and usr_tp = #{usr_tp}
			</if>
		order by fnl_appr_yn desc, usr_tp asc
	</select>

	<select id="kr.co.i2talk.sns.viewSnsPostUserByPostId"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsPostUserByPostId */
SELECT
	post_usr_id, post_id, usr_id, usr_tp , usr_map_idx, fnl_appr_yn,
	cfrc_usr_flag, cfrc_atdc_yn, cfrc_atdc_st, cfrc_cnnt_tp
FROM
	sns_post_user
WHERE
	post_id = #{post_id}
	</select>

	<select id="kr.co.i2talk.sns.listSnsPostUserByPostId"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsPostUserByPostId */
SELECT
	post_usr_id, post_id, usr_id, FN_GET_USR_NM(usr_id) usr_nm,  fnl_appr_yn, usr_tp, usr_map_idx,
	cfrc_usr_flag, cfrc_atdc_yn, cfrc_atdc_st, cfrc_cnnt_tp
FROM
	sns_post_user
WHERE
	post_id = #{post_id}
	</select>

	
	<select id="kr.co.i2talk.sns.listSnsPostUserByPostIds" parameterType="Map" resultType="i2c.biz.sns.vo.MentionUserVO">
		/* kr.co.i2talk.sns.listSnsPostUserByPostIds 게시글 사용자의 정보를 가져온다. */
		SELECT A.POST_USR_ID
             , A.POST_ID
             , A.USR_ID
             , FN_GET_USR_NM(A.USR_ID) USR_NM
             , A.FNL_APPR_YN
             , A.USR_TP
             , A.USR_MAP_IDX
             , A.CFRC_USR_FLAG
             , A.CFRC_ATDC_YN
             , A.CFRC_ATDC_ST
             , A.CFRC_CNNT_TP
             , B.UP_POST_ID
		FROM SNS_POST_USER A
		   , SNS_POST B
		WHERE A.POST_ID = B.POST_ID
		  AND A.USR_TP != 'CRTR'
		  AND B.POST_ID = #{post_id}
		 <!--  AND B.POST_ID IN 
		<foreach collection="key_post_ids" item="item" index="index" separator="," open="(" close=")">
		    #{item}
		</foreach> -->
	</select>
	
	<select id="kr.co.i2talk.sns.listSnsPostUserByKakao" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.listSnsPostUserByKakao */
		SELECT A.POST_USR_ID
             , A.POST_ID
             , A.USR_ID
             , FN_GET_USR_NM(A.USR_ID) USR_NM
             , A.FNL_APPR_YN
             , A.USR_TP
             , A.USR_MAP_IDX
             , A.CFRC_USR_FLAG
             , A.CFRC_ATDC_YN
             , A.CFRC_ATDC_ST
             , A.CFRC_CNNT_TP
             , B.UP_POST_ID
             , C.PHN_NUM
             , B.CNTN
		FROM SNS_POST_USER A
		   , SNS_POST B
		   , SNS_USER C
		WHERE A.POST_ID = B.POST_ID
		  AND A.USR_ID = C.USR_ID	
		  AND A.USR_TP != 'CRTR'	  
		  AND B.POST_ID = #{post_id}		 
	</select>

	<update id="kr.co.i2talk.sns.updateSnsPostUserByCfrc"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsPostUserByCfrc */
UPDATE sns_post_user SET
	cfrc_atdc_yn = #{cfrc_atdc_yn},
	cfrc_atdc_st = #{cfrc_atdc_st},
	cfrc_cnnt_tp = #{cfrc_cnnt_tp}
WHERE post_id = #{post_id}
and usr_id = #{usr_id}
	</update>

	<select id="kr.co.i2talk.sns.listSnsPostUserByObjectId"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listSnsPostUserByObjectId */
	SELECT
		   SPU.USR_ID
		 , SP.POST_ID
	  FROM SNS_POST_USER SPU
	     , SNS_POST SP
	 WHERE 1=1
	   AND SPU.POST_ID = SP.POST_ID
	   AND SP.tar_obj_id = #{tar_obj_id}
	   AND SP.tar_obj_tp = #{tar_obj_tp}
	   AND SP.post_tp = #{tar_obj_tp}	   
	   AND SPU.usr_id != #{crt_usr_id}
	</select>

	<select id="kr.co.i2talk.sns.viewSnsPostUserByAccessCheck"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsPostUserByAccessCheck */
SELECT b.tar_obj_id
  FROM sns_post_user a, sns_post b
 WHERE a.post_id = b.post_id
   AND b.up_post_id IS NULL
   AND b.post_tp = #{post_tp}
   AND a.usr_id = #{login_usr_id}
   AND b.tar_obj_id = #{tar_obj_id}
	</select>
	
	<!-- ========================================================
	==== 이균 추가 : 20141030
	==== taskId와 login_id를 가지고 상위 work 까지의 업무상세조회권한 체크
	==== 뷰테이블에서 work 생성을 일단 5단계까지 지정함.
	==== 향후 view 테이블에서 단계가 더 추가될 경우 여기도 추가됨
	==== 운영자가 변경이 되었을 경우 변경된 운영자도 포함
	======================================================== -->
	<select id="kr.co.i2talk.sns.viewSnsPostUserByAccessCheckByTaskIdToWork"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.viewSnsPostUserByAccessCheckByTaskIdToWork */		
SELECT  T.USR_ID
FROM    (
            SELECT  TZ.USR_ID
            	,   TZ.USR_TP
            FROM    SNS_POST_USER TZ
            WHERE   EXISTS (
                            SELECT  'X'
                            FROM    (
                                    SELECT  T1.POST_ID
                                    FROM    SNS_POST T1
                                    WHERE   EXISTS (
                                                    SELECT  'X'
                                                    FROM    (
                                                            SELECT  TASK_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            UNION
                                                            SELECT  WORK_TOP_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            UNION
                                                            SELECT  WORK_SUB1_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            UNION
                                                            SELECT  WORK_SUB2_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            UNION
                                                            SELECT  WORK_SUB3_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            UNION
                                                            SELECT  WORK_SUB4_ID TARGET_ID
                                                            FROM    VW_WORK_TASK
                                                            WHERE   TASK_ID = #{tar_obj_id}
                                                            ) T
                                                    WHERE   T.TARGET_ID IS NOT NULL
                                                    AND     T.TARGET_ID = T1.TAR_OBJ_ID
                                                    ) 
                                    AND     T1.UP_POST_ID IS NULL
                                    AND     T1.POST_TP = #{post_tp}
                                    ) T2
                            WHERE   T2.POST_ID = TZ.POST_ID
                            )
        ) T
WHERE   T.USR_ID = #{login_usr_id}
AND     T.USR_TP IN ('CRTR', 'REFE')
UNION ALL
SELECT	T.USR_ID
FROM	(
		SELECT  CASE WHEN T1.GRP_CD = 'GTSK'
		             THEN (SELECT USR_ID FROM SNS_USER WHERE usr_id = T1.work_top_crt_usr_id)
		             WHEN T1.GRP_CD = 'LOTK'
		             THEN (SELECT USR_ID FROM SNS_USER WHERE usr_id = T1.work_top_crt_usr_id)
		        END USR_ID
		FROM    (
		        SELECT	GRP_CD,
		        		WORK_TOP_CRT_USR_ID		        
		        FROM	VW_WORK_TASK
		        WHERE	TASK_ID = #{tar_obj_id}
		        ) T1
		) T
WHERE	T.USR_ID = #{login_usr_id}
	</select>
	
	<select id="kr.co.i2talk.sns.listSnsPostUserByOperMngId"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsPostUserByOperMngId */
SELECT
	post_usr_id, post_id, usr_id, FN_GET_USR_NM(usr_id) usr_nm,  
	FN_GET_USR_DEPT_NM(usr_id) usr_dept_nm, fnl_appr_yn, usr_tp, usr_map_idx,
	cfrc_usr_flag, cfrc_atdc_yn, cfrc_atdc_st, cfrc_cnnt_tp,
	FN_GET_USR_POS_NM(usr_id) usr_pos_nm,
	FN_GET_USR_PHOTO(usr_id) usr_photo,
	FN_GET_USR_ORIGIN_PHOTO(usr_id) usr_photo_img,
	FN_GET_DEPT_NM(usr_id) usr_dept_nm
FROM
	sns_post_user
WHERE post_id = #{post_id}
AND usr_tp = #{usr_tp}
AND fnl_appr_yn = #{fnl_appr_yn}
	</select>


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