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

export class CreateFollowupDto {
    @IsString()
    @IsNotEmpty()
    clientId: string;

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

    @IsString()
    @IsNotEmpty()
    userId: string; // Typically extracted from auth context, but simplified here

    @IsDateString()
    @IsNotEmpty()
    date: string;

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

    // Alias description for frontend compatibility if needed, but schema uses notes.
    // Frontend sends 'description', let's map it or support both.
    @IsString()
    @IsOptional()
    description?: string;

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

    @IsString()
    @IsOptional()
    type?: 'CALL' | 'MESSAGE' | 'DEMO_SCHEDULED' | 'DEMO_COMPLETED' | 'QUOTE_REQUEST' | 'QUOTE_SEND' | 'VISIT_SCHEDULED' | 'VISIT_COMPLETED' | 'NEGOTIATION' | 'FOLLOWUP' | 'DEMO' | 'QUOTE';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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