import { ApiPropertyOptional } from "@nestjs/swagger";
import { IsBoolean, IsOptional, IsString } from "class-validator";

// Este DTO valida SOLO tipo/forma. La regla "requerido si X" (p. ej. los
// campos de WhatsApp cuando usaWhatsapp=true) vive una sola vez en
// TallerParametrosService.validarRequeridoSi, derivada del catálogo
// (Task 5) — duplicarla acá iría contra esa misma decisión.
export class ActualizarParametrosTenantDto {
  @ApiPropertyOptional({ description: "Usar facturación automática" })
  @IsOptional()
  @IsBoolean()
  usaFacturacion?: boolean;

  @ApiPropertyOptional({ description: "Validar existencias antes de facturar (reservado, sin consumidor hoy)" })
  @IsOptional()
  @IsBoolean()
  usaValidacionInventario?: boolean;

  @ApiPropertyOptional({ description: "Permitir crear productos desde el taller" })
  @IsOptional()
  @IsBoolean()
  permiteCrearProductos?: boolean;

  @ApiPropertyOptional({ description: "Permitir crear tiendas desde el taller" })
  @IsOptional()
  @IsBoolean()
  permiteCrearTiendas?: boolean;

  @ApiPropertyOptional({ description: "Enviar notificaciones por WhatsApp" })
  @IsOptional()
  @IsBoolean()
  usaWhatsapp?: boolean;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappPhoneNumberId?: string;

  @ApiPropertyOptional({ description: "Vacío = no cambiar el token ya guardado" })
  @IsOptional()
  @IsString()
  whatsappAccessToken?: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappApiVersion?: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappTemplateCotizacion?: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappTemplateEstado?: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappTemplateLanguage?: string;

  @ApiPropertyOptional()
  @IsOptional()
  @IsString()
  whatsappDefaultCountryCode?: string;
}
