<?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">
	<resultMap id="fileVO"      type="i2c.cmm.vo.FileVO" />
	<!-- 첨부 파일 VO -->
	<resultMap id="attachResultMap"     type="i2c.biz.sns.vo.AttachFileVO"  />
	
	<sql id="table_param">		
		<choose>			
			<when test="table_name =='NOTICE'">
	    		NOTICE
			</when>	
			<when test="table_name =='FAQ'">
	    		FAQ
			</when>			
			<when test="table_name =='DSCSN'">
	    		DSCSN
			</when>
			<when test="table_name =='ORG'">
	    		ORG_INFO
			</when>	
			<when test="table_name =='CHNNL_EVENT'">
	    		CHNNL_EVENT
			</when>
			<when test="table_name =='CHNNL'">
	    		CHNNL
			</when>
			<when test="table_name =='CHNNL_TP_CODE'">
	    		CHNNL_TP_CODE
			</when>
			<when test="table_name =='CHNNL_BOARD'">
	    		CHNNL_BOARD
			</when>
			<when test="table_name =='VOTE_QUSTNR'">
	    		VOTE_QUSTNR
			</when>	
			<when test="table_name =='VOTE_QESTN'">
	    		VOTE_QESTN
			</when>	
			<when test="table_name =='VOTE_ANSWER'">
	    		VOTE_ANSWER
			</when>			
			<when test="table_name =='PUSH_MESSAGE'">
	    		PUSH_MESSAGE
			</when>
			<when test="table_name =='BOARD'">
	    		BOARD
			</when>
			<when test="table_name =='PETIT_PROPSE'">
	    		PETIT_PROPSE
			</when>
			<when test="table_name =='DSPTCH_NUM_MNG'">
	    		DSPTCH_NUM_MNG
			</when>
			<when test="table_name =='SNS_USER'">
	    		SNS_USER
			</when>
			<otherwise>
				NOTICE
			</otherwise>							
	 	</choose>
	</sql>	
		
	<sql id="column_param">
		<choose>			
			<when test="column_name =='NOTICE_ID'">
	    		NOTICE_ID
			</when>	
			<when test="column_name =='FAQ_ID'">
	    		FAQ_ID
			</when>			
			<when test="column_name =='DSCSN_ID'">
	    		DSCSN_ID
			</when>
			<when test="column_name =='ORG_SID'">
	    		ORG_SID
			</when>
			<when test="column_name =='EVENT_ID'">
	    		EVENT_ID
			</when>
			<when test="column_name =='CHNNL_ID'">
	    		CHNNL_ID
			</when>
			<when test="column_name =='CHNNL_TP'">
	    		CHNNL_TP
			</when>
			<when test="column_name =='CHNNL_BOARD_ID'">
	    		CHNNL_BOARD_ID
			</when>
			<when test="column_name =='VOTE_QUSTNR_ID'">
	    		VOTE_QUSTNR_ID
			</when>
			<when test="column_name =='QESTN_ID'">
	    		QESTN_ID
			</when>
			<when test="column_name =='ANSWER_ID'">
	    		ANSWER_ID
			</when>
			<when test="column_name =='PUSH_MESSAGE_ID'">
	    		PUSH_MESSAGE_ID
			</when>
			<when test="column_name =='BOARD_ID'">
	    		BOARD_ID
			</when>
			<when test="column_name =='PETIT_PROPSE_ID'">
	    		PETIT_PROPSE_ID
			</when>
			<when test="column_name =='DSPTCH_ID'">
	    		DSPTCH_ID
			</when>
			<when test="column_name =='USR_ID'">
	    		USR_ID
			</when>
			<otherwise>
				NOTICE_ID
			</otherwise>							
	 	</choose>
	</sql>	
	 
	
