import { UserRole } from 'common/enum/UserRole.enum';
import { FeatureEnum, PermissionEnum, SubPermissionEnum } from 'common/enum/Permissions.enum';

export interface PermissionSeed {
  name: PermissionEnum;
  displayName: string;
  description?: string;
  permissionType: UserRole;
  isActive?: boolean;
  isSystemPermission?: boolean;
  isClientPermission?: boolean;
  subPermissions?: SubPermissionSeed[];
}

export interface SubPermissionSeed {
  name: string;
  displayName: string;
  description?: string;
  permissionType: UserRole;
  isActive?: boolean;
  isSystemPermission?: boolean;
  isClientPermission?: boolean;
}

export const permissionsSeed: PermissionSeed[] = [
  {
    name: PermissionEnum.ROLES_MANAGE,
    displayName: 'Manage Roles',
    description: 'Full access to create, update, delete, and view roles',
    permissionType: UserRole.CLIENT,
    isSystemPermission: false,
    isClientPermission: true,
    isActive: true,
    subPermissions: [
      {
        name: SubPermissionEnum.CREATE,
        displayName: 'Create Role',
        description: 'Create a new role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.UPDATE,
        displayName: 'Update Role',
        description: 'Update existing role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.DELETE,
        displayName: 'Delete Role',
        description: 'Delete existing role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.VIEW_ALL,
        displayName: 'View All Roles',
        description: 'View list of all roles with pagination',
        permissionType: UserRole.SUPER_ADMIN,
        isSystemPermission: true,
        isActive: true,
      },
      {
        name: SubPermissionEnum.VIEW_BY_ID,
        displayName: 'View Role by ID',
        description: 'View role details by ID',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },

      {
        name: SubPermissionEnum.VIEW_BY_NAME,
        displayName: 'View Role by Name',
        description: 'View role details by name',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.ASSIGN_PERMISSIONS,
        displayName: 'Assign Permissions to Role',
        description: 'Assign permissions to a role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_PERMISSIONS,
        displayName: 'Get Permissions of Role',
        description: 'Get all permissions assigned to a role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_SUBPERMISSIONS,
        displayName: 'Get Sub-Permissions of Role',
        description: 'Get all sub-permissions assigned to a role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.ASSIGN_USER,
        displayName: 'Assign User to Role',
        description: 'Assign a user to a role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.REMOVE_USER,
        displayName: 'Remove User from Role',
        description: 'Remove a user from a role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_USERS_BY_ROLE,
        displayName: 'Get Users by Role',
        description: 'Get all users assigned to a specific role',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_ROLES_BY_USER_EMAIL,
        displayName: 'Get Roles by User Email',
        description: 'Get all roles assigned to a user by email',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_ROLES_BY_USER_ID,
        displayName: 'Get Roles by User ID',
        description: 'Get all roles assigned to a user by ID',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: SubPermissionEnum.GET_ROLES_BY_CLIENT,
        displayName: 'Get Roles by Client',
        description: 'Get all roles associated with a client',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
    ],
  },
  //   FEATURE TOGGLE MANAGEMENT
  {
    name: PermissionEnum.AI_CONTENT_SCANNER,
    displayName: 'AI Content Scanner Management',
    description: 'Manage AI content scanner features and permissions',
    permissionType: UserRole.CLIENT,
    isSystemPermission: false,
    isClientPermission: true,
    isActive: true,
    subPermissions: [
      {
        name: FeatureEnum.ANALYZE,
        displayName: 'Analyze Content',
        description: 'Analyze content using AI scanner',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.ANALYZE_SENTENCE,
        displayName: 'Analyze Sentence',
        description: 'Analyze a single sentence using AI scanner',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.ANALYZE_FILE,
        displayName: 'Analyze File',
        description: 'Analyze a file using AI scanner',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.ANALYZE_FILE_SENTENCE,
        displayName: 'Analyze File Sentence',
        description: 'Analyze a sentence within a file using AI scanner',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
    ],
  },
  {
    name: PermissionEnum.BREACH_CHECK,
    displayName: 'Breach Check Management',
    description: 'Manage breach check features and permissions',
    permissionType: UserRole.CLIENT,
    isSystemPermission: false,
    isClientPermission: true,
    isActive: true,
    subPermissions: [
      {
        name: FeatureEnum.BC_EMAIL_CHECK,
        displayName: 'Breach Check by Email',
        description: 'Check for breaches using email',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.BC_PASSWORD_CHECK,
        displayName: 'Breach Check by Password',
        description: 'Check for breaches using password',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.BC_PHONE_CHECK,
        displayName: 'Breach Check by Phone',
        description: 'Check for breaches using phone number',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.BC_STATS,
        displayName: 'Breach Check Statistics',
        description: 'View statistics of breach checks performed',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.BC_STATUS,
        displayName: 'Breach Check Status',
        description: 'Check the status of breach checks',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
    ],
  },
  {
    name: PermissionEnum.WEB_SECURITY_SCANNER,
    displayName: 'Web Security Scanner Management',
    description: 'Manage web security scanner features and permissions',
    permissionType: UserRole.CLIENT,
    isSystemPermission: false,
    isClientPermission: true,
    isActive: true,
    subPermissions: [
      {
        name: FeatureEnum.WS_SCAN,
        displayName: 'Web Security Scan',
        description: 'Perform a web security scan',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.WS_SCAN_BY_ID,
        displayName: 'Retireve Web Security Scan by ID',
        description: 'Retrieve a web security scan by its ID',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.WS_RECENT_SCANS,
        displayName: 'Recent Web Security Scans',
        description: 'View recent web security scans',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
      {
        name: FeatureEnum.WS_SCAN_HEADERS,
        displayName: 'Web Security Scan Headers',
        description: 'View headers of web security scans',
        permissionType: UserRole.CLIENT,
        isSystemPermission: false,
        isActive: true,
      },
    ],
  },
];
