DELIMITER //

CREATE PROCEDURE zen_codeinit (
  IN p_new_ip VARCHAR(100),
  IN p_new_db1 VARCHAR(100),  -- Business
  IN p_new_db2 VARCHAR(100)   -- Wizard
)
/*
  Function   : 登入後設定 zen_jsoncode 的 ip 及 db
  Description: 原本想自動化執行, 但穩妥起見, 目前先仍維持手動執行一次(切換環境時), 目前暫不使用, 手動改 ip 即可
  Sample:
  Build Date : 2023-12-10
  
  Modify History
    Item Who        Date       Modify Docs
    ==== ========== ========== ================================================
    1    Michael    2023-12-10 改寫為 MySQL 版
    
*/
BEGIN
  DECLARE v_cnt INT;
  DECLARE v_org_ip VARCHAR(100);
  DECLARE v_org_db1 VARCHAR(100);  -- Business
  DECLARE v_org_db2 VARCHAR(100);  -- Wizard
  
  /*
    要先想辦法解析(或手工設定) 在 zen_jsoncode 內的 ip 及 db
    目前僅先考慮出廠的變更, 也就是
	org 的內容
	  ip 只會有 127.0.0.1 和 gcp-api.gex.com.tw 或 api.gex.com.tw
	  db 只會有 zenBusiness / zenWizard / zenEIS
	
	db 二合一很簡單, 但是一分為二, 就麻煩了
  */
  
  SET v_org_ip = '';
  SELECT COUNT(*) INTO v_cnt FROM zen_jsoncode WHERE jsoncode LIKE '%127.0.0.1%';
  IF v_cnt > 0 THEN
    SET v_org_ip = '127.0.0.1';
  ELSE
    SELECT COUNT(*) INTO v_cnt FROM zen_jsoncode WHERE jsoncode LIKE '%gcp-api.gex.com.tw%';
    IF v_cnt > 0 THEN
      SET v_org_ip = 'gcp-api.gex.com.tw';
    ELSE
      SELECT COUNT(*) INTO v_cnt FROM zen_jsoncode WHERE jsoncode LIKE '%api.gex.com.tw%';
      IF v_cnt > 0 THEN
        SET v_org_ip = 'api.gex.com.tw';
      END IF;
    END IF;
  END IF;
  
  SET v_org_db1 = '';
  SELECT COUNT(*) INTO v_cnt FROM zen_jsoncode WHERE jsoncode LIKE '%zenEIS%';
  IF v_cnt > 0 THEN
    SET v_org_db1 = 'zenEIS';
    SET v_org_db2 = 'zenEIS';
  ELSE
    SET v_org_db1 = 'zenBusiness';
    SET v_org_db2 = 'zenWizard';
  END IF;
  
  -- 如果是其他非出廠 SOP 的特殊作業, 只能手工設定
  /*
  SET v_org_ip = '127.0.0.1';
  SET v_org_db1 = 'xxxdb1';
  SET v_org_db2 = 'xxxdb2';
  */
  
  -- update ip
  UPDATE zen_jsoncode 
  SET jsoncode = REPLACE(jsoncode, v_org_ip, p_new_ip), 
      jsoncode2 = REPLACE(jsoncode2, v_org_ip, p_new_ip), 
      jsoncode3 = REPLACE(jsoncode3, v_org_ip, p_new_ip);
  
  -- 如果 db 是一分為二, 要多判斷 sys
  IF v_org_db1 = 'zenEIS' AND p_new_db1 <> 'zenEIS' THEN
    UPDATE zen_jsoncode 
    SET jsoncode = REPLACE(jsoncode, v_org_db1, p_new_db1), 
        jsoncode2 = REPLACE(jsoncode2, v_org_db1, p_new_db1), 
        jsoncode3 = REPLACE(jsoncode3, v_org_db1, p_new_db1);
    
    UPDATE zen_jsoncode 
    SET jsoncode = REPLACE(jsoncode, v_org_db2, p_new_db2), 
        jsoncode2 = REPLACE(jsoncode2, v_org_db2, p_new_db2), 
        jsoncode3 = REPLACE(jsoncode3, v_org_db2, p_new_db2);  
  ELSE 
    UPDATE zen_jsoncode 
    SET jsoncode = REPLACE(jsoncode, v_org_db1, p_new_db1), 
        jsoncode2 = REPLACE(jsoncode2, v_org_db1, p_new_db1), 
        jsoncode3 = REPLACE(jsoncode3, v_org_db1, p_new_db1);
    
    UPDATE zen_jsoncode 
    SET jsoncode = REPLACE(jsoncode, v_org_db2, p_new_db2), 
        jsoncode2 = REPLACE(jsoncode2, v_org_db2, p_new_db2), 
        jsoncode3 = REPLACE(jsoncode3, v_org_db2, p_new_db2);
  END IF;
  
  -- 回傳 ds1
  SELECT 0 AS code, 'ok' AS msg;
  
END //

DELIMITER ;
