import { Resource } from '@/entities/resource.entity';
import { Role } from '@/entities/role.entity';
import { SystemLang } from '@/system/lang/system.lang';
import { IsExistInDatabase } from '@/system/validators/decorators/is-exist-in-database';
import { IsArray, IsNumber, IsString } from 'class-validator';

export class CreateResourceRoleDto {
  @IsNumber(
    {},
    {
      message: SystemLang.getCustomText({
        en: 'Role ID must be a number.',
        vi: 'ID vai trò phải là số.',
      }),
    },
  )
  @IsExistInDatabase(
    Role,
    'id',
    {},
    {
      message: SystemLang.getCustomText({
        en: 'The specified role ID does not exist.',
        vi: 'ID vai trò được chỉ định không tồn tại.',
      }),
    },
  )
  role_id: Role['id'];

  @IsArray({
    message: SystemLang.getCustomText({
      en: 'Resource IDs must be provided as an array.',
      vi: 'Danh sách ID tài nguyên phải được cung cấp dưới dạng mảng.',
    }),
  })
  @IsNumber(
    {},
    {
      message: SystemLang.getCustomText({
        en: 'Each resource ID must be a number.',
        vi: 'Mỗi ID tài nguyên phải là một số.',
      }),
      each: true,
    },
  )
  @IsExistInDatabase(
    Resource,
    'id',
    {},
    {
      each: true,
      message: SystemLang.getCustomText({
        en: 'One or more resource IDs do not exist in the system.',
        vi: 'Một hoặc nhiều ID tài nguyên không tồn tại trong hệ thống.',
      }),
    },
  )
  resource_ids: Resource['id'][];
}
