import type { Permission } from '@/types/auth';

export const mockPermissions: Permission[] = [
  // Dashboard Menu
  {
    id: '1',
    name: 'Dashboard',
    code: 'dashboard.view',
    description: 'Dashboard menu',
    resource: '/dashboard',
    action: 'view',
    type: 'menu',
    path: '/dashboard',
    component: 'dashboard/index',
    icon: 'DashboardOutlined',
    sort: 1,
    status: 'active',
    visible: true,
  },

  // Organization & Permissions Menu
  {
    id: '60',
    name: 'Organization & Permissions',
    code: 'organization.menu',
    description: 'Organization and permissions root menu',
    resource: '/organization',
    action: '*',
    type: 'menu',
    path: '/organization',
    component: 'Layout',
    icon: 'TeamOutlined',
    sort: 2,
    status: 'active',
    visible: true,
    children: [
      {
        id: '50',
        name: 'Department Management',
        code: 'system.dept.view',
        description: 'Department management menu',
        resource: '/organization/dept',
        action: 'view',
        type: 'menu',
        parentId: '60',
        path: '/organization/dept',
        component: 'system/dept/index',
        icon: 'ApartmentOutlined',
        sort: 1,
        status: 'active',
        visible: true,
        children: [
          {
            id: '51',
            name: 'Create Department',
            code: 'system.dept.create',
            description: 'Can create department',
            resource: 'system.dept',
            action: 'create',
            type: 'button',
            parentId: '50',
            status: 'active',
            visible: true,
          },
          {
            id: '52',
            name: 'Edit Department',
            code: 'system.dept.edit',
            description: 'Can edit department',
            resource: 'system.dept',
            action: 'edit',
            type: 'button',
            parentId: '50',
            status: 'active',
            visible: true,
          },
          {
            id: '53',
            name: 'Delete Department',
            code: 'system.dept.delete',
            description: 'Can delete department',
            resource: 'system.dept',
            action: 'delete',
            type: 'button',
            parentId: '50',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '11',
        name: 'User Management',
        code: 'system.user.view',
        description: 'User management menu',
        resource: '/organization/user',
        action: 'view',
        type: 'menu',
        parentId: '60',
        path: '/organization/user',
        component: 'system/user/index',
        icon: 'UserOutlined',
        sort: 2,
        status: 'active',
        visible: true,
        children: [
          {
            id: '12',
            name: 'Create User',
            code: 'system.user.create',
            description: 'Can create users',
            resource: 'system.user',
            action: 'create',
            type: 'button',
            parentId: '11',
            status: 'active',
            visible: true,
          },
          {
            id: '13',
            name: 'Edit User',
            code: 'system.user.edit',
            description: 'Can edit users',
            resource: 'system.user',
            action: 'edit',
            type: 'button',
            parentId: '11',
            status: 'active',
            visible: true,
          },
          {
            id: '14',
            name: 'Delete User',
            code: 'system.user.delete',
            description: 'Can delete users',
            resource: 'system.user',
            action: 'delete',
            type: 'button',
            parentId: '11',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '20',
        name: 'Role Management',
        code: 'system.role.view',
        description: 'Role management menu',
        resource: '/organization/role',
        action: 'view',
        type: 'menu',
        parentId: '60',
        path: '/organization/role',
        component: 'system/role/index',
        icon: 'TeamOutlined',
        sort: 3,
        status: 'active',
        visible: true,
        children: [
          {
            id: '21',
            name: 'Create Role',
            code: 'system.role.create',
            description: 'Can create roles',
            resource: 'system.role',
            action: 'create',
            type: 'button',
            parentId: '20',
            status: 'active',
            visible: true,
          },
          {
            id: '22',
            name: 'Edit Role',
            code: 'system.role.edit',
            description: 'Can edit roles',
            resource: 'system.role',
            action: 'edit',
            type: 'button',
            parentId: '20',
            status: 'active',
            visible: true,
          },
          {
            id: '23',
            name: 'Delete Role',
            code: 'system.role.delete',
            description: 'Can delete roles',
            resource: 'system.role',
            action: 'delete',
            type: 'button',
            parentId: '20',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '30',
        name: 'Menu Management',
        code: 'system.permission.view',
        description: 'Menu management menu',
        resource: '/organization/permission',
        action: 'view',
        type: 'menu',
        parentId: '60',
        path: '/organization/permission',
        component: 'system/permission/index',
        icon: 'SafetyOutlined',
        sort: 4,
        status: 'active',
        visible: true,
        children: [
          {
            id: '31',
            name: 'Create Menu',
            code: 'system.permission.create',
            description: 'Can create menu',
            resource: 'system.permission',
            action: 'create',
            type: 'button',
            parentId: '30',
            status: 'active',
            visible: true,
          },
          {
            id: '32',
            name: 'Edit Menu',
            code: 'system.permission.edit',
            description: 'Can edit menu',
            resource: 'system.permission',
            action: 'edit',
            type: 'button',
            parentId: '30',
            status: 'active',
            visible: true,
          },
          {
            id: '33',
            name: 'Delete Menu',
            code: 'system.permission.delete',
            description: 'Can delete menu',
            resource: 'system.permission',
            action: 'delete',
            type: 'button',
            parentId: '30',
            status: 'active',
            visible: true,
          },
        ],
      },
    ],
  },

  // System Management Menu
  {
    id: '10',
    name: 'System Management',
    code: 'system.menu',
    description: 'System management root menu',
    resource: '/system',
    action: '*',
    type: 'menu',
    path: '/system',
    component: 'Layout',
    icon: 'SettingOutlined',
    sort: 3,
    status: 'active',
    visible: true,
    children: [
      {
        id: '54',
        name: 'System Config',
        code: 'system.config.view',
        description: 'System config menu',
        resource: '/system/config',
        action: 'view',
        type: 'menu',
        parentId: '10',
        path: '/system/config',
        component: 'system/config/index',
        icon: 'ControlOutlined',
        sort: 1,
        status: 'active',
        visible: true,
        children: [
          {
            id: '55',
            name: 'Create Config',
            code: 'system.config.create',
            description: 'Can create config',
            resource: 'system.config',
            action: 'create',
            type: 'button',
            parentId: '54',
            status: 'active',
            visible: true,
          },
          {
            id: '56',
            name: 'Edit Config',
            code: 'system.config.edit',
            description: 'Can edit config',
            resource: 'system.config',
            action: 'edit',
            type: 'button',
            parentId: '54',
            status: 'active',
            visible: true,
          },
          {
            id: '57',
            name: 'Delete Config',
            code: 'system.config.delete',
            description: 'Can delete config',
            resource: 'system.config',
            action: 'delete',
            type: 'button',
            parentId: '54',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '34',
        name: 'Dictionary Management',
        code: 'system.dict.view',
        description: 'Dictionary management menu',
        resource: '/system/dict',
        action: 'view',
        type: 'menu',
        parentId: '10',
        path: '/system/dict',
        component: 'system/dict/index',
        icon: 'BookOutlined',
        sort: 2,
        status: 'active',
        visible: true,
        children: [
          {
            id: '35',
            name: 'Create Dictionary',
            code: 'system.dict.create',
            description: 'Can create dictionary',
            resource: 'system.dict',
            action: 'create',
            type: 'button',
            parentId: '34',
            status: 'active',
            visible: true,
          },
          {
            id: '36',
            name: 'Edit Dictionary',
            code: 'system.dict.edit',
            description: 'Can edit dictionary',
            resource: 'system.dict',
            action: 'edit',
            type: 'button',
            parentId: '34',
            status: 'active',
            visible: true,
          },
          {
            id: '37',
            name: 'Delete Dictionary',
            code: 'system.dict.delete',
            description: 'Can delete dictionary',
            resource: 'system.dict',
            action: 'delete',
            type: 'button',
            parentId: '34',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '58',
        name: 'File Management',
        code: 'system.file.view',
        description: 'File management menu',
        resource: '/system/file',
        action: 'view',
        type: 'menu',
        parentId: '10',
        path: '/system/file',
        component: 'system/file/index',
        icon: 'FolderOutlined',
        sort: 3,
        status: 'active',
        visible: true,
        children: [
          {
            id: '59',
            name: 'Delete File',
            code: 'system.file.delete',
            description: 'Can delete file',
            resource: 'system.file',
            action: 'delete',
            type: 'button',
            parentId: '58',
            status: 'active',
            visible: true,
          },
        ],
      },
      {
        id: '38',
        name: 'System Log',
        code: 'system.log.view',
        description: 'System log menu',
        resource: '/system/log',
        action: 'view',
        type: 'menu',
        parentId: '10',
        path: '/system/log',
        component: 'system/log/index',
        icon: 'FileTextOutlined',
        sort: 4,
        status: 'active',
        visible: true,
        children: [
          {
            id: '39',
            name: 'Clear Log',
            code: 'system.log.clear',
            description: 'Can clear logs',
            resource: 'system.log',
            action: 'delete',
            type: 'button',
            parentId: '38',
            status: 'active',
            visible: true,
          },
        ],
      },
    ],
  },

  // Examples Menu
  {
    id: '40',
    name: 'Examples',
    code: 'examples.menu',
    description: 'Examples root menu',
    resource: '/examples',
    action: '*',
    type: 'menu',
    path: '/examples',
    component: 'Layout',
    icon: 'AppstoreOutlined',
    sort: 4,
    status: 'active',
    visible: true,
    children: [
      {
        id: '41',
        name: 'Table Example',
        code: 'examples.table.view',
        description: 'Table example menu',
        resource: '/examples/table',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/table',
        component: 'examples/table/index',
        icon: 'TableOutlined',
        sort: 1,
        status: 'active',
        visible: true,
      },
      {
        id: '42',
        name: 'Icon Example',
        code: 'examples.icon.view',
        description: 'Icon example menu',
        resource: '/examples/icon',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/icon',
        component: 'examples/icon/index',
        icon: 'SmileOutlined',
        sort: 2,
        status: 'active',
        visible: true,
      },
      {
        id: '43',
        name: 'Form Example',
        code: 'examples.form.view',
        description: 'Form example menu',
        resource: '/examples/form',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/form',
        component: 'examples/form/index',
        icon: 'FormOutlined',
        sort: 3,
        status: 'active',
        visible: true,
      },
      {
        id: '44',
        name: 'Modal Example',
        code: 'examples.modal.view',
        description: 'Modal example menu',
        resource: '/examples/modal',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/modal',
        component: 'examples/modal/index',
        icon: 'ExpandOutlined',
        sort: 4,
        status: 'active',
        visible: true,
      },
      {
        id: '45',
        name: 'Watermark Example',
        code: 'examples.watermark.view',
        description: 'Watermark example menu',
        resource: '/examples/watermark',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/watermark',
        component: 'examples/watermark/index',
        icon: 'HighlightOutlined',
        sort: 5,
        status: 'active',
        visible: true,
      },
      {
        id: '46',
        name: 'Exception Page',
        code: 'examples.exception.menu',
        description: 'Exception root menu',
        resource: '/examples/exception',
        action: 'view',
        type: 'menu',
        parentId: '40',
        path: '/examples/exception',
        component: 'RouteView',
        icon: 'WarningOutlined',
        sort: 6,
        status: 'active',
        visible: true,
        children: [
          {
            id: '47',
            name: '403',
            code: 'examples.exception.403.view',
            description: '403 exception page menu',
            resource: '/examples/exception/403',
            action: 'view',
            type: 'menu',
            parentId: '46',
            path: '/examples/exception/403',
            component: 'examples/exception/403',
            icon: 'StopOutlined',
            sort: 1,
            status: 'active',
            visible: true,
          },
          {
            id: '48',
            name: '404',
            code: 'examples.exception.404.view',
            description: '404 exception page menu',
            resource: '/examples/exception/404',
            action: 'view',
            type: 'menu',
            parentId: '46',
            path: '/examples/exception/404',
            component: 'examples/exception/404',
            icon: 'FileUnknownOutlined',
            sort: 2,
            status: 'active',
            visible: true,
          },
          {
            id: '49',
            name: '500',
            code: 'examples.exception.500.view',
            description: '500 exception page menu',
            resource: '/examples/exception/500',
            action: 'view',
            type: 'menu',
            parentId: '46',
            path: '/examples/exception/500',
            component: 'examples/exception/500',
            icon: 'BugOutlined',
            sort: 3,
            status: 'active',
            visible: true,
          },
        ],
      },
    ],
  },
];
