import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; import { IsArray, IsEmail, IsIn, IsInt, IsOptional, IsString, Min, MinLength } from "class-validator"; export class AdminLoginDto { @ApiProperty() @IsString() username: string; @ApiProperty() @IsString() @MinLength(6) password: string; } export class ChangeAdminPasswordDto { @ApiProperty() @IsString() oldPassword: string; @ApiProperty() @IsString() @MinLength(6) newPassword: string; } export class CreateAdminUserDto { @ApiProperty() @IsString() username: string; @ApiProperty() @IsString() @MinLength(6) password: string; @ApiPropertyOptional() @IsOptional() @IsString() nickname?: string; @ApiPropertyOptional() @IsOptional() @IsEmail() email?: string; @ApiPropertyOptional({ type: [Number] }) @IsOptional() @IsArray() @IsInt({ each: true }) @Min(1, { each: true }) roleIds?: number[]; } export class CreatePermissionDto { @ApiProperty() @IsString() code: string; @ApiProperty() @IsString() name: string; @ApiPropertyOptional() @IsOptional() @IsString() description?: string; } export class CreateRoleDto { @ApiProperty() @IsString() code: string; @ApiProperty() @IsString() name: string; @ApiPropertyOptional() @IsOptional() @IsString() description?: string; @ApiPropertyOptional({ type: [Number] }) @IsOptional() @IsArray() @IsInt({ each: true }) @Min(1, { each: true }) permissionIds?: number[]; } export class UpdateAdminProfileDto { @ApiPropertyOptional() @IsOptional() @IsString() nickname?: string; @ApiPropertyOptional() @IsOptional() @IsEmail() email?: string; } export class UpdateAdminRolesDto { @ApiProperty({ type: [Number] }) @IsArray() @IsInt({ each: true }) @Min(1, { each: true }) roleIds: number[]; } export class UpdateAdminStatusDto { @ApiProperty({ enum: ["active", "disabled"] }) @IsIn(["active", "disabled"]) status: "active" | "disabled"; } export class UpdateRolePermissionsDto { @ApiProperty({ type: [Number] }) @IsArray() @IsInt({ each: true }) @Min(1, { each: true }) permissionIds: number[]; }