﻿<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <statements>
        
        <!-- 사용자 계정의 정합성 체크 -->
        <select id="Sys.ValidateUser" parameterClass="SysDto" resultClass="SysDto">
            SELECT CASE A.Pwd WHEN #Sy_UserPwd# THEN 'S' ELSE 'X' END AS Sy_Valid
              FROM (
                    SELECT ks_passwd AS Pwd
					  FROM c_kan_sabun
					 WHERE 1=1
					   AND ks_gubun = #Sy_CompanyCd#
					   AND ks_id = #Sy_UserId#
					   AND RTRIM(ISNULL(ks_edate,'')) = ''                    
                     union all
                    SELECT ks_passwd AS Pwd
					  FROM c_kan_user
					 WHERE 1=1
					   AND ks_gubun = #Sy_CompanyCd#
					   AND ks_id = #Sy_UserId#
					   AND RTRIM(ISNULL(ks_edate,'')) = ''
                   ) A    
             WHERE 1 = 1  
        </select>

        <!-- 사용자 계정 정보를 추출하는 쿼리. UserAccount 생성 시에 이용 함.-->
        <select id="Sys.GetUserInfo" parameterClass="SysDto" resultClass="SysDto">
            SELECT A.UserGb AS Sy_UserGb
                 , A.CompanyCd AS Sy_CompanyCd
                 , A.UserId AS Sy_UserId
                 , A.UserName AS Sy_UserName
                 , A.DeptCode AS Sy_DeptCode
                 , A.DeptName AS Sy_DeptName
				 , a.SvCode AS Sy_SvCode
				 , a.SvName AS Sy_SvName
                 , CONVERT(VARCHAR,A.UserChk) AS Sy_UserChk
				         , A.UserEis AS Sy_UserEis
				         , A.UserPwd AS Sy_UserPwd
                 , a.StoreCode as Sy_StoreCode
				 , a.StoreType as Sy_StoreType
              FROM (SELECT 'A' AS UserGb 
                         , A.ks_gubun AS CompanyCd
						 , a.ks_id AS UserId
                         , A.ks_name AS UserName
                         , A.ks_busor AS DeptCode
                         , ISNULL(B.bu_name,'') AS DeptName
                         , '' AS UserChk 
						 , '' AS UserEis
						 , A.ks_passwd AS UserPwd
						 , '' AS SvCode
						 , '' as SvName
                         , a.ks_id as StoreCode
						 , '999' as StoreType
                      FROM c_kan_sabun A
                           LEFT OUTER JOIN c_busor B
                               ON A.ks_gubun = B.bu_gubun
                              AND A.ks_busor = B.bu_code  
                              AND B.bu_sdate   = (SELECT MAX(BM.bu_sdate)
                                                  FROM c_busor BM
                                                 WHERE 1 = 1
                                                   AND BM.bu_gubun   = B.bu_gubun
                                                   AND BM.bu_code   = B.bu_code
                                                   AND BM.bu_edate <![CDATA[<=]]> CONVERT(VARCHAR(8),GETDATE(),112) ) 
                     WHERE 1 = 1                                                                                
                       AND A.ks_gubun = #Sy_CompanyCd# 
                       AND A.ks_id  = #Sy_UserId#
                       AND RTRIM(ISNULL(A.ks_edate,'')) = ''
					 UNION ALL
					SELECT 'B' AS UserGb 
                         , A.ks_gubun AS CompanyCd
						 , a.StoreCode AS UserId
                         , A.ks_name AS UserName
                         , A.ks_busor AS DeptCode
                         , ISNULL(B.bu_name,'') AS DeptName
                         , '' AS UserChk 
						 , '' AS UserEis
						 , A.ks_passwd AS UserPwd
						 , C.mancode AS SvCode
						 , d.ks_name as SvName
                         , A.KS_ID AS StoreCode
						 , c.[type] as StoreType
                      FROM c_kan_user A
                           LEFT OUTER JOIN c_busor B
                               ON A.ks_gubun = B.bu_gubun
                              AND A.ks_busor = B.bu_code  
                              AND B.bu_sdate   = (SELECT MAX(BM.bu_sdate)
                                                  FROM c_busor BM
                                                 WHERE 1 = 1
                                                   AND BM.bu_gubun   = B.bu_gubun
                                                   AND BM.bu_code   = B.bu_code
                                                   AND BM.bu_edate <![CDATA[<=]]> CONVERT(VARCHAR(8),GETDATE(),112) ) 
                           LEFT OUTER JOIN T_SO_Store C
						       ON A.ks_gubun = C.gubun
							  AND A.ks_sabun = C.code
						   LEFT OUTER JOIN c_kan_sabun D
						       ON C.gubun = D.ks_gubun
							  AND C.mancode = D.ks_sabun
                     WHERE 1 = 1                                                                                
                       AND A.ks_gubun = #Sy_CompanyCd# 
                       AND A.ks_id  = #Sy_UserId#
                       AND RTRIM(ISNULL(A.ks_edate,'')) = ''
                   ) A    
             WHERE 1 = 1      
        </select>

        <!-- 사용자의 계정 정보를 기반으로 메뉴 리스트를 추출하는 쿼리 -->
        <select id="Sys.GetUserMenuList" parameterClass="SysDto" resultClass="LeftMenuDto">
            SELECT A.formCode AS gm_code
                 , A.formID AS gm_formid
                 , A.formDirectory AS gm_directory
                 , REPLACE(REPLACE(REPLACE(A.formTitle,' ',''),'(',''),')','') AS gm_name
                 , SUBSTRING(A.formCode,1,LEN(A.formCode)-3) AS gm_pacode
                 , ISNULL(B.formTitle,'')  AS gm_paname
                 , (SELECT COUNT(*)
                      FROM s_formReg_web
                     WHERE gubun = A.gubun
                       AND formCode <![CDATA[<>]]> A.formCode
                      AND formCode LIKE A.formCode+'%')  AS gm_hacnt
                 , '1' AS gm_chk_use
                 , REPLICATE(' ',LEN(A.formCode)-6) + A.formTitle AS gm_rename
                 , (LEN(A.formCode) / 3) - 1 AS gm_level
              FROM s_formReg_web A
                   LEFT OUTER JOIN s_formReg_web B
                       ON A.gubun = B.gubun
                      AND SUBSTRING(A.formCode,1,LEN(A.formCode)-3) = B.formCode   
             WHERE 1 = 1
               AND A.gubun = '01'
               AND A.formCode <![CDATA[<>]]> '000'
               --AND (A.formCode LIKE '000007%')
             ORDER BY A.formCode
            
        </select>
        <!-- 사용자의 계정 정보를 기반으로 메뉴 리스트를 추출하는 쿼리 -->
        <select id="Sys.GetUserMenuList2" parameterClass="SysDto" resultClass="LeftMenuDto">
            SELECT A.formCode AS gm_code
                 , A.formID AS gm_formid
                 , A.formDirectory AS gm_directory
                 , REPLACE(REPLACE(REPLACE(A.formTitle,' ',''),'(',''),')','') AS gm_name
                 , SUBSTRING(A.formCode,1,LEN(A.formCode)-3) AS gm_pacode
                 , ISNULL(B.formTitle,'')  AS gm_paname
                 , (SELECT COUNT(*)
                      FROM s_formReg_web
                     WHERE gubun = A.gubun
                       AND formCode <![CDATA[<>]]> A.formCode
                      AND formCode LIKE A.formCode+'%')  AS gm_hacnt
                 , '1' AS gm_chk_use
                 , REPLICATE(' ',LEN(A.formCode)-6) + A.formTitle AS gm_rename
                 , (LEN(A.formCode) / 3) - 1 AS gm_level
              FROM s_formReg_web A
                   LEFT OUTER JOIN s_formReg_web B
                       ON A.gubun = B.gubun
                      AND SUBSTRING(A.formCode,1,LEN(A.formCode)-3) = B.formCode   
             WHERE 1 = 1
               AND A.gubun = '01'
               AND A.formCode <![CDATA[<>]]> '000'
               AND (A.formCode NOT LIKE '000000001%')
             ORDER BY A.formCode
            
        </select>
        
        <!-- 패스워드 변경 시 현재 패스워드 확인 -->
        <select id="Sys.UserOldPwCf" parameterClass="SysDto" resultClass="int">
            SELECT COUNT(*)
              FROM (
                    SELECT ks_passwd AS Pwd
                      FROM c_kan_user
                     WHERE 1 = 1
                       AND ks_gubun = #Sy_CompanyCd# 
                       AND ks_id = #Sy_UserId#
                       AND ks_passwd = #Sy_OLDPW#
                   ) A    
             WHERE 1 = 1 
        </select>
                
        <!-- 사용자패스워드 변경 -->
        <update id="Sys.UserPwChange" parameterClass="SysDto">
            UPDATE c_kan_user
               SET ks_passwd = #Sy_NEWPW# 
             WHERE 1 = 1
               AND ks_gubun = #Sy_CompanyCd# 
               AND ks_id = #Sy_UserId#
        </update>
    </statements>
    
</sqlMap>