import {
  IsEnum,
  IsInt,
  IsOptional,
  Matches,
  IsDateString,
  IsArray,
  ArrayNotEmpty,
  isDateString,
  IsString,
  IsIn,
} from 'class-validator';
import { StageEnum, RiskLevel } from '../entities/job.entity';
import { Type } from 'class-transformer';

export class CreateJobDto {
  @IsInt()
  companyId: number;

  // @IsOptional()
  // @IsString()
  // auditTimeSlot?: string; // "09:00-13:00" OR "14:00-18:00"

  @IsInt()
  auditStageId: number;

  @IsInt()
  templateId: number;

  @IsInt()
  leadAuditorId: number;

  @IsArray()
  @ArrayNotEmpty()
  @IsInt({ each: true })
  standards: number[]; // ✅ supports single or multiple

  @IsEnum(StageEnum)
  stage: StageEnum;

  @IsDateString()
  date: string;

  @IsOptional()
  @IsDateString()
  docReview?: string;

  @IsOptional()
  @IsInt()
  numEmployees?: number;

  @IsOptional()
  naceEacCodes?: string;

  @IsOptional()
  @Matches(/^(\d+(\.\d+)?|\.\d+)$/, {
    message: 'md must be a valid number format (e.g., .5, 1, 2)',
  })
  md?: string;

  @IsEnum(RiskLevel)
  mdRisk: RiskLevel;

  @IsOptional()
  @IsIn(['MORNING', 'AFTERNOON', 'FULL'])
  scheduleSlot?: 'MORNING' | 'AFTERNOON' | 'FULL';

   @IsOptional()
  @IsDateString()
  expectedSurveillanceDate?: string;

  @IsOptional()
  @IsDateString()
  expectedIADate?: string;

  @IsOptional()
  @IsDateString()
  expectedMRMDate?: string;

  @IsOptional()
  @IsDateString()
  expectedInitialInquiryDate?: string;

  @IsOptional()
  @IsDateString()
  expectedInitial_Stage1_Date?: string;

  @IsOptional()
  @IsDateString()
  prepareDate?: string;

  @IsOptional()
  @IsDateString()
  approvedDate?: string;
  
  
}
