<?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.listSnsClient"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.listSnsClient */
SELECT
	*
FROM
(
	SELECT
		COUNT(a.client_id) OVER() TOTAL_CNT,
		ROW_NUMBER() OVER(ORDER BY a.crt_dttm desc, client_nm) RN,
		client_id, client_passwd, client_nm,
		client_tp_cd, FN_GET_CODE_NM('CLIENT_TP_CD', client_tp_cd) client_tp_nm,
		reg_dttm, expr_dttm,
		usr_del_aval_yn,
		gcm_api_key, apns_cert_file, apns_cert_passwd,
		crt_usr_id, FN_GET_USR_NM(crt_usr_id) crt_usr_nm, crt_dttm, mod_usr_id, mod_dttm
	FROM
		sns_client a
	WHERE 1=1
	<if test="@i2c.cmm.util.StringUtil@isEmpty(client_nm) == false">
		and a.client_nm like '%' || #{client_nm} || '%'
	</if>
	<if test="search_type == 'ING'">
		and a.expr_dttm is null
	</if>
	<if test="search_type == 'END'">
		and a.expr_dttm is not null
	</if>
	ORDER BY
		crt_dttm desc, client_nm
)
	</select>

	<select id="kr.co.i2talk.admin.viewSnsClient"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.viewSnsClient */
	SELECT
	   	  CLIENT_ID
	   	, CLIENT_PASSWD
	   	, CLIENT_NM
	   	, CLIENT_TP_CD
	   	, FN_GET_CODE_NM('CLIENT_TP_CD', CLIENT_TP_CD) CLIENT_TP_NM
	   	, REG_DTTM
	   	, EXPR_DTTM
	   	, USR_DEL_AVAL_YN
	   	, GCM_API_KEY
	   	, APNS_CERT_FILE
	   	, APNS_CERT_PASSWD
	   	, CRT_USR_ID
	   	, FN_GET_USR_NM(CRT_USR_ID) CRT_USR_NM
	   	, CRT_DTTM
	   	, MOD_USR_ID
	   	, MOD_DTTM
	   	, MBER_NO
	   	, ORG_SID
	FROM SNS_CLIENT
   WHERE 1=1
	 <if test="@i2c.cmm.util.StringUtil@isEmpty(client_id) == false">	
     AND CLIENT_ID = #{client_id}
     </if>
     <if test="@i2c.cmm.util.StringUtil@isEmpty(mber_no) == false">	
     AND MBER_NO = #{mber_no}
     </if>
     <if test="@i2c.cmm.util.StringUtil@isEmpty(org_sid) == false">	
     AND ORG_SID = #{org_sid}
     </if>
	
	</select>

	<insert id="kr.co.i2talk.admin.insertSnsClient"
		parameterType="Map">
/* kr.co.i2talk.admin.insertSnsClient */
INSERT INTO SNS_CLIENT (
	  CLIENT_ID, CLIENT_PASSWD, CLIENT_NM, CLIENT_TP_CD, REG_DTTM, EXPR_DTTM, USR_DEL_AVAL_YN
	, GCM_API_KEY, APNS_CERT_FILE, APNS_CERT_PASSWD, MBER_NO, ORG_SID, USERNAME, PASSWORD, GRANT_TYPE, SEND_URL, LOGIN_URL, CRT_USR_ID, CRT_DTTM, MOD_USR_ID)
VALUES (
	#{client_id}, #{client_passwd}, #{client_nm}, #{client_tp_cd}, #{reg_dttm}, #{expr_dttm}, #{usr_del_aval_yn}
  , #{gcm_api_key}, #{apns_cert_file}, #{apns_cert_passwd}, #{mber_no}, #{org_sid}, #{username}, #{password}, #{grant_type}, #{send_url}, #{login_url}, #{crt_usr_id}, #{crt_dttm}, #{mod_usr_id})
	</insert>

	<update id="kr.co.i2talk.admin.updateSnsClient"
		parameterType="Map">
/* kr.co.i2talk.admin.updateSnsClient */
UPDATE SNS_CLIENT SET
	  CLIENT_ID 	= #{client_id}		
	, CLIENT_NM 	= #{client_nm}	
 	, CLIENT_PASSWD = #{client_passwd}	
	, MBER_NO		= #{mber_no}	
	, USERNAME		= #{username}	
	, PASSWORD		= #{password}	
	, GRANT_TYPE	= #{grant_type}	
	, SEND_URL		= #{send_url}	
WHERE
	ORG_SID = #{org_sid}
	</update>

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

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

	<update id="kr.co.i2talk.admin.revokeClient"
		parameterType="Map">
/* kr.co.i2talk.admin.revokeClient */
UPDATE sns_client SET
	expr_dttm = #{expr_dttm},
	mod_usr_id = #{mod_usr_id},
	mod_dttm = #{mod_dttm}
WHERE
	client_id = #{client_id}
	</update>
	
	<select id="kr.co.i2talk.admin.selectUserClientInfo"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.selectUserClientInfo */
  SELECT
		 SC.CLIENT_ID
	   , SC.CLIENT_PASSWD
	   , SC.USERNAME
	   , SC.PASSWORD	
	   , SC.GRANT_TYPE   
	   , SC.SEND_URL
	FROM SNS_USER SU 
	   , SNS_CLIENT SC
   WHERE SU.MBER_NO = SC.MBER_NO
     AND SU.LOGIN_ID = #{login_id}
     <if test="@i2c.cmm.util.StringUtil@isEmpty(org_sid) == false">	
     AND SC.ORG_SID = #{org_sid}
     </if>
     LIMIT 1
	</select>

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

	<select id="kr.co.i2talk.admin.selectUserClientInfoByOrgid" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.admin.selectUserClientInfoByOrgid */
	  SELECT
			 SC.CLIENT_ID
		   , SC.CLIENT_PASSWD
		   , SC.USERNAME
		   , SC.PASSWORD	
		   , SC.GRANT_TYPE   
		   , SC.SEND_URL
		   , SC.LOGIN_URL
		FROM SNS_CLIENT SC
	   WHERE SC.ORG_SID = #{org_sid}
	     LIMIT 1
	</select>

</mapper>
