Files
vip-coordinator/backend/src/vips/dto/create-vip.dto.ts
kyle 8e8bbad3fc feat: add party size tracking and master event linking
Add partySize field to VIP model (default 1) to track total people
traveling with each VIP including entourage/handlers/spouses. Vehicle
capacity checks now sum party sizes instead of just counting VIPs.

Add masterEventId self-reference to ScheduleEvent for linking transport
legs to shared itinerary items (events, meetings, meals). When creating
a transport event, users can link it to a shared activity and VIPs
auto-populate from the linked event.

Changes:
- Schema: partySize on VIP, masterEventId on ScheduleEvent
- Backend: party-size-aware capacity checks, master/child event includes
- VIP Form: party size input with helper text
- Event Form: party-size capacity display, master event selector
- Event List: party size in capacity and VIP names, master event badges
- Command Center: all VIP names shown with party size indicators

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 23:40:44 +01:00

47 lines
683 B
TypeScript

import {
IsString,
IsEnum,
IsOptional,
IsBoolean,
IsDateString,
IsInt,
Min,
} from 'class-validator';
import { Department, ArrivalMode } from '@prisma/client';
export class CreateVipDto {
@IsString()
name: string;
@IsString()
@IsOptional()
organization?: string;
@IsEnum(Department)
department: Department;
@IsEnum(ArrivalMode)
arrivalMode: ArrivalMode;
@IsDateString()
@IsOptional()
expectedArrival?: string;
@IsBoolean()
@IsOptional()
airportPickup?: boolean;
@IsBoolean()
@IsOptional()
venueTransport?: boolean;
@IsInt()
@IsOptional()
@Min(1)
partySize?: number;
@IsString()
@IsOptional()
notes?: string;
}