<!-- 1. 추가  쿼리 메소드 작성 -->
	<select id="kr.co.i2talk.sns.listSnsAttach" parameterType="Map" resultMap="attachResultMap">
		/* kr.co.i2talk.sns.listSnsAttach */	
		SELECT ATTACH_FILE_ID
			 , POST_ID
			 , USR_ID
			 , UP_ATTACH_FILE_ID
			 , ATTACH_TP_CD
			 , ATTACH_NM
			 , TAR_TP
			 , TAR_SUB_TP
			 , DESCRIP
			 , VERS
			 , USR_LINK
			 , VIDEO_LINK
			 , VIDEO_IMG_LINK
			 , IMG_MID
			 , IMG_WID
			 , IMG_HEI
			 , IMG_MID_WID
			 , IMG_MID_HEI
			 , CRT_USR_ID
			 , CRT_DTTM
			 , MOD_USR_ID
			 , MOD_DTTM
			 , PHYSCL_FILE_NM
			 , CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', PHYSCL_FILE_NM) PHYSCL_FILE_PATH
			 , CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', IMG_MID) PHYSCL_FILE_PATH_M
			 , FNL_YN
			 , FST_LOC
			 , IN_ALLW_YN
			 , OUT_ALLW_YN
			 , APRV_REQ_DTTM
			 , APRV_PRC_DTTM
			 , APRV_ST
			 , '' FILE_EXT
			 , CONV_YN /*변환 여부*/
			 , CONV_FILE_NM
			 , CONV_PHSCL_FILE_NM
			 , CONV_PAGE_CNT
		FROM
			SNS_ATTACH
		WHERE 1=1
			AND POST_ID = #{post_id}
			AND FNL_YN = 'Y'
		<if test='attach_tp_cd != null '>
			AND ATTACH_TP_CD = #{attach_tp_cd}
		</if>
		ORDER BY
			CASE
				WHEN ATTACH_TP_CD = 'FILE' THEN 0
				WHEN ATTACH_TP_CD = 'LINK' THEN 1
				WHEN ATTACH_TP_CD = 'PHOT' THEN 2
				ELSE 3
			END, ATTACH_NM
	</select>


	<select id="kr.co.i2talk.sns.listSnsAttachFromPost" parameterType="Map" resultMap="attachResultMap">
      /* kr.co.i2talk.sns.listSnsAttachFromPost */
      <!-- WITH FILE_EXT_ARR AS (
			SELECT CODE
			   FROM  CMMN_DETAIL_CODE 
			 WHERE CODE_ID='COM081'
		) -->
		SELECT ATTACH_FILE_ID
		     , POST_ID
		     , USR_ID
		     , UP_ATTACH_FILE_ID
		     , ATTACH_TP_CD
		     , ATTACH_NM
		     , TAR_TP
		     , TAR_SUB_TP
		     , DESCRIP
		     , VERS
		     , USR_LINK
		     , VIDEO_LINK
		     , VIDEO_IMG_LINK
		     , IMG_MID
		     , IMG_WID
		     , IMG_HEI
		     , IMG_MID_WID
		     , IMG_MID_HEI
		     , CRT_USR_ID
		     , CRT_DTTM
		     , MOD_USR_ID
		     , MOD_DTTM
		     , PHYSCL_FILE_NM
		     , CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', PHYSCL_FILE_NM) PHYSCL_FILE_PATH
			 , CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', IMG_MID) PHYSCL_FILE_PATH_M		     
		     , FNL_YN
		     , FST_LOC
		     , IN_ALLW_YN
		     , OUT_ALLW_YN
		     , APRV_REQ_DTTM
		     , APRV_PRC_DTTM
		     , APRV_ST
		     , '' FILE_EXT
			 , CONV_YN
			 , CONV_FILE_NM
			 , CONV_PHSCL_FILE_NM
			 , CONV_PAGE_CNT
		FROM SNS_ATTACH
		WHERE 1=1
		  AND FNL_YN = 'Y'
		  AND POST_ID = #{post_id}
		   <if test='attach_tp_cd != null '>
		   	AND ATTACH_TP_CD = #{attach_tp_cd}
		   </if>
		ORDER BY
			 ATTACH_NM
	</select>

	<select id="kr.co.i2talk.sns.viewSnsAttach" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.viewSnsAttach */
		SELECT
			  attach_file_id
			, post_id
			, usr_id
			, up_attach_file_id
			, attach_tp_cd
			, attach_nm
			, tar_tp
			, tar_sub_tp
			, descrip
			, vers
			, usr_link
			, video_link
			, video_img_link
			, img_mid
			, img_wid
			, img_hei
			, img_mid_wid
			, img_mid_hei
			, crt_usr_id
			, CASE WHEN crt_dttm IS NULL THEN '' ELSE SUBSTR(crt_dttm, 1,4) || '-' || SUBSTR(crt_dttm, 5,2) || '-' || SUBSTR(crt_dttm, 7,2) || ' ' || SUBSTR(crt_dttm, 9,2) || ':' || SUBSTR(crt_dttm, 11,2) END crt_dttm
      	    , mod_usr_id
      		, CASE WHEN mod_dttm IS NULL THEN '' ELSE SUBSTR(mod_dttm, 1,4) || '-' || SUBSTR(mod_dttm, 5,2) || '-' || SUBSTR(mod_dttm, 7,2) || ' ' || SUBSTR(mod_dttm, 9,2) || ':' || SUBSTR(mod_dttm, 11,2) END mod_dttm
			, physcl_file_nm
			, CASE WHEN POST_ID IS NULL THEN CONCAT('/',Lower(TAR_TP), '/', PHYSCL_FILE_NM)
			 	   WHEN TAR_TP = 'USER' THEN CONCAT('/',Lower(TAR_TP), '/', USR_ID, '/', PHYSCL_FILE_NM)
		      ELSE CASE (SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID) 
		       		WHEN 'CHNNLBBS' 			                     														    
		            THEN CONCAT('/',(SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID), '/', POST_ID, '/', PHYSCL_FILE_NM)
		            WHEN 'CHNNLEVENT' 			                     														    
		            THEN CONCAT('/',(SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID), '/', POST_ID, '/', PHYSCL_FILE_NM)
		            ELSE CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', PHYSCL_FILE_NM) 
		             END
		       END PHYSCL_FILE_PATH	
			, CASE WHEN POST_ID IS NULL THEN CONCAT('/',Lower(TAR_TP), '/', IMG_MID)
		      ELSE CASE (SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID) 
		       		WHEN 'CHNNLBBS' 			                     														    
		            THEN CONCAT('/',(SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID), '/', POST_ID, '/', IMG_MID)
		            WHEN 'CHNNLEVENT' 			                     														    
		            THEN CONCAT('/',(SELECT POST_TP FROM SNS_POST SP WHERE SP.POST_ID = A.POST_ID), '/', POST_ID, '/', IMG_MID)
		            ELSE CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', IMG_MID) 
		             END
		       END PHYSCL_FILE_PATH_M	
			, CONCAT(crt_usr_id) crt_usr_nm 
			, fnl_yn
			, CONCAT('user',a.crt_usr_id,(select photo_img_min from sns_user where USR_ID =  a.crt_usr_id)) as photo_img_min_path
			, fst_loc, in_allw_yn, out_allw_yn, aprv_req_dttm, aprv_prc_dttm, aprv_st
			, CONCAT(crt_usr_id) crt_usr_photo
			, CONCAT(crt_usr_id) crt_usr_photo_img
			, CONV_PHSCL_FILE_NM
			, CONCAT('/',Lower(TAR_TP), '/', POST_ID, '/', CONV_PHSCL_FILE_NM) conv_physcl_file_path
			, CONV_YN
		FROM
			sns_attach a
		WHERE
			attach_file_id = #{attach_file_id}
	</select>
	
	<select id="kr.co.i2talk.sns.viewSnsAttachMsg" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
		/* kr.co.i2talk.sns.viewSnsAttachMsg */
		SELECT
			   ATTACH_NM	
			 , CASE WHEN MSG_ID IS NULL THEN CONCAT('/message/', PHYSCL_FILE_NM)
			       ELSE CONCAT('/message/', MSG_ID, '/', PHYSCL_FILE_NM)
			       END PHYSCL_FILE_PATH				
		FROM
			BPA_MSG_ATTACH
		WHERE
			ATTACH_FILE_ID = #{attach_file_id}
	</select>

	<insert id="kr.co.i2talk.sns.insertSnsAttach"
		parameterType="Map">
