import { ApiProperty } from '@nestjs/swagger'; import { Transform, Type } from 'class-transformer'; import { ArrayMaxSize, IsArray, IsInt, IsString, Matches, Max, Min, ValidateNested, } from 'class-validator'; import { normalizeHmTimeInput } from '../../../common/utils/booking-schedule.util'; export class AvailabilitySlotDto { @ApiProperty({ description: '0=شنبه … 6=جمعه', minimum: 0, maximum: 6 }) @Type(() => Number) @IsInt() @Min(0) @Max(6) dayOfWeek!: number; @ApiProperty({ example: '09:00' }) @Transform(({ value }) => normalizeHmTimeInput(value) ?? value) @IsString() @Matches(/^([01]\d|2[0-3]):[0-5]\d]$/) startTime!: string; @ApiProperty({ example: '17:00' }) @Transform(({ value }) => normalizeHmTimeInput(value) ?? value) @IsString() @Matches(/^([01]\d|2[0-3]):[0-5]\d]$/) endTime!: string; } export class SetAvailabilityDto { @ApiProperty({ type: [AvailabilitySlotDto] }) @IsArray() @ArrayMaxSize(70) @ValidateNested({ each: true }) @Type(() => AvailabilitySlotDto) slots!: AvailabilitySlotDto[]; }