DELIMITER //

CREATE OR REPLACE PROCEDURE get_div_issue_data(
  IN p_div_type VARCHAR(1),  -- a->e
  IN p_token VARCHAR(100)
)
/*
  Function   : 獲取問題分配資料
  Description: 根據使用者token和問題類型返回不同分類的問題資料
               取得指定 div 的資料, 目前分為
			   A*分配給我的(尚未解決)
	           B*尚未分配
			   C*我回報尚未解決
			   D*我回報且已解決
			   E*被我解決的(30日內)
  Build Date : 2023/07/19 (MariaDB 版本)
*/
BEGIN
  DECLARE v_userid VARCHAR(100);
  DECLARE v_err_code SMALLINT;
  DECLARE v_err_msg VARCHAR(100);
  
  -- 初始化變數
  SET v_err_code = 0;
  SET v_err_msg = 'ok';
  
  -- 根據token獲取userid
  SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1;
  
  IF v_userid IS NULL OR v_userid = '' THEN
    SET v_err_code = 4;
    SET v_err_msg = '原密碼輸入錯誤, 請重新輸入';
    
    SELECT v_err_code AS code, v_err_msg AS msg;
  ELSE
    SELECT v_err_code AS code, v_err_msg AS msg;
    
    -- 根據不同類型返回不同資料
    CASE UPPER(p_div_type)
      WHEN 'A' THEN
        -- 分配給我的(未解決)
        SELECT * FROM v_div_issue l
        WHERE l.responsible = v_userid 
          AND (l.issue_status <> '2' AND l.issue_status <> '8');
      
      WHEN 'B' THEN
        -- 尚未分配
        SELECT * FROM v_div_issue l
        WHERE IFNULL(l.responsible, '') = '';
      
      WHEN 'C' THEN
        -- 由我回報的(未解決)
        SELECT * FROM v_div_issue l
        WHERE l.raised_by = v_userid 
          AND (l.issue_status <> '2' AND l.issue_status <> '8');
      
      WHEN 'D' THEN
        -- 我回報且已解決
        SELECT * FROM v_div_issue l
        WHERE l.raised_by = v_userid 
          AND (l.issue_status = '2' OR l.issue_status = '8');
      
      ELSE
        -- 被我解決的(30日內)
        SELECT * FROM v_div_issue l
        WHERE l.responsible = v_userid 
          AND (l.issue_status = '2' OR l.issue_status = '8') 
          AND DATEDIFF(CURDATE(), finish_date) <= 30;
    END CASE;
  END IF;
END //

DELIMITER ;