/* kr.co.i2talk.sns.insertSnsAttach */
insert into sns_attach
	(attach_file_id, post_id, usr_id, up_attach_file_id, attach_tp_cd, attach_nm,
	descrip, vers, usr_link, video_link, video_img_link, img_mid, img_wid, img_hei, img_mid_wid, img_mid_hei,
	crt_usr_id, mod_usr_id,
	physcl_file_nm, fnl_yn, tar_tp, tar_sub_tp,
	conv_yn, conv_file_nm, conv_phscl_file_nm, conv_page_cnt,
	fst_loc, in_allw_yn, out_allw_yn, aprv_req_dttm, aprv_prc_dttm, aprv_st, CRT_DTTM, ORG_SID, mber_no)
values
	(#{attach_file_id}, #{post_id}, #{usr_id}, #{up_attach_file_id}, #{attach_tp_cd}, #{attach_nm},
	#{descrip}, #{vers}, #{usr_link}, #{video_link}, #{video_img_link}, #{img_mid}, #{img_wid}, #{img_hei}, #{img_mid_wid}, #{img_mid_hei},
	#{crt_usr_id}, #{mod_usr_id},
	#{physcl_file_nm}, #{fnl_yn}, #{tar_tp}, #{tar_sub_tp},
	#{conv_yn}, #{conv_file_nm}, #{conv_phscl_file_nm}, #{conv_page_cnt},
	#{fst_loc}, #{in_allw_yn}, #{out_allw_yn}, #{aprv_req_dttm}, #{aprv_prc_dttm}, #{aprv_st}, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'), #{org_sid}, #{mber_no})
	</insert>
	
	<insert id="kr.co.i2talk.sns.insertSnsAttachMsg"
		parameterType="Map">
/* kr.co.i2talk.sns.insertSnsAttachMsg */
INSERT INTO BPA_MSG_ATTACH
	(ATTACH_FILE_ID, MSG_ID, USR_ID, ATTACH_TP_CD, ATTACH_NM, PHYSCL_FILE_NM,
	 DESCRIP, IMG_MID, IMG_WID, IMG_HEI, IMG_MID_WID, IMG_MID_HEI, CREATE_ID, CREATE_DE)
VALUES
	(#{attach_file_id}, #{msg_id}, #{usr_id}, #{attach_tp_cd}, #{attach_nm},#{physcl_file_nm},
	#{descrip}, #{img_mid}, #{img_wid}, #{img_hei}, #{img_mid_wid}, #{img_mid_hei}, #{create_id}, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'))
	</insert>

	<update id="kr.co.i2talk.sns.updateSnsAttach"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsAttach */
UPDATE sns_attach SET
	post_id = #{post_id},
	usr_id = #{usr_id},
	up_attach_file_id = #{up_attach_file_id},
	attach_tp_cd = #{attach_tp_cd},
	attach_nm = #{attach_nm},
	tar_tp = #{tar_tp},
	tar_sub_tp = #{tar_sub_tp},
	descrip = #{descrip},
	vers = #{vers},
	usr_link = #{usr_link},
	video_link = #{video_link},
	video_img_link = #{video_img_link},
	img_mid = #{img_mid},
	img_wid = #{img_wid},
	img_hei = #{img_hei},
	img_mid_wid = #{img_mid_wid},
	img_mid_hei = #{img_mid_hei},
	mod_usr_id = #{mod_usr_id},
	mod_dttm = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s'),
	physcl_file_nm = #{physcl_file_nm},
	fnl_yn = #{fnl_yn},
	fst_loc = #{fst_loc},
	in_allw_yn = #{in_allw_yn},
	out_allw_yn = #{out_allw_yn},
	aprv_req_dttm = #{aprv_req_dttm},
	aprv_prc_dttm = #{aprv_prc_dttm},
	aprv_st = #{aprv_st}
WHERE
	attach_file_id = #{attach_file_id}
	</update>

	<delete id="kr.co.i2talk.sns.deleteSnsAttach"
		parameterType="Map">
		/* kr.co.i2talk.sns.deleteSnsAttach */
		DELETE FROM sns_attach 
		WHERE 1=1
		<if test="@i2c.cmm.util.StringUtil@isEmpty(attach_file_id) == false">
		  AND attach_file_id = #{attach_file_id}
		</if>
		<if test="@i2c.cmm.util.StringUtil@isEmpty(post_id) == false">
		  AND post_id = #{post_id}
		</if>
		<if test="@i2c.cmm.util.StringUtil@isEmpty(tar_tp) == false">
		  AND tar_tp = #{tar_tp}
		</if>
	</delete>
<!-- 1. 추가  쿼리 메소드 작성 끝 -->

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

	<select id="kr.co.i2talk.sns.listSnsAttachByUser"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsAttachByUser */
SELECT
	TOTAL_CNT
	, RN
	, a.attach_file_id
	, a.post_id
	, a.usr_id	
	, a.up_attach_file_id
	, a.attach_tp_cd
	, a.attach_nm
	, CASE WHEN A.TAR_TP = 'NOTICE' THEN (
	                                          SELECT 
	                                          	DECODE(NOTICE_RESCROM_TYPE,'S','RECS',A.TAR_TP) TAR_TP 
	                                          FROM NOTICE NT, SNS_POST SP 
	                                          WHERE NT.NOTICE_ID = SP.TAR_OBJ_ID 
	                                          AND SP.POST_ID = A.POST_ID
                                          )
      ELSE A.TAR_TP
      END TAR_TP
	, a.tar_sub_tp
	, a.descrip
	, a.vers
	, a.fnl_yn
	, a.usr_link
	, a.video_link
	, a.video_img_link
	, a.img_mid
	, a.img_wid
	, a.img_hei
	, a.img_mid_wid
	, a.img_mid_hei
	, a.crt_usr_id, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm                  -- 등록자
	, SUBSTR(a.crt_dttm, 1,4) || '-' || SUBSTR(a.crt_dttm, 5,2) || '-' || SUBSTR(a.crt_dttm, 7,2) || ' ' || SUBSTR(a.crt_dttm, 9,2) || ':' || SUBSTR(a.crt_dttm, 11,2) crt_dttm
	, FN_GET_USR_PHOTO(a.crt_usr_id) crt_usr_photo
	, FN_GET_USR_ORIGIN_PHOTO(a.crt_usr_id) crt_usr_photo_img
	, a.mod_usr_id, FN_GET_USR_NM(a.mod_usr_id) mod_usr_nm                  -- 수정자
	, a.mod_dttm
	, FN_GET_USR_PHOTO(a.mod_usr_id) mod_usr_photo
	, FN_GET_USR_ORIGIN_PHOTO(a.mod_usr_id) mod_usr_photo_img
	, a.physcl_file_nm
	, (CASE WHEN a.crt_usr_id = #{login_usr_id}  THEN 'Y' ELSE 'N' END) is_owner
	, a.fst_loc, a.in_allw_yn, a.out_allw_yn, a.aprv_req_dttm, a.aprv_prc_dttm, a.aprv_st
	, (select cntn from sns_post where post_id = a.post_id) ttl	
	, '' AS path
	, a.conv_yn /* 변환 여부 */
	, (SELECT TAR_OBJ_ID FROM SNS_POST WHERE POST_ID = A.POST_ID) TAR_OBJ_ID
FROM
	(
		SELECT
			COUNT(a.post_id) OVER() TOTAL_CNT ,
			ROW_NUMBER() OVER(ORDER BY crt_dttm desc) RN,
			a.*
		FROM
			sns_attach a
		WHERE 1=1
		AND a.fnl_yn = 'Y'
		<![CDATA[
		AND a.attach_tp_cd <> 'LINK' 
		]]> 
	<if test="@i2c.cmm.util.StringUtil@isEmpty(search_text) == false">
		AND a.attach_nm like '%' || upper(#{search_text}) ||'%'
	</if>
	<if test="search_mode == 'MY'">
		/** 내가 소유한 파일 **/
		AND a.crt_usr_id = #{login_usr_id}
	</if>
	<if test="search_mode == 'SHR'">
		/** 나와 공유한 파일 : 그룹 파일. **/
		AND a.crt_usr_id != #{login_usr_id}
		AND a.post_id IN (
						SELECT a.post_id
						FROM sns_post a,
							sns_users_by_group b
						WHERE a.tar_grp_id = b.grp_id
						AND b.usr_id = #{login_usr_id}
						UNION ALL
						SELECT 	b.post_id						
						FROM sns_follow a,
						 	sns_post b
						WHERE a.tar_usr_id = b.crt_usr_id 
						AND a.fllw_applr_id =  #{login_usr_id}
				)
	</if>
	<if test="search_mode == 'OTHER'">
		/** 팔로잉 유저일때만 그 유저가 등록한 파일 조회가능 **/
		AND a.crt_usr_id = #{crt_usr_id}
		AND a.post_id IN (
						SELECT 	b.post_id					
						FROM sns_follow a,
						 	sns_post b
						WHERE a.tar_usr_id = b.crt_usr_id 
						AND a.fllw_applr_id =  #{login_usr_id}
				)
	</if>
	<if test="search_mode == 'ALL'">
		/** 모든 파일 **/
		AND ( a.crt_usr_id = #{login_usr_id}
			OR a.post_id IN (
						SELECT a.post_id
						FROM sns_post a,
							sns_users_by_group b
						WHERE a.tar_grp_id = b.grp_id
							AND b.usr_id = #{login_usr_id}
						UNION ALL
						SELECT 	b.post_id						
						FROM sns_follow a,
						 	sns_post b
						WHERE a.tar_usr_id = b.crt_usr_id 
						AND a.fllw_applr_id =  #{login_usr_id}
				) )
	</if>
		ORDER BY a.crt_dttm desc
	) a
WHERE 	RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	</select>

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

	<select id="kr.co.i2talk.sns.listSnsAttachByGroup"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsAttachByGroup */
	SELECT *
	FROM
		(
SELECT
	ROW_NUMBER() OVER(ORDER BY case
				when attach_tp_cd = 'FILE' then 0
				when attach_tp_cd = 'LINK' then 1
				when attach_tp_cd = 'PHOT' then 2
				else 3
			end, a.crt_dttm desc) RN,
	attach_file_id, a.post_id, usr_id, up_attach_file_id,
	attach_tp_cd, attach_nm, tar_tp, tar_sub_tp,
	descrip, vers, fnl_yn, usr_link, video_link,
	video_img_link, img_mid, img_wid, img_hei, img_mid_wid,
	img_mid_hei, a.crt_usr_id, a.crt_dttm, a.mod_usr_id, a.mod_dttm, a.physcl_file_nm,
	b.TAR_GRP_ID
	, FN_GET_USR_NM(a.crt_usr_id) crt_usr_nm                  -- 등록자
	, COUNT(a.post_id) OVER() TOTAL_CNT
	, a.fst_loc, a.in_allw_yn, a.out_allw_yn, a.aprv_req_dttm, a.aprv_prc_dttm, a.aprv_st, b.cntn ttl
	, (
			CASE
				WHEN a.tar_tp = 'GROUP' THEN
					'/sns/groupHome.do?grp_id=' || (select tar_grp_id from sns_post where post_id = a.post_id)
				WHEN a.tar_tp = 'POST' THEN
					'/sns/userHome.do'				
				WHEN a.tar_tp = 'CFRC' THEN
					'/cfrc/selectCfrc.do?cfrc_id=' || (select tar_obj_id from sns_post where post_id = a.post_id)
				WHEN a.tar_tp = 'TASK' THEN
					'/task/taskView.do?task_id=' ||(select tar_obj_id from sns_post where post_id = a.post_id)				
				ELSE
					''
				END
	 ) path
FROM
	sns_attach a,
	sns_post b
WHERE 1=1
	and a.post_id = b.post_id
	and b.tar_grp_id = #{grp_id}
<if test='attach_tp_cd != null '>
	and attach_tp_cd = #{attach_tp_cd}
	and a.fnl_yn = 'Y'
</if>
<if test="search_text != null">
	AND a.attach_nm like '%' || upper(#{search_text}) ||'%'
</if>
)
<![CDATA[
	WHERE 	RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})
	]]>
ORDER BY
	case
		when attach_tp_cd = 'FILE' then 0
		when attach_tp_cd = 'LINK' then 1
		when attach_tp_cd = 'PHOT' then 2
		else 3
	end, crt_dttm desc
	</select>

	<select id="kr.co.i2talk.sns.listSnsAttachByTarObjId"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsAttachByTarObjId */
SELECT
	a.attach_file_id, a.post_id, a.usr_id, a.up_attach_file_id,
	a.attach_tp_cd, a.attach_nm, a.tar_tp, a.tar_sub_tp,
	a.descrip, a.vers, a.usr_link, a.video_link,
	a.video_img_link, a.img_mid, a.img_wid, a.img_hei, a.img_mid_wid,
	a.img_mid_hei, a.crt_usr_id, a.crt_dttm, a.mod_usr_id, a.mod_dttm, a.physcl_file_nm,
	a.fst_loc, a.in_allw_yn, a.out_allw_yn, a.aprv_req_dttm, a.aprv_prc_dttm, a.aprv_st,
	b.tar_obj_id,
	a.conv_req_dttm, a.conv_cplt_dttm, a.conv_yn, a.conv_page_cnt,
	CONCAT(#{i2Converter_file_api}, 'file_path=/cfrc/', A.POST_ID, '/') conv_file_api, -- 변환기용
	CONCAT(#{i2Converter_file_api_ntCfrc}, 'file_path=/cfrc/', A.POST_ID, '/') conv_file_api_ntcfrc, -- NT 변환기용
	CONCAT('/',Lower(A.TAR_TP), '/', A.POST_ID, '/', A.PHYSCL_FILE_NM) physcl_file_path -- 지우면 안됨	
FROM
	sns_attach a,
	sns_post b
WHERE 1=1
	AND a.post_id = b.post_id
	AND b.tar_obj_id = #{tar_obj_id}
	AND a.fnl_yn = 'Y'
	<if test='attach_tp_cd != null '>
		AND a.attach_tp_cd = #{attach_tp_cd}
	</if>
	<if test='tar_tp != null '>
		AND a.tar_tp = #{tar_tp}
	</if>
	<if test='tar_sub_tp != null '>
		AND a.tar_sub_tp = #{tar_sub_tp}
	</if>
	<if test='post_tp != null '>
		AND b.post_tp = #{post_tp}
	</if>
ORDER BY a.crt_dttm desc
	</select>

	<select id="kr.co.i2talk.sns.listSnsAttachByVersion"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsAttachByVersion - 첨부파일 버젼 정보.*/
SELECT 
	AA.*
	, FN_GET_USR_NM(AA.crt_usr_id) crt_usr_nm                  -- 등록자
	, FN_GET_USR_PHOTO(AA.crt_usr_id) crt_usr_photo
	, FN_GET_USR_ORIGIN_PHOTO(AA.crt_usr_id) crt_usr_photo_img
	, FN_GET_USR_NM(AA.mod_usr_id) mod_usr_nm                  -- 수정자
	, FN_GET_USR_PHOTO(AA.mod_usr_id) mod_usr_photo
	, FN_GET_USR_ORIGIN_PHOTO(AA.mod_usr_id) mod_usr_photo_img
	, (CASE WHEN AA.crt_usr_id = #{crt_usr_id}  THEN 'Y' ELSE 'N' END) is_owner
	, FN_GET_IMG_NM('user',AA.crt_usr_id,(select photo_img_min from sns_user where USR_ID =  AA.crt_usr_id)) as photo_img_min_path
FROM (	
	SELECT
		a.attach_file_id
		, a.post_id
		, a.usr_id
		, a.up_attach_file_id
		, a.attach_tp_cd
		, a.attach_nm
		, a.tar_tp
		, a.tar_sub_tp
		, a.descrip, vers
		, a.usr_link
		, a.video_link
		, a.video_img_link
		, a.img_mid
		, a.img_wid
		, a.img_hei
		, a.img_mid_wid
		, a.img_mid_hei
		, a.crt_usr_id
		, CASE WHEN crt_dttm IS NULL THEN '' ELSE SUBSTR(a.crt_dttm, 1,4) || '-' || SUBSTR(a.crt_dttm, 5,2) || '-' || SUBSTR(a.crt_dttm, 7,2) || ' ' || SUBSTR(a.crt_dttm, 9,2) || ':' || SUBSTR(a.crt_dttm, 11,2) END crt_dttm
        , a.mod_usr_id
		, a.mod_dttm
		, a.physcl_file_nm
		, a.fst_loc, a.in_allw_yn, a.out_allw_yn, a.aprv_req_dttm, a.aprv_prc_dttm, a.aprv_st
	FROM sns_attach a
	START WITH a.attach_file_id = #{attach_file_id}
	CONNECT BY PRIOR a.up_attach_file_id = a.attach_file_id
	ORDER BY vers asc
) AA
	</select>

	<update id="kr.co.i2talk.sns.updateSnsAttachByInfo"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsAttachByInfo */
UPDATE sns_attach SET
	attach_nm = #{attach_nm},
	descrip = #{descrip},
	mod_usr_id = #{mod_usr_id},
	mod_dttm = #{mod_dttm}
WHERE
	attach_file_id = #{attach_file_id}
	</update>

	<select id="kr.co.i2talk.sns.listSnsAttachByCfrcDoc"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
/* kr.co.i2talk.sns.listSnsAttachByCfrcDoc */
select
	sa.*
from sns_attach sa
where 1=1
and sa.post_id = #{post_id}
and sa.tar_tp = 'CFRC'
and sa.tar_sub_tp = 'DOC'
and sa.conv_yn = 'Y'
order by sa.crt_dttm desc, sa.attach_nm asc
	</select>

	<update id="kr.co.i2talk.sns.updateSnsAttacheByFileConvYn"
		parameterType="Map">
/* kr.co.i2talk.sns.updateSnsAttacheByFileConvYn */
UPDATE sns_attach SET
	conv_cplt_dttm = #{conv_cplt_dttm},				/* 변환완료일시 */
	conv_yn = #{conv_yn},							/* 변환완료여부 */
	conv_page_cnt = #{conv_page_cnt}				/* 변환페이지수 */
WHERE
	attach_file_id = #{attach_file_id}
	</update>
	
	<select id="kr.co.i2talk.sns.listUserThumbnail"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.listUserThumbnail */
	select * 
	from
	(SELECT	
		ROW_NUMBER() OVER(ORDER BY sa.aprv_req_dttm desc) RN,	
		COUNT(sa.attach_file_id) OVER() TOTAL_CNT,
		sa.attach_file_id, sa.post_id, sa.usr_id, sa.up_attach_file_id,
		sa.attach_tp_cd, sa.attach_nm, sa.tar_tp, sa.tar_sub_tp,
		sa.descrip, sa.vers, sa.usr_link, sa.video_link,
		sa.video_img_link, sa.img_mid, sa.img_wid, sa.img_hei, sa.img_mid_wid,
		sa.img_mid_hei, sa.crt_usr_id, sa.crt_dttm, sa.mod_usr_id, sa.mod_dttm, sa.physcl_file_nm,		
		CONCAT('/',LOWER(SA.TAR_TP), '/', SA.POST_ID, '/', SA.PHYSCL_FILE_NM) PHYSCL_FILE_PATH,
		CONCAT('/',LOWER(SA.TAR_TP), '/', SA.POST_ID, '/', SA.IMG_MID) PHYSCL_FILE_PATH_M,
		sa.fnl_yn,
		sa.fst_loc, sa.in_allw_yn, sa.out_allw_yn, sa.aprv_req_dttm, sa.aprv_prc_dttm, sa.aprv_st,
		su.usr_nm,
		sp.post_tp,
		sp.tar_obj_id,
		sp.cntn,
		sp.like_cnt,
		sp.reply_cnt,
		
		(
			CASE
				WHEN (SELECT count(*) FROM sns_like it WHERE it.post_id = sp.post_id AND it.like_usr_id =  #{usr_id}) > 0 THEN
					'Y'
				ELSE
					'N'
				END
		) like_my
	FROM
		sns_attach sa, sns_user su, sns_post sp
	WHERE 1=1	
	and sa.usr_id = su.usr_id
	and sa.post_id = sp.post_id
	and sa.fnl_yn = 'Y'
	and sa.attach_tp_cd in ('PHOT','FILE') 
	and substr(sa.attach_nm,(instr(sa.attach_nm, '.')+1),4) in ('jpg','png','jpeg')
	and	sa.usr_id =  #{usr_id}
	)
	where 1=1
	<if test="@i2c.cmm.util.StringUtil@isEmpty(post_search_text) == true">
		and RN BETWEEN ((#{page} - 1) * #{limit}) + 1 AND (#{page} * #{limit})		
	</if>	
	<if test="@i2c.cmm.util.StringUtil@isEmpty(post_search_text) == false">
		AND cntn like '%' || #{post_search_text} ||'%'		
	</if>	
	ORDER BY
	<if test="sort_type == 'CRT'">
		crt_dttm desc
	</if>
	<if test="sort_type == 'MOD'">
		mod_dttm desc
	</if> 	
	</select>

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

<select id="kr.co.i2talk.sns.file.listSnsFile" parameterType="Map" resultMap="fileVO" >
	/* kr.co.i2talk.sns.file.listSnsFile 파일 다운로드 */	
	SELECT 
        A.ATTACH_FILE_ID
      , A.POST_ID
      , A.USR_ID
      , A.UP_ATTACH_FILE_ID
      , A.ATTACH_TP_CD
      , A.ATTACH_NM
      , CASE
          WHEN LENGTH(SUBSTR(A.ATTACH_NM, 0,INSTR(A.ATTACH_NM, '.')-1)) >= 6  
          THEN SUBSTR(A.ATTACH_NM, 0,6) || '..'     
          ELSE A.ATTACH_NM    
        END ATTACH_CUT_NM	 
      , A.DESCRIP
      , A.VERS
      , A.USR_LINK
      , A.VIDEO_LINK
      , A.VIDEO_IMG_LINK
      , A.IMG_MID
      , A.IMG_WID
      , A.IMG_HEI
      , A.IMG_MID_WID
      , A.IMG_MID_HEI
      , A.CRT_USR_ID
      , A.CRT_DTTM
      , A.MOD_USR_ID
      , A.MOD_DTTM
      , A.PHYSCL_FILE_NM      
      <choose>
      	<when test="tar_tp == 'CHNNLB' || tar_tp == 'CHNNLM'">
      	, CONCAT('/CHNNL/', A.POST_ID, '/', A.PHYSCL_FILE_NM) PHYSCL_FILE_PATH
	    , CONCAT('/CHNNL/', A.POST_ID, '/', A.IMG_MID) PHYSCL_FILE_PATH_M
      	</when>
      	<otherwise>
      	, CONCAT('/',LOWER(A.TAR_TP), '/', A.POST_ID, '/', A.PHYSCL_FILE_NM) PHYSCL_FILE_PATH
	    , CONCAT('/',LOWER(A.TAR_TP), '/', A.POST_ID, '/', A.IMG_MID) PHYSCL_FILE_PATH_M
      	</otherwise>
      </choose>      
      , A.FNL_YN
      , A.TAR_TP
      , A.TAR_SUB_TP	      
      , A.CONV_REQ_DTTM
      , A.CONV_CPLT_DTTM
      , A.CONV_YN
      , A.CONV_FILE_NM
      , A.CONV_PHSCL_FILE_NM
      , A.CONV_PAGE_CNT
      , A.FST_LOC
      , A.IN_ALLW_YN
      , A.OUT_ALLW_YN
      , A.APRV_REQ_DTTM
      , A.APRV_PRC_DTTM
      , A.APRV_ST
	FROM  SNS_ATTACH A
	    , <include refid="table_param"/>  B
	    , SNS_POST C
	WHERE C.POST_ID = A.POST_ID
	  AND B.<include refid="column_param"/> = C.TAR_OBJ_ID
	  AND C.TAR_OBJ_ID = #{tar_obj_id}
	  AND A.TAR_TP != 'POST'
	   <if test='post_tp != null '>
			AND C.POST_TP = #{post_tp}
	   </if>
	   <if test='tar_tp != null '>
			AND A.TAR_TP = #{tar_tp}
	   </if>	   		   
	   <if test="tar_sub_tp =='DOC' || tar_sub_tp =='MOV' || tar_sub_tp =='REST'">
    		AND	A.TAR_SUB_TP = #{tar_sub_tp}
		</if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(key_post_ids) == false">
	   	  AND	A.TAR_SUB_TP IN 
		  <foreach collection="key_post_ids" item="item" index="index"  open="(" separator="," close=")">
					#{item}
		  </foreach>
	   </if>  
</select> 

<select id="kr.co.i2talk.sns.file.listSnsPopFile" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.sns.file.listSnsPopFile */
		SELECT 
	        A.ATTACH_FILE_ID
	      , A.POST_ID
	      , A.USR_ID
	      , A.UP_ATTACH_FILE_ID
	      , A.ATTACH_TP_CD
	      , A.ATTACH_NM
	       , CASE
	          WHEN LENGTH(SUBSTR(A.ATTACH_NM, 0,INSTR(A.ATTACH_NM, '.', -1)-1)) >= 6  
	          THEN SUBSTR(A.ATTACH_NM, 0,6) || '..'     
	          ELSE A.ATTACH_NM    
	        END ATTACH_CUT_NM
	       ,'' FILE_EXT
	      , A.DESCRIP
	      , A.VERS
	      , A.USR_LINK
	      , A.VIDEO_LINK
	      , A.VIDEO_IMG_LINK
	      , A.IMG_MID
	      , A.IMG_WID
	      , A.IMG_HEI
	      , A.IMG_MID_WID
	      , A.IMG_MID_HEI
	      , A.CRT_USR_ID
	      , A.CRT_DTTM
	      , A.MOD_USR_ID
	      , A.MOD_DTTM
	      , A.PHYSCL_FILE_NM
	      , CONCAT('/',LOWER(A.TAR_TP), '/', A.POST_ID, '/', A.PHYSCL_FILE_NM) PHYSCL_FILE_PATH
	  	  ,	CONCAT('/',LOWER(A.TAR_TP), '/', A.POST_ID, '/', A.IMG_MID) PHYSCL_FILE_PATH_M
	      , A.FNL_YN
	      , A.TAR_TP
	      , A.TAR_SUB_TP
	      , FN_GET_MSFRTN_CODE_NM(A.TAR_SUB_TP) TAR_SUB_TP_NM
	      , A.CONV_REQ_DTTM
	      , A.CONV_CPLT_DTTM
	      , A.CONV_YN
	      , A.CONV_FILE_NM
	      , A.CONV_PHSCL_FILE_NM
	      , A.CONV_PAGE_CNT
	      , A.FST_LOC
	      , A.IN_ALLW_YN
	      , A.OUT_ALLW_YN
	      , A.APRV_REQ_DTTM
	      , A.APRV_PRC_DTTM
	      , A.APRV_ST
	      , C.TAR_OBJ_ID
	FROM  SNS_ATTACH A
	    , <include refid="table_param"/>  B
	    , SNS_POST C
	WHERE C.POST_ID = A.POST_ID
	  AND B.<include refid="column_param"/> = C.TAR_OBJ_ID
	  AND C.TAR_OBJ_ID = #{tar_obj_id}
	  AND A.TAR_TP != 'POST'
	   
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(key_post_ids) == false">
	   	  AND	A.TAR_SUB_TP IN 
		  <foreach collection="key_post_ids" item="item" index="index"  open="(" separator="," close=")">
			#{item}
		  </foreach>
	   </if>    	
    
</select> 

<select id="kr.co.i2talk.sns.file.listMsgFile" parameterType="Map" resultMap="fileVO" >
	/* kr.co.i2talk.sns.file.listMsgFile 파일 다운로드 */	
	SELECT 
        A.ATTACH_FILE_ID
      , A.POST_ID
      , A.USR_ID
      , A.UP_ATTACH_FILE_ID
      , A.ATTACH_TP_CD
      , A.ATTACH_NM
      , CASE
          WHEN LENGTH(SUBSTR(A.ATTACH_NM, 0,INSTR(A.ATTACH_NM, '.')-1)) >= 6  
          THEN SUBSTR(A.ATTACH_NM, 0,6) || '..'     
          ELSE A.ATTACH_NM    
        END ATTACH_CUT_NM	 
      , A.DESCRIP
      , A.VERS
      , A.USR_LINK
      , A.VIDEO_LINK
      , A.VIDEO_IMG_LINK
      , A.IMG_MID
      , A.IMG_WID
      , A.IMG_HEI
      , A.IMG_MID_WID
      , A.IMG_MID_HEI
      , A.CRT_USR_ID
      , A.CRT_DTTM
      , A.MOD_USR_ID
      , A.MOD_DTTM
      , A.PHYSCL_FILE_NM      
      , CONCAT('/',LOWER(A.TAR_TP), '/', A.USR_ID, '/', A.PHYSCL_FILE_NM) PHYSCL_FILE_PATH
	  , CONCAT('/',LOWER(A.TAR_TP), '/', A.USR_ID, '/', A.IMG_MID) PHYSCL_FILE_PATH_M
      , A.FNL_YN
      , A.TAR_TP
      , A.TAR_SUB_TP	      
      , A.CONV_REQ_DTTM
      , A.CONV_CPLT_DTTM
      , A.CONV_YN
      , A.CONV_FILE_NM
      , A.CONV_PHSCL_FILE_NM
      , A.CONV_PAGE_CNT
      , A.FST_LOC
      , A.IN_ALLW_YN
      , A.OUT_ALLW_YN
      , A.APRV_REQ_DTTM
      , A.APRV_PRC_DTTM
      , A.APRV_ST
	FROM  SNS_ATTACH A
	    , <include refid="table_param"/>  B	    
	WHERE A.USR_ID = B.USR_ID
	   <if test='tar_obj_id != null'>
	 		AND A.USR_ID = #{tar_obj_id} 
	   </if>
	   <if test='tar_tp != null'>
			AND A.TAR_TP = #{tar_tp}
	   </if>	   		   
	   <if test="tar_sub_tp != null">
    		AND	A.TAR_SUB_TP = #{tar_sub_tp}
	   </if>	   
</select> 

   <update id="kr.co.i2talk.sns.updateCompleteConvert"  parameterType="i2c.biz.file.vo.FileConvertVO">
	/* kr.co.i2talk.sns.updateCompleteConvert 파일 변환 처리 여부 업데이트 */
		UPDATE SNS_ATTACH
	   	   SET CONV_YN ='Y'
   	      <if test="conv_phscl_file_nm != null and conv_phscl_file_nm !=''">
   	       , CONV_PHSCL_FILE_NM =  #{conv_phscl_file_nm} 
   	      </if>
   	      <if test="conv_total_page != null and conv_total_page !=''">
   	       , CONV_PAGE_CNT =  #{conv_total_page} 
   	      </if>
   	       , CONV_CPLT_DTTM =  DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s') 
   	       , CONV_REQ_DTTM =  DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
		WHERE ATTACH_FILE_ID = #{file_id}
	</update>	
	
	<update id="kr.co.i2talk.sns.updateSnsAttacheByFileConverterResult"
		parameterType="Map">
	/* kr.co.i2talk.sns.updateSnsAttacheByFileConverterResult */
	UPDATE sns_attach SET
		conv_cplt_dttm = #{conv_cplt_dttm},				/* 변환완료일시 */
		conv_yn = #{conv_yn}							/* 변환완료여부 */
	WHERE
	    post_id = #{post_id}
	AND	physcl_file_nm = #{physcl_file_nm}
	</update>
	

</mapper>
