import { transformRecordToOption } from '@/utils/common';

export const enableStatusRecord: Record<Api.Common.EnableStatus, App.I18n.I18nKey> = {
  '1': 'page.system.common.status.enable',
  '2': 'page.system.common.status.disable'
};

export const enableStatusOptions = transformRecordToOption(enableStatusRecord);

export const commonStatusRecord: Record<Api.SystemManage.CommonStatus, App.I18n.I18nKey> = {
  0: 'page.system.common.status.enable',
  1: 'page.system.common.status.disable'
};

export const commonStatusOptions = [
  { value: 0, label: commonStatusRecord[0] },
  { value: 1, label: commonStatusRecord[1] }
] satisfies CommonType.Option<Api.SystemManage.CommonStatus, App.I18n.I18nKey>[];

export const scopeTypeRecord: Record<Api.SystemManage.ScopeType, App.I18n.I18nKey> = {
  global: 'page.system.common.scopeType.global',
  object: 'page.system.common.scopeType.object'
};

export const scopeTypeOptions = transformRecordToOption(scopeTypeRecord);

export const objectTypeRecord: Record<Api.SystemManage.ObjectType, App.I18n.I18nKey> = {
  product: 'page.system.common.objectType.product',
  project: 'page.system.common.objectType.project'
};

export const objectTypeOptions = transformRecordToOption(objectTypeRecord);

export const dictStatusRecord: Record<'0' | '1', App.I18n.I18nKey> = {
  '0': 'page.system.common.status.enable',
  '1': 'page.system.common.status.disable'
};

export const dictStatusOptions = [
  { value: 0, label: dictStatusRecord['0'] },
  { value: 1, label: dictStatusRecord['1'] }
] satisfies CommonType.Option<Api.Dict.DictStatus, App.I18n.I18nKey>[];

export const userGenderRecord: Record<Api.SystemManage.UserGender, App.I18n.I18nKey> = {
  0: 'page.system.user.gender.unknown',
  1: 'page.system.user.gender.male',
  2: 'page.system.user.gender.female'
};

export const userGenderOptions = transformRecordToOption(userGenderRecord);

export const menuTypeRecord: Record<Api.SystemManage.MenuType, App.I18n.I18nKey> = {
  1: 'page.system.menu.type.directory',
  2: 'page.system.menu.type.menu',
  3: 'page.system.menu.type.button'
};

export const menuTypeOptions = [
  { value: 1, label: menuTypeRecord[1] },
  { value: 2, label: menuTypeRecord[2] },
  { value: 3, label: menuTypeRecord[3] }
] satisfies CommonType.Option<Api.SystemManage.MenuType, App.I18n.I18nKey>[];

export const roleTypeRecord: Record<Api.SystemManage.RoleType, App.I18n.I18nKey> = {
  1: 'page.system.role.type.system',
  2: 'page.system.role.type.custom'
};

export const roleTypeOptions = [
  { value: 1, label: roleTypeRecord[1] },
  { value: 2, label: roleTypeRecord[2] }
] satisfies CommonType.Option<Api.SystemManage.RoleType, App.I18n.I18nKey>[];

export const menuRouteKindRecord: Record<Api.SystemManage.MenuRouteKind, App.I18n.I18nKey> = {
  dir: 'page.system.menu.routeKindEnum.directory',
  view: 'page.system.menu.routeKindEnum.view',
  single: 'page.system.menu.routeKindEnum.single',
  iframe: 'page.system.menu.routeKindEnum.iframe',
  external: 'page.system.menu.routeKindEnum.external',
  redirect: 'page.system.menu.routeKindEnum.redirect'
};

export const menuRouteKindOptions = transformRecordToOption(menuRouteKindRecord);

export const postTypeRecord: Record<Api.SystemManage.PostType, string> = {
  management: '管理岗',
  technical: '技术岗',
  business: '业务岗'
};

export const postTypeOptions = transformRecordToOption(postTypeRecord);

/**
 * 产品对象域角色编码：产品经理
 *
 * 用途：
 * 产品创建两步向导第 2 步初始化团队时，前端按本 code 在 fetchGetRoleSimpleList
 * 返回的角色列表中反查产品经理角色 ID，作为默认经理成员行的 roleId 提交。
 *
 * 来源口径：后端约定的产品对象域内置角色稳定 code。code 变更需同步前端常量。
 */
export const PRODUCT_MANAGER_ROLE_CODE = 'product_manager';

/**
 * 项目对象域角色编码：项目经理
 *
 * 用途：
 * 项目创建两步向导第 2 步初始化团队时，前端按本 code 在 fetchGetRoleSimpleList
 * 返回的角色列表中反查项目经理角色 ID，作为默认经理成员行的 roleId 提交。
 *
 * 来源口径：后端约定的项目对象域内置角色稳定 code。code 变更需同步前端常量。
 */
export const PROJECT_MANAGER_ROLE_CODE = 'project_manager';
