mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-08-25 21:29:40 +00:00
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
import { DaysEnum } from '@app/common/constants/days.enum';
|
|
import { ApiProperty } from '@nestjs/swagger';
|
|
import {
|
|
ArrayMinSize,
|
|
IsArray,
|
|
IsEnum,
|
|
IsInt,
|
|
IsNotEmpty,
|
|
IsOptional,
|
|
IsString,
|
|
IsUUID,
|
|
Matches,
|
|
Max,
|
|
Min,
|
|
} from 'class-validator';
|
|
|
|
export class CreateBookableSpaceDto {
|
|
@ApiProperty({
|
|
type: 'string',
|
|
isArray: true,
|
|
example: [
|
|
'3fa85f64-5717-4562-b3fc-2c963f66afa6',
|
|
'4fa85f64-5717-4562-b3fc-2c963f66afa7',
|
|
],
|
|
})
|
|
@IsArray()
|
|
@ArrayMinSize(1, { message: 'At least one space must be selected' })
|
|
@IsUUID('all', { each: true, message: 'Invalid space UUID provided' })
|
|
spaceUuids: string[];
|
|
|
|
@ApiProperty({
|
|
enum: DaysEnum,
|
|
isArray: true,
|
|
example: [DaysEnum.MON, DaysEnum.WED, DaysEnum.FRI],
|
|
})
|
|
@IsArray()
|
|
@ArrayMinSize(1, { message: 'At least one day must be selected' })
|
|
@IsEnum(DaysEnum, { each: true, message: 'Invalid day provided' })
|
|
daysAvailable: DaysEnum[];
|
|
|
|
@ApiProperty({ example: '09:00' })
|
|
@IsString()
|
|
@IsNotEmpty({ message: 'Start time cannot be empty' })
|
|
@Matches(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/, {
|
|
message: 'Start time must be in HH:mm format (24-hour)',
|
|
})
|
|
startTime: string;
|
|
|
|
@ApiProperty({ example: '17:00' })
|
|
@IsString()
|
|
@IsNotEmpty({ message: 'End time cannot be empty' })
|
|
@Matches(/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/, {
|
|
message: 'End time must be in HH:mm format (24-hour)',
|
|
})
|
|
endTime: string;
|
|
|
|
@ApiProperty({ example: 10, required: false })
|
|
@IsOptional()
|
|
@IsInt()
|
|
@Min(0, { message: 'Points cannot be negative' })
|
|
@Max(1000, { message: 'Points cannot exceed 1000' })
|
|
points?: number;
|
|
}
|