import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { IsArray, IsNotEmpty, IsOptional, IsString, MaxLength, ValidateNested } from 'class-validator';

export class CreatePerfilPrivilegioDto {
  @ApiProperty({ description: 'ID del módulo' })
  @IsString()
  @IsNotEmpty()
  modulo_id: string;

  @ApiProperty({ description: 'ID del privilegio' })
  @IsString()
  @IsNotEmpty()
  privilegio_id: string;
}

export class CreatePerfileDto {
  @ApiProperty({ description: 'Nombre del perfil' })
  @IsString()
  @IsNotEmpty()
  @MaxLength(50)
  perfil: string;

  @ApiProperty({ description: 'Descripción detallada del perfil', required: false })
  @IsString()
  @MaxLength(100)
  desc_perfil: string;

  @ApiProperty({ description: 'Lista de permisos asignados', type: [CreatePerfilPrivilegioDto], required: false })
  @IsOptional()
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CreatePerfilPrivilegioDto)
  permisos?: CreatePerfilPrivilegioDto[];
}
