#!/bin/bash

# 專案管理工具
# 使用方法: ./drama project [命令]

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
PROJECTS_FILE="$PROJECT_DIR/PROJECTS.md"
PROJECTS_DATA_DIR="$PROJECT_DIR/projects"

# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
RED='\033[0;31m'
NC='\033[0m'

# 類型圖標和名稱函數 (Bash 3.2 兼容)
get_type_icon() {
    case "$1" in
        "FE") echo "🎨" ;;
        "BE") echo "⚙️" ;;
        "AI") echo "🤖" ;;
        "MB") echo "📱" ;;
        "DOC") echo "📚" ;;
        "ENV") echo "🔧" ;;
        "TEST") echo "🧪" ;;
        *) echo "🔧" ;;
    esac
}

get_type_name() {
    case "$1" in
        "FE") echo "前端開發" ;;
        "BE") echo "後端開發" ;;
        "AI") echo "AI整合" ;;
        "MB") echo "移動端" ;;
        "DOC") echo "文檔更新" ;;
        "ENV") echo "環境配置" ;;
        "TEST") echo "測試驗證" ;;
        *) echo "環境配置" ;;
    esac
}

# 狀態圖標函數
get_status_icon() {
    case "$1" in
        "pending") echo "⏳" ;;
        "in-progress") echo "🔄" ;;
        "completed") echo "✅" ;;
        "blocked") echo "❌" ;;
        "paused") echo "⏸️" ;;
        *) echo "⏳" ;;
    esac
}

# 確保必要文件和目錄存在
init_project_structure() {
    if [[ ! -f "$PROJECTS_FILE" ]]; then
        echo -e "${RED}❌ PROJECTS.md 不存在${NC}"
        exit 1
    fi
    
    if [[ ! -d "$PROJECTS_DATA_DIR" ]]; then
        mkdir -p "$PROJECTS_DATA_DIR"
    fi
}

# 顯示項目列表
show_project_list() {
    echo -e "${BLUE}📋 所有專案列表${NC}"
    echo "=================================="
    
    if [[ ! -f "$PROJECTS_FILE" ]]; then
        echo -e "${RED}❌ 專案文件不存在${NC}"
        return 1
    fi
    
    # 從PROJECTS.md中提取項目信息
    grep -E "^### " "$PROJECTS_FILE" | while read -r line; do
        # 提取項目名稱和狀態
        project_name=$(echo "$line" | sed 's/^### [^ ]* \(.*\) (.*$/\1/')
        status_line=$(echo "$line" | grep -o '([^)]*)$' | tr -d '()')
        
        if [[ -n "$project_name" ]]; then
            echo -e "  ${GREEN}📁 $project_name${NC} ($status_line)"
        fi
    done
}

# 顯示項目狀態
show_project_status() {
    local project_name="$1"
    
    echo -e "${BLUE}📊 專案執行狀態${NC}"
    echo "=================================="
    
    if [[ -n "$project_name" ]]; then
        echo -e "${PURPLE}專案: $project_name${NC}"
        # TODO: 顯示特定項目的詳細狀態
    else
        # 顯示總體統計
        echo -e "${GREEN}總體統計:${NC}"
        echo "  📱 進行中專案: 1 個"
        echo "  ⏳ 待執行項目: 16 個"
        echo "  🔄 進行中項目: 0 個" 
        echo "  ✅ 已完成項目: 0 個"
    fi
}

# 初始化新項目
init_new_project() {
    local project_name="$1"
    
    if [[ -z "$project_name" ]]; then
        echo -e "${RED}❌ 請提供項目名稱${NC}"
        echo "使用方法: ./drama project init \"項目名稱\""
        return 1
    fi
    
    echo -e "${BLUE}🚀 初始化新專案: $project_name${NC}"
    
    # 創建項目數據文件
    local project_file="$PROJECTS_DATA_DIR/${project_name}.md"
    if [[ -f "$project_file" ]]; then
        echo -e "${YELLOW}⚠️  專案 '$project_name' 已存在${NC}"
        return 1
    fi
    
    # 創建項目詳細文件
    cat > "$project_file" << EOF
# $project_name

**創建日期**: $(date +"%Y-%m-%d")
**狀態**: 🔄 進行中

## 專案描述
請在此處添加專案的詳細描述...

## 執行階段

### 階段1: 待定義
- ⏳ \`ENV\` 待添加執行項目...

## 專案統計
- **總階段數**: 1
- **執行項目數**: 1
- **完成進度**: 0%

---
**最後更新**: $(date +"%Y-%m-%d")
EOF

    echo -e "${GREEN}✅ 專案 '$project_name' 初始化完成${NC}"
    echo "  📁 專案文件: $project_file"
    echo "  💡 使用 ./dl phase add \"$project_name\" \"階段名稱\" 新增階段"
}

# 列出項目類型
show_project_types() {
    echo -e "${BLUE}🏷️  專案類型定義${NC}"
    echo "=================================="
    
    local types="FE BE AI MB DOC ENV TEST"
    for type_code in $types; do
        local icon=$(get_type_icon "$type_code")
        local name=$(get_type_name "$type_code")
        echo -e "  ${icon} ${PURPLE}$type_code${NC} - $name"
    done
    
    echo ""
    echo -e "${BLUE}使用範例:${NC}"
    echo "  ./dl phase add \"專案名\" \"階段名\" FE \"前端任務描述\""
}

# 顯示幫助
show_help() {
    echo -e "${BLUE}🚀 專案管理工具使用指南${NC}"
    echo "=================================="
    echo ""
    echo -e "${PURPLE}基本命令:${NC}"
    echo "  init [項目名稱]        - 初始化新專案"
    echo "  list                  - 列出所有專案"
    echo "  status [項目名稱]      - 查看執行狀態"
    echo "  types                 - 顯示專案類型定義"
    echo ""
    echo -e "${PURPLE}範例:${NC}"
    echo "  ./dl project init \"我的新專案\""
    echo "  ./dl project list"
    echo "  ./dl project status"
    echo ""
    echo -e "${BLUE}提示:${NC} 使用 ./dl phase 管理專案階段和執行項目"
}

# 主邏輯
init_project_structure

case "$1" in
    "init")
        init_new_project "$2"
        ;;
    "list")
        show_project_list
        ;;
    "status")
        show_project_status "$2"
        ;;
    "types")
        show_project_types
        ;;
    "help"|"--help"|"-h"|"")
        show_help
        ;;
    *)
        echo -e "${RED}❌ 未知命令: $1${NC}"
        echo ""
        show_help
        exit 1
        ;;
esac