* fix: rely on booking uid instead of id from handleNewBooking * docs: managed user create input timeZone * fix: make bookingResponsesSchema nullable * Revert "fix: make bookingResponsesSchema nullable" This reverts commit f3127b31dd259d23cae520c994d8e712fc0fa17e. * refactor: define inputs * refactor: define outputs * refactor: bookings controller * test: first seated event test * test: recurring seated event booking * test: multiple bookings for seated event * test: fetching individual seated bookings * test: fetch all bookings * test: make reschedule seated work and test it * wip: cancel seated booking * test: cancel seated booking * refactor: dont return attendee email in seat booking responses * refactor: order of properties in response * refactor: test cleanup * refactor: simplify output booking service * refactor: flaky test * refactor: try to fix test by splitting them * try to fix test * try to fix tests
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
import { Locales } from "@/lib/enums/locales";
|
|
import { CapitalizeTimeZone } from "@/lib/inputs/capitalize-timezone";
|
|
import { ApiProperty } from "@nestjs/swagger";
|
|
import { IsOptional, IsTimeZone, IsString, IsEnum, IsIn } from "class-validator";
|
|
|
|
export type WeekDay = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday";
|
|
export type TimeFormat = 12 | 24;
|
|
export class CreateManagedUserInput {
|
|
@IsString()
|
|
@ApiProperty({ example: "alice@example.com" })
|
|
email!: string;
|
|
|
|
@IsString()
|
|
@ApiProperty({ example: "Alice Smith", description: "Managed user's name is used in emails" })
|
|
name!: string;
|
|
|
|
@IsOptional()
|
|
@IsIn([12, 24], { message: "timeFormat must be a number either 12 or 24" })
|
|
@ApiProperty({ example: 12, enum: [12, 24], description: "Must be a number 12 or 24" })
|
|
timeFormat?: TimeFormat;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@ApiProperty({
|
|
example: "Monday",
|
|
enum: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
|
|
})
|
|
weekStart?: WeekDay;
|
|
|
|
@IsTimeZone()
|
|
@IsOptional()
|
|
@CapitalizeTimeZone()
|
|
@ApiProperty({
|
|
example: "America/New_York",
|
|
description: `Timezone is used to create user's default schedule from Monday to Friday from 9AM to 5PM. If it is not passed then user does not have
|
|
a default schedule and it must be created manually via the /schedules endpoint. Until the schedule is created, the user can't access availability atom to set his / her availability nor booked.
|
|
It will default to Europe/London if not passed.`,
|
|
})
|
|
timeZone?: string;
|
|
|
|
@IsEnum(Locales)
|
|
@IsOptional()
|
|
@ApiProperty({ example: Locales.EN, enum: Locales })
|
|
locale?: Locales;
|
|
}
|