import type { IMenuItem } from '@/types'
import { defineStore } from 'pinia'
import { useUserStore } from '@/stores/user'

interface State {
  studentMenus: IMenuItem[]
  adminMenus: IMenuItem[]
}

// 学生菜单
const studentMenus: IMenuItem[] = [
  {
    name: '首页',
    path: '/'
  },
  {
    name: '我的实验',
    path: '/student/lab'
  },
  {
    name: '我的大赛',
    path: '/student/contest'
  },
  {
    name: '大赛成绩查询',
    path: '/student/contest/score'
  }
]
// 管理员菜单
const adminMenus: IMenuItem[] = [
  {
    name: '首页',
    path: '/'
  },
  {
    name: '智能营销',
    path: '/admin/lab',
    children: [
      {
        name: '实验管理',
        path: '/admin/lab/experiment',
        tag: 'v1-backend-experiment'
      },
      {
        name: '实验指导书管理',
        path: '/admin/lab/book',
        tag: 'v1-teacher-book'
      },
      {
        name: '实验操作视频管理',
        path: '/admin/lab/video',
        tag: 'v1-teacher-video'
      },
      {
        name: '实验讨论交流',
        path: '/admin/lab/discuss',
        tag: 'v1-teacher-discussion'
      },
      {
        name: '实验成绩管理',
        path: '/admin/lab/score',
        tag: 'v1-teacher-record'
      }
    ]
  },
  {
    name: '技能大赛',
    path: '/admin/contest',
    children: [
      {
        name: '赛项管理',
        path: '/admin/contest/items',
        tag: 'competition'
      },
      {
        name: '参赛选手管理',
        path: '/admin/contest/contestants',
        tag: 'competition-competitor'
      },
      {
        name: '评分专家管理',
        path: '/admin/contest/experts',
        tag: 'expert'
      },
      {
        name: '大赛训练答疑',
        path: '/admin/contest/discuss',
        tag: 'v1-teacher-train-discussion'
      },
      {
        name: '大赛评分',
        path: '/admin/contest/check',
        tag: 'v1-expert-check'
      },
      {
        name: '大赛发布成绩',
        path: '/admin/contest/score',
        tag: 'v1-expert-score'
      }
    ]
  },
  {
    name: '成绩分析',
    path: '/admin/contest/analyze',
    children: [
      {
        name: '赛项成绩画像',
        path: '/admin/contest/analyze/score'
      },
      {
        name: '学生个人成绩画像',
        path: '/admin/contest/analyze/student'
      }
    ]
  }
]

export const useMenuStore = defineStore({
  id: 'menu',
  state: (): State => ({
    studentMenus,
    adminMenus
  }),
  getters: {
    menus: state => {
      const userStore = useUserStore()
      if (userStore.role?.id === 1) {
        return state.studentMenus
      } else {
        return state.adminMenus
      }
    }
  },
  actions: {}
})
