import request from '@/utils/request';
import type { MenuResponse, MenuRequest } from './types';
import { MenuTypeEnum } from './types';
import {Page} from "@/types/base";

const BASE_URL = '/api/v1/menu';

// 获取菜单列表(分页)
export const getMenus = (params?: any) => 
    request.get<Page<MenuResponse>>(`${BASE_URL}/page`, { params });

// 获取菜单树
export const getMenuTree = () => 
    request.get<MenuResponse[]>(`${BASE_URL}/tree`);

// 获取当前用户菜单
export const getCurrentUserMenus = async () => {
    const menus = await request.get<MenuResponse[]>(`${BASE_URL}/current`);
    console.log('Backend menus:', menus);

    // // 添加首页路由
    // const dashboard: MenuResponse = {
    //     id: 0,
    //     createTime: new Date().toISOString(),
    //     updateTime: new Date().toISOString(),
    //     version: 0,
    //     name: "首页",
    //     path: "/dashboard",
    //     component: "/Dashboard/index",
    //     icon: "dashboard",
    //     type: MenuTypeEnum.MENU,
    //     parentId: 0,
    //     sort: 0,
    //     hidden: false,
    //     enabled: true,
    //     createBy: "system",
    //     updateBy: "system"
    // };
    //
    // // 添加工作流菜单
    // const workflow: MenuResponse = {
    //     id: -2,
    //     createTime: new Date().toISOString(),
    //     updateTime: new Date().toISOString(),
    //     version: 0,
    //     name: "工作流管理",
    //     path: "/workflow",
    //     icon: "apartment",
    //     type: MenuTypeEnum.DIRECTORY,
    //     parentId: 0,
    //     sort: 2,
    //     hidden: false,
    //     enabled: true,
    //     createBy: "system",
    //     updateBy: "system",
    //     children: [
    //         {
    //             id: -21,
    //             createTime: new Date().toISOString(),
    //             updateTime: new Date().toISOString(),
    //             version: 0,
    //             name: "流程定义",
    //             path: "/workflow/definition",
    //             component: "/pages/Workflow/Definition/index",
    //             icon: "apartment",
    //             type: MenuTypeEnum.MENU,
    //             parentId: -2,
    //             sort: 0,
    //             hidden: false,
    //             enabled: true,
    //             createBy: "system",
    //             updateBy: "system"
    //         },
    //         {
    //             id: 1000,
    //             createTime: new Date().toISOString(),
    //             updateTime: new Date().toISOString(),
    //             version: 0,
    //             name: "流程实例",
    //             path: "/workflow/instance",
    //             component: "/Workflow/Instance/index",
    //             icon: "instance",
    //             type: MenuTypeEnum.DIRECTORY,
    //             parentId: -2,
    //             sort: 1,
    //             hidden: false,
    //             enabled: true,
    //             createBy: "system",
    //             updateBy: "system",
    //             children: [
    //                 {
    //                     id: 1001,
    //                     createTime: new Date().toISOString(),
    //                     updateTime: new Date().toISOString(),
    //                     version: 0,
    //                     name: "工作流实例",
    //                     path: "/workflow/instance",
    //                     component: "/Workflow/Instance/index",
    //                     icon: "instance",
    //                     type: MenuTypeEnum.MENU,
    //                     parentId: 1000,
    //                     sort: 1,
    //                     hidden: false
    //                 },
    //                 {
    //                     id: 1002,
    //                     createTime: new Date().toISOString(),
    //                     updateTime: new Date().toISOString(),
    //                     version: 0,
    //                     name: "节点设计",
    //                     path: "/workflow/node-design",
    //                     component: "/Workflow/NodeDesign/index",
    //                     icon: "node-design",
    //                     type: MenuTypeEnum.MENU,
    //                     parentId: 1000,
    //                     sort: 2,
    //                     hidden: false
    //                 }
    //             ]
    //         },
    //         {
    //             id: -23,
    //             createTime: new Date().toISOString(),
    //             updateTime: new Date().toISOString(),
    //             version: 0,
    //             name: "流程监控",
    //             path: "/workflow/monitor",
    //             component: "/pages/Workflow/Monitor/index",
    //             icon: "dashboard",
    //             type: MenuTypeEnum.MENU,
    //             parentId: -2,
    //             sort: 2,
    //             hidden: false,
    //             enabled: true,
    //             createBy: "system",
    //             updateBy: "system"
    //         },
    //         {
    //             id: -24,
    //             createTime: new Date().toISOString(),
    //             updateTime: new Date().toISOString(),
    //             version: 0,
    //             name: "日志流",
    //             path: "/workflow/log-stream/:processInstanceId",
    //             component: "/pages/LogStream/index",
    //             icon: "file-text",
    //             type: MenuTypeEnum.MENU,
    //             parentId: -2,
    //             sort: 3,
    //             hidden: false,
    //             enabled: true,
    //             createBy: "system",
    //             updateBy: "system"
    //         }
    //     ]
    // };

    // 添加X6测试菜单
    // const x6Test: MenuResponse = {
    //     id: -1,
    //     createTime: new Date().toISOString(),
    //     updateTime: new Date().toISOString(),
    //     version: 0,
    //     name: "X6测试",
    //     path: "/x6-test",
    //     icon: "experiment",
    //     type: MenuTypeEnum.MENU,
    //     parentId: 0,
    //     sort: 1,
    //     hidden: false,
    //     enabled: true,
    //     createBy: "system",
    //     updateBy: "system"
    // };

    // 处理组件路径格式
    const processMenu = (menu: MenuResponse): MenuResponse => {
        const processed = { ...menu };
        
        // 确保组件路径格式正确
        if (processed.component && !processed.component.startsWith('/')) {
            processed.component = `/${processed.component}`;
        }
        
        // 递归处理子菜单
        if (processed.children) {
            processed.children = processed.children.map(processMenu);
        }
        
        return processed;
    };

    const processedMenus = menus.map(processMenu);
    const allMenus = [ ...processedMenus];
    console.log('All menus:', allMenus);
    return allMenus;
};

// 创建菜单
export const createMenu = (data: MenuRequest) => 
    request.post<MenuResponse>(BASE_URL, data);

// 更新菜单
export const updateMenu = (id: number, data: MenuRequest) => 
    request.put<MenuResponse>(`${BASE_URL}/${id}`, data);

// 删除菜单
export const deleteMenu = (id: number) => 
    request.delete(`${BASE_URL}/${id}`); 