import { IsEnum, IsOptional, IsString } from 'class-validator';

export enum AttendanceStatus {
  NOT_CHECKED_IN = 'NOT_CHECKED_IN',
  ON_SITE = 'ON_SITE',
  ONLINE = 'ONLINE',
  ABSENT = 'ABSENT',
  PTO = 'PTO',
  BUSINESS_CONFLICT = 'BUSINESS_CONFLICT',
  LATE = 'LATE',
  MEETING = 'MEETING',
}

export enum CheckinType {
  QR_CODE = 'QR_CODE',
  MANUAL = 'MANUAL',
  ONLINE = 'ONLINE',
  NFC = 'NFC',
}

export class CheckinDto {
  @IsOptional()
  @IsString()
  qrData?: string;

  @IsOptional()
  @IsEnum(CheckinType)
  checkinType?: CheckinType;

  @IsOptional()
  @IsEnum(AttendanceStatus)
  attendanceStatus?: AttendanceStatus;

  @IsOptional()
  @IsString()
  deviceId?: string;
}

export class GuestCheckinDto {
  @IsString()
  name!: string;

  @IsOptional()
  @IsString()
  email?: string;

  @IsOptional()
  @IsEnum(AttendanceStatus)
  attendanceStatus?: AttendanceStatus;

  @IsOptional()
  @IsString()
  deviceId?: string;
}

export class UpdateAttendanceStatusDto {
  @IsEnum(AttendanceStatus)
  status!: AttendanceStatus;

  @IsOptional()
  @IsString()
  notes?: string;
}
