<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO">
    <resultMap id="orgMngVO"     type="i2c.biz.admin.srvc.orgMng.vo.OrgMngVO"     />    
    <parameterMap id="orgMngVO"  type="i2c.biz.admin.srvc.orgMng.vo.OrgMngVO"     />
    
    <sql id="searchUser">
    	<if test="@i2c.cmm.util.StringUtil@isNotEmpty(auth_code)">
		  <if test="auth_code == 'ROLE_ORGADMIN'">
			 AND OI.ORG_SID = #{org_sid}     
		  </if>
		</if>    	
   	 	<if test="searchSdate != null and searchSdate !='' and searchEdate !=null and searchEdate !='' ">
      		AND SUBSTR(SU.CRT_DTTM, 1,4) || '-' || SUBSTR(SU.CRT_DTTM, 5,2) || '-' || SUBSTR(SU.CRT_DTTM, 7,2) BETWEEN #{searchSdate} AND #{searchEdate}
      	</if>	      
    	<if test="searchKeyword != null and searchKeyword !=''">          
          <!-- <if test="searchCondition == 'EMAIL'">
          	AND SU.EMAIL LIKE CONCAT('%', #{searchKeyword}, '%')          	
          </if>
          <if test="searchCondition == 'PHN_NUM'">
          	AND SU.PHN_NUM LIKE CONCAT('%', #{searchKeyword}, '%') 
          </if> -->
          <if test="searchCondition == 'ORG_NM'">
          	AND OI.ORG_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>
          <if test="searchCondition == 'USR_NM'">
          	AND SU.USR_NM LIKE CONCAT('%', #{searchKeyword}, '%')
          </if>
          <if test="searchCondition == 'LOGIN_ID'">
          	AND SU.LOGIN_ID LIKE CONCAT('%', #{searchKeyword}, '%')
          </if> 
      	</if>      
      	<if test="svc_sttus != null and svc_sttus !=''">
      		AND OI.SVC_STTUS = #{svc_sttus}
      	</if>
      	<if test="@i2c.cmm.util.StringUtil@isEmpty(use_at) == false"> 
      		<if test="use_at =='YES'">
	      		AND TO_DAYS(SYSDATE()) <![CDATA[<]]> TO_DAYS(SUBSTR(OSH.SVC_END_DE,1,8))
	      	</if>
	      	<if test="use_at =='NO'">
	      		AND TO_DAYS(SYSDATE()) <![CDATA[>=]]> TO_DAYS(SUBSTR(OSH.SVC_END_DE,1,8))
	      	</if>
      	</if>
      	
     </sql>
    
    <select id="countOrgMng" parameterMap="orgMngVO" resultType="int">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.countOrgMng] Org 건수 */
        SELECT 
			   COUNT(OI.ORG_SID)
		  FROM ORG_INFO OI
		     , SNS_USER SU
		 WHERE OI.REGIST_ID = SU.USR_ID
        <include refid="searchUser"/>
    </select>
    
    <select id="listOrgMng" parameterMap="orgMngVO" resultMap="orgMngVO">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.listOrgMng] Org 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT 
                	 OI.ORG_SID       	
                   , OI.ORG_NM
                   , OI.APP_DEPLOY_SE
                   , FN_GET_CODE_NM('APP_DEPLOY_SE',OI.APP_DEPLOY_SE) APP_DEPLOY_SE_NM
                   , OI.SVC_STTUS
                   , FN_GET_CODE_NM('SVC_STTUS',OI.SVC_STTUS) SVC_STTUS_NM
                   , (SELECT COUNT(A.USR_ID) FROM SNS_USER A WHERE A.ORG_SID = OI.ORG_SID) MEMBER_CNT
                   , SU.USR_ID
                   , SU.LOGIN_ID
                   , SU.USR_NM
                   , SU.PHN_NUM
                   , SU.EMAIL   
                   , SU.USE_STOP_YN
                   , DATE_FORMAT(SU.APPROVAL_DTTM, '%Y-%m-%d %H:%i') APPROVAL_DTTM
                   , DATE_FORMAT(SU.LST_LOGIN_DTTM, '%Y-%m-%d %H:%i') LST_LOGIN_DTTM  
                FROM ORG_INFO OI
				   , SNS_USER SU
			   WHERE OI.REGIST_ID = SU.USR_ID
               <include refid="searchUser"/>
               ORDER BY OI.REGIST_DE
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex} , #{recordCountPerPage}		 		 
    </select>
    
    <select id="countSvcExtMng" parameterMap="orgMngVO" resultType="int">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.countSvcExtMng] 서비스연장신청관리 건수 */
        SELECT 
			   COUNT(OI.ORG_SID)
		  FROM ORG_INFO OI
             , ORG_SVC_HIST OSH
		  	 , SNS_USER SU
	  	 WHERE OI.ORG_SID = OSH.ORG_SID
	   	   AND OI.ORG_SVC = OSH.ORG_SVC
	   	   AND OI.REGIST_ID = SU.USR_ID
             <include refid="searchUser"/>
    </select>
    
    <select id="listSvcExtMng" parameterMap="orgMngVO" resultMap="orgMngVO">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.listSvcExtMng] 서비스연장신청관리 목록 */
        SELECT *
        FROM (
            SELECT (@ROWNUM  := @ROWNUM + 1) RNUM, B.*            	 
              FROM (
                SELECT 
                	 OSH.ORG_SID       	
                   , OSH.ORG_SVC
                   , OI.ORG_NM
                   , SU.LOGIN_ID
                   , OSH.OPTN_GOODS
                   , OSH.SVC_PD
                   , DATE_FORMAT(OSH.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE                   
                   , OSG.STPRC  
                   , CASE WHEN TO_DAYS(SYSDATE()) <![CDATA[<]]> TO_DAYS(SUBSTR(OSH.SVC_END_DE,1,8)) THEN '정상' 
                     ELSE '해지'
                      END USE_AT
                   , OI.APP_DEPLOY_SE
                   , FN_GET_CODE_NM('APP_DEPLOY_SE',OI.APP_DEPLOY_SE) APP_DEPLOY_SE_NM  
                   , OSH.SVC_END_DE                       
                FROM ORG_SVC_GOODS OSG
		  	  		 LEFT OUTER JOIN ORG_SVC_HIST OSH 
		  			   ON OSH.ORG_SVC = OSG.ORG_SVC   
   	 	   			  AND OSG.OPTN_GOODS = OSH.OPTN_GOODS   	 	  
   	 	   			  AND OSG.SVC_PD = OSH.SVC_PD 
   	 	   			 LEFT OUTER JOIN ORG_INFO OI
   	 	   		   	   ON OSH.ORG_SID = OI.ORG_SID 
   	 	   		   , SNS_USER SU 
			   WHERE OI.REGIST_ID = SU.USR_ID
               <include refid="searchUser"/>
               ORDER BY OI.REGIST_DE
            ) B, (SELECT @ROWNUM := 0 FROM DUAL) ROWNUM
        ) C        
		ORDER BY RNUM
		LIMIT #{firstIndex} , #{recordCountPerPage}		 		 
    </select>    
    
    <select id="selectOrgMng" parameterMap="orgMngVO" resultMap="orgMngVO">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.selectOrgMng] Org 조회 */
        SELECT 
          	   OI.ORG_SID     
          	 , (SELECT 
          	 		   OSH.ORG_SVC 
          	 	  FROM ORG_SVC_HIST OSH
          	 	 WHERE OSH.ORG_SID = OI.ORG_SID  
          	 	   AND OSH.ORG_SVC = OI.ORG_SVC
          	   ) ORG_SVC   	
             , OI.ORG_NM
             , SU.LOGIN_ID
             , SU.USR_NM             
             , SU.EMAIL  
             , SU.PHN_NUM 
             , DATE_FORMAT(OI.REGIST_DE, '%Y-%m-%d %H:%i') REGIST_DE
             , (SELECT 
          	 		   CONCAT(DATE_FORMAT(OSH.SVC_END_DE, '%Y-%m-%d'),CONCAT(' (D',TO_DAYS(SYSDATE()) - TO_DAYS(SUBSTR(OSH.SVC_END_DE,1,8))),')')
          	 	  FROM ORG_SVC_HIST OSH
          	 	 WHERE OSH.ORG_SID = OI.ORG_SID  
          	 	   AND OSH.ORG_SVC = OI.ORG_SVC        	 	    	   
          	   ) SVC_END_DE                  
             , DATE_FORMAT((SELECT MAX(LST_LOGIN_DTTM) FROM SNS_USER A WHERE A.ORG_SID = OI.ORG_SID), '%Y-%m-%d %H:%i') LST_LOGIN_DTTM  
             , (SELECT 
          	 		   GROUP_CONCAT(SVC_RELM)
          	 	  FROM ORG_SVC_RELM OSR
          	 	 WHERE OSR.ORG_SID = OI.ORG_SID
          	 	   AND OSR.USE_AT = 'Y'
          	   ) SVC_RELM
          	 , CONCAT((SELECT COUNT(A.USR_ID) FROM SNS_USER A WHERE A.ORG_SID = OI.ORG_SID),' / ',OI.MAU) MEMBER_CNT 
             , OI.SVC_STTUS
             , FN_GET_CODE_NM('SVC_STTUS',OI.SVC_STTUS) SVC_STTUS_NM
             , OI.APP_DEPLOY_SE
             , FN_GET_CODE_NM('APP_DEPLOY_SE',OI.APP_DEPLOY_SE) APP_DEPLOY_SE_NM
             , CONCAT(OI.ANDROID_URL,' , ',OI.IOS_URL) SERVICE_URL          
          	 , OI.REGIST_DE
          	 , OI.MAU             
          	 , (SELECT COUNT(A.USR_ID) FROM SNS_USER A WHERE A.ORG_SID = OI.ORG_SID) REAL_MAU
          	 , OI.ANDROID_URL
          	 , OI.IOS_URL   
          	 , (SELECT 
          	 		   OSH.HIST_NO
          	 	  FROM ORG_SVC_HIST OSH
          	 	 WHERE OSH.ORG_SID = OI.ORG_SID  
          	 	   AND OSH.ORG_SVC = OI.ORG_SVC        	 	    	   
          	   ) HIST_NO 
          	 , (SELECT 
          	 		   OSH.OPTN_GOODS
          	 	  FROM ORG_SVC_HIST OSH
          	 	 WHERE OSH.ORG_SID = OI.ORG_SID  
          	 	   AND OSH.ORG_SVC = OI.ORG_SVC        	 	    	   
          	   ) OPTN_GOODS  
          FROM ORG_INFO OI
	   		 , SNS_USER SU
   		 WHERE OI.REGIST_ID = SU.USR_ID
   		 <include refid="searchUser"/>
   		   AND OI.ORG_SID = #{org_sid}
   		 LIMIT 1
    </select> 
    
    <insert id="insertOrgMng" parameterMap="orgMngVO">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.insertOrgMng] Org 생성 */
        INSERT INTO SNS_USER
			(
			usr_id, usr_nm, email, login_id, login_passwd, 
			use_stop_yn, use_stop_dttm, sys_admin_yn,
			phn_num, crt_usr_id, crt_dttm, mod_usr_id, mod_dttm, 
			dept_id, dept_nm, 
			temp_passwd_yn, auth_code,
			instt_bsnm_id, instt_bsnm_type, sport_bsns_id,
			approval, approval_dttm,
			sexdstn, conn_ip
			)
		VALUES 
			(
			#{usrId}, #{usrNm}, #{email},#{loginId}, #{loginPasswd}, 
			#{useStopYn}, #{useStopDttm},#{sysAdminYn},
			#{phnNum}, #{crtUsrId}, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'), #{modUsrId}, DATE_FORMAT(SYSDATE(),'%Y%m%d%H%i%s'), 
			#{dept_code}, #{dept_code_nm},
			#{tempPasswdYn}, #{authCode} ,
			#{insttBsnmId}, #{insttBsnmType}, #{sportBsnsId},
			#{approval}, #{approvalDttm},
			#{sexdstn}, #{connIp}
			)
    </insert>
    
    <update id="updateOrgMng" parameterType="Map">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.updateOrgMng] Org 수정 */
        UPDATE ORG_INFO 
           SET SVC_STTUS 	 = #{svc_sttus}
			 , APP_DEPLOY_SE = #{app_deploy_se}
			 , ANDROID_URL 	 = #{android_url}
			 , IOS_URL 		 = #{ios_url}
			 , UPDT_ID		 = #{usr_id}
			 , UPDT_DE 		 = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
		WHERE
			ORG_SID = #{org_sid}
    </update> 
    
    <delete id="deleteSvcRelm" parameterType="Map">
    /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.deleteSvcRelm] 서비스 영역 삭제 */
    DELETE FROM ORG_SVC_RELM WHERE ORG_SID = #{org_sid}
    </delete>
    
    <insert id="insertSvcRelm" parameterType="Map">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.insertSvcRelm] 서비스 영역 저장 */
        INSERT INTO ORG_SVC_RELM
			(
			  ORG_SID
		    , SVC_RELM
		    , USE_AT
		    , REGIST_ID
		    , REGIST_DE
		    , UPDT_ID
		    , UPDT_DE	
			)
		VALUES 
			(
			  #{org_sid}
			, #{svc_relm}
			, #{use_at}
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
    </insert>      
    
    <update id="saveSvcExt" parameterType="Map">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.saveSvcExt] 서비스 연장 관리 저장 */
        INSERT INTO ORG_SVC_HIST 
        	(
			  HIST_NO
			, ORG_SID
			, ORG_SVC
			, OPTN_GOODS
			, SVC_PD
			, SVC_START_DE
			, SVC_END_DE
			, RCPMNYER
			, RM			
			, REGIST_ID
			, REGIST_DE
			, UPDT_ID
			, UPDT_DE	
			) 
        VALUES 
        	(
			  #{hist_no}
			, #{org_sid}
			, #{org_svc}
			, #{optn_goods}
			, #{svc_pd}
			, DATE_FORMAT(#{svc_start_de}, '%Y%m%d%H%i%s')
			, DATE_FORMAT(DATE_ADD(#{svc_start_de},INTERVAL + FN_GET_CODE_NM('SVC_PD',#{svc_pd}) YEAR), '%Y%m%d%H%i%s')
			, #{rcpmnyer}
			, #{rm}
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			, #{usr_id}
			, DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')
			)
			ON DUPLICATE KEY 
		UPDATE 
			  <!-- ORG_SID		 = #{org_sid}
			, ORG_SVC		 = #{org_svc}
			, OPTN_GOODS	 = #{optn_goods}
			-->
			  SVC_PD		 = #{svc_pd}
			, SVC_END_DE	 = DATE_FORMAT(DATE_ADD(#{svc_start_de},INTERVAL + FN_GET_CODE_NM('SVC_PD',#{svc_pd}) YEAR), '%Y%m%d%H%i%s')
			, RCPMNYER		 = #{rcpmnyer}
			, RM			 = #{rm}
			, UPDT_ID		 = #{usr_id}
			, UPDT_DE		 = DATE_FORMAT(SYSDATE(), '%Y%m%d%H%i%s')        
    </update>   
    
    <select id="listSvcGoods" parameterMap="orgMngVO" resultMap="orgMngVO">
    	/* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.listSvcGoods] 서비스 상품 목록 */
    	SELECT
    		   OSG.ORG_SVC
			 , OSG.OPTN_GOODS
			 , OSG.SVC_PD			 
    	  FROM ORG_SVC_GOODS OSG
    	     , ORG_SVC_HIST OSH 
    	 WHERE OSH.ORG_SVC = OSG.ORG_SVC
    	  <if test="@i2c.cmm.util.StringUtil@isEmpty(org_sid) == false"> 
    	   AND OSH.ORG_SID = #{org_sid}
    	  </if>
    	  <if test="@i2c.cmm.util.StringUtil@isEmpty(org_svc) == false"> 
    	   AND OSG.ORG_SVC = #{org_svc}
    	  </if>
    	  <if test="@i2c.cmm.util.StringUtil@isEmpty(optn_goods) == false"> 
    	   AND OSG.OPTN_GOODS = #{optn_goods}
    	  </if>
    	 GROUP BY OSG.OPTN_GOODS
    	 ORDER BY OSH.REGIST_DE DESC   
    </select>
    
    <select id="selectSvcExt" parameterMap="orgMngVO" resultMap="orgMngVO">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.selectSvcExt] 서비스 연장 신청 조회 */
        SELECT 
          	   OSH.HIST_NO
          	 , OSH.ORG_SID     
          	 , OSG.ORG_SVC  	                       	 
          	 , OSG.OPTN_GOODS
          	 , OSH.SVC_PD        	 
          	 , OSG.RCPMNY_BANK         	   
          	 , OSG.ACNUTNO
          	 , OSG.ACNUTNM          	
          	 , (SELECT 
          	 		   DATE_FORMAT(OI.SVC_START_DE, '%Y-%m-%d')
          	 	  FROM ORG_INFO OI
          	 	 WHERE OI.ORG_SID = #{org_sid}    	 	    	   
          	   ) SVC_START_DE 
          	 , DATE_FORMAT(OSH.SVC_END_DE, '%Y-%m-%d') SVC_END_DE
          	 , CONCAT('₩ ',FORMAT(OSG.STPRC,0),' ( 월 ',FORMAT(OSG.STPRC/12,0),' - VAT 포함가 )') STPRC
          	 , OSH.RM
          	 , OSH.RCPMNYER          	 
          FROM ORG_SVC_GOODS OSG
		  	   LEFT OUTER JOIN ORG_SVC_HIST OSH 
		  			   ON OSH.ORG_SVC = OSG.ORG_SVC   
   	 	   			  AND OSG.OPTN_GOODS = OSH.OPTN_GOODS   	 	  
   	 	   			  AND OSG.SVC_PD = OSH.SVC_PD    	
	 	   <if test="@i2c.cmm.util.StringUtil@isEmpty(hist_no) == false">
		   	WHERE (OSH.HIST_NO = #{hist_no}
		   	OR  OSG.OPTN_GOODS = #{hist_no})
		   </if>   		   
   		 LIMIT 1
    </select> 
    
    <select id="listOrg" parameterType="Map" resultType="i2c.cmm.base.CommonResultMap">
        /* [i2c.biz.admin.srvc.orgMng.dao.OrgMngDAO.listOrg] ORG 목록(API) */
        SELECT
        	   ORG_SID
        	 , ORG_NM
          FROM ORG_INFO
         WHERE SVC_STTUS = 'SVCS02'
         ORDER BY ORG_SID
    </select>
    
    
</mapper>