import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsInt, IsEnum, IsOptional } from 'class-validator';
import { ZoomRole } from '../enums/zoom-role.enum';
import { ZoomRegistrationUpdate } from '../enums/zoom-registration-update.enum';

export class RegisterZoomUserDto {
  @ApiProperty({ description: 'Program registration id (hdb_program_registration.id)' })
  @IsInt()
  registrationId: number;

  @ApiPropertyOptional({
    description:
      "Program session id to act on. Defaults to the registration's own session when omitted.",
  })
  @IsOptional()
  @IsInt()
  sessionId?: number;

  @ApiProperty({
    description: 'Registration action',
    enum: ZoomRegistrationUpdate,
    default: ZoomRegistrationUpdate.REGISTER,
  })
  @IsEnum(ZoomRegistrationUpdate)
  action: ZoomRegistrationUpdate;

  @ApiPropertyOptional({
    description: 'Role to register as (only relevant for REGISTER)',
    enum: ZoomRole,
    default: ZoomRole.ATTENDEE,
  })
  @IsOptional()
  @IsEnum(ZoomRole)
  role?: ZoomRole;

  @ApiPropertyOptional({ description: 'Acting user id (set from auth context)' })
  @IsOptional()
  @IsInt()
  actingUserId?: number;
}
