Files
serverMontime/src/modules/businesses/dto/set-availability.dto.ts
T
2026-05-25 20:06:10 +03:30

44 lines
1.1 KiB
TypeScript

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[];
}