44 lines
1.1 KiB
TypeScript
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[];
|
|
}
|