<?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.login">
    <select id="kr.co.i2talk.login.login"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.login.login */
	SELECT 
		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,	
		ADVRTS_ID,
		AUTH_CODE,		
		CONN_IP
		, IFNULL(LOGIN_FAIL_COUNT, 0) LOGIN_FAIL_COUNT
		, SNS_SE
		, ORG_SID			  						
		, A.MBER_NO			 
		, A.APPROVAL
	FROM
		SNS_USER A LEFT OUTER JOIN COMTNEMPLYRSCRTYESTBS B 
		 					  ON SCRTY_DTRMN_TRGET_ID = USR_ID	         
	WHERE 1=1
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(login_id) == false">
	  	AND LOGIN_ID = #{login_id}
	  </if>
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(sns_se) == false">
	  	AND SNS_SE = #{sns_se} 
	  </if>
	   <if test="@i2c.cmm.util.StringUtil@isEmpty(usr_id) == false">
	  	AND USR_ID = #{usr_id} 
	  </if>
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(sbscrb_id) == false">
	  	AND SBSCRB_ID = #{sbscrb_id} 
	  </if>
	  <if test="@i2c.cmm.util.StringUtil@isEmpty(tar_usr_id) == false">
	  	AND USR_ID = #{tar_usr_id} 
	  </if>
	  LIMIT 1
    </select>

    <select id="kr.co.i2talk.login.viewSnsUserByToken"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.login.viewSnsUserByToken */
SELECT 
	a.usr_id, 
	b.access_token_id, b.tar_usr_id, b.client_id, b.access_token, b.refresh_token, b.iss_dttm, b.expr_dttm 
FROM
	sns_user a, sns_access_token b
WHERE
	a.usr_id = b.tar_usr_id
AND b.access_token = #{access_token}
    </select>

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

	<update id="kr.co.i2talk.login.updateLastConnectDateTime"
		parameterType="Map">
/* kr.co.i2talk.login.updateLastConnectDateTime */
UPDATE sns_user SET
	lst_login_dttm = #{lst_login_dttm}
WHERE
	usr_id = #{usr_id}
    </update>
    
    <select id="kr.co.i2talk.login.viewSnsSystemConfig"
		parameterType="Map"
		resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.login.viewSnsSystemConfig */
SELECT 
	*
FROM
	sns_system_config
WHERE
	rownum = 1
    </select>
	
	<select id="kr.co.i2talk.login.checkDuplicateEmail" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.login.checkDuplicateEmail */
	SELECT 
		usr_id
	FROM
		sns_user
	WHERE
		email = #{email}
		<if test="usrId != null and usrId != ''">
			and usr_id != #{usrId}
		</if>
	</select>
    
    <update id="kr.co.i2talk.login.updateLoginFailCount" parameterType="Map">
	    /* [kr.co.i2talk.login.updateLoginFailCount] 로그인 실패 카운트 */
	    UPDATE SNS_USER
	    <choose>
	        <when test="login_fail_count != null">
	        SET LOGIN_FAIL_COUNT = IFNULL(LOGIN_FAIL_COUNT, 0) + 1
	        </when>
	        <otherwise>
	        SET LOGIN_FAIL_COUNT = 0
	        </otherwise>
	    </choose>
	    WHERE USR_ID                    =    #{usr_id}
	    <if test="login_fail_count != null">
	      AND IFNULL(LOGIN_FAIL_COUNT, 0) <![CDATA[<]]> #{login_fail_count}
	    </if>
	</update>
	
	<update id="kr.co.i2talk.login.updateUseStop" parameterType="Map">
	    /* [kr.co.i2talk.login.updateUseStop] 유저 사용 중지 */
	    UPDATE SNS_USER
	       SET USE_STOP_YN   = 'Y'
	         , USE_STOP_DTTM = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
	     WHERE USR_ID      = #{usr_id}
	       AND USE_STOP_YN = 'N'
	</update>
	
	<select id="kr.co.i2talk.login.lostIdConfirm" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
	/* kr.co.i2talk.login.lostIdConfirm */
	SELECT 
		LOGIN_ID
	FROM
		SNS_USER
	WHERE
		USR_NM  = #{usr_nm}
	  AND
		PHN_NUM = #{phn_num}
	  AND
		EMAIL   = #{email}
	</select>
	
	<update id="kr.co.i2talk.login.setUseStop" parameterType="Map">
	    /* [kr.co.i2talk.login.setUseStop] 사용중지(회원탈퇴) */
	    UPDATE SNS_USER
	       SET USE_STOP_YN   = 'Y'
	         , USE_STOP_DTTM = DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s')
	     WHERE USR_ID      = #{usr_id}
	</update>
	
	<update id="kr.co.i2talk.login.updateUserDeviceId" parameterType="Map">
	    /* [kr.co.i2talk.login.updateUserDeviceId] 사용자 디바이스ID 업데이트 */
	    UPDATE SNS_USER
	       SET ADVRTS_ID   = #{device_id}	         
	     WHERE USR_ID      = #{usr_id}	      
	</update>
</mapper>
