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

export class UpdateSettingsDto {
  // Company Details
  @IsString()
  @IsOptional()
  @MaxLength(255)
  company_name?: string;

  @IsUUID()
  @IsOptional()
  default_currency_id?: string;

  @IsString()
  @IsOptional()
  @MaxLength(100)
  timezone?: string;

  @IsString()
  @IsOptional()
  @MaxLength(20)
  fiscal_year_start?: string;

  // Booking ID prefix (e.g. "MT" → MT-093254). Letters/digits only;
  // normalized server-side at allocation. Empty falls back to "BK".
  @IsString()
  @IsOptional()
  @MaxLength(10)
  booking_prefix?: string;

  @IsString()
  @IsOptional()
  @MaxLength(500)
  website_url?: string;

  @IsString()
  @IsOptional()
  @MaxLength(500)
  logo_url?: string;

  // Branding
  @IsString()
  @IsOptional()
  @MaxLength(20)
  primary_color?: string;

  @IsString()
  @IsOptional()
  @MaxLength(20)
  secondary_color?: string;

  // Contact & Tax
  @IsString()
  @IsOptional()
  address?: string;

  @IsString()
  @IsOptional()
  @MaxLength(50)
  phone?: string;

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

  @IsString()
  @IsOptional()
  @MaxLength(100)
  tax_number?: string;

  @IsString()
  @IsOptional()
  @MaxLength(100)
  gst_number?: string;

  @IsString()
  @IsOptional()
  @MaxLength(100)
  pan_number?: string;

  // Bank Details
  @IsString()
  @IsOptional()
  @MaxLength(255)
  bank_name?: string;

  @IsString()
  @IsOptional()
  @MaxLength(100)
  account_number?: string;

  @IsString()
  @IsOptional()
  @MaxLength(50)
  ifsc_code?: string;

  // Lead Distribution
  @IsString()
  @IsOptional()
  @MaxLength(50)
  distribution_mode?: string;

  // Terms
  @IsString()
  @IsOptional()
  terms_and_conditions?: string;
}
