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

/**
 * DTO para registrar el timbrado de Carta Porte
 * Datos retornados por el PAC despues de timbrar
 */
export class TimbrarCartaPorteDto {
  /**
   * UUID del CFDI timbrado (Timbre Fiscal Digital)
   */
  @IsUUID()
  @IsNotEmpty({ message: 'uuidCfdi es requerido' })
  uuidCfdi!: string;

  /**
   * Fecha y hora del timbrado (ISO 8601)
   */
  @IsDateString()
  @IsNotEmpty({ message: 'fechaTimbrado es requerida' })
  fechaTimbrado!: string;

  /**
   * XML completo del CFDI timbrado
   */
  @IsString()
  @IsNotEmpty({ message: 'xmlCfdi es requerido' })
  xmlCfdi!: string;

  /**
   * XML del complemento Carta Porte
   */
  @IsString()
  @IsNotEmpty({ message: 'xmlCartaPorte es requerido' })
  xmlCartaPorte!: string;

  /**
   * URL del PDF generado (representacion impresa)
   */
  @IsOptional()
  @IsUrl()
  pdfUrl?: string;

  /**
   * URL del codigo QR
   */
  @IsOptional()
  @IsUrl()
  qrUrl?: string;

  /**
   * Sello digital del CFDI
   */
  @IsOptional()
  @IsString()
  selloCfdi?: string;

  /**
   * Sello del SAT
   */
  @IsOptional()
  @IsString()
  selloSat?: string;

  /**
   * Numero de certificado del emisor
   */
  @IsOptional()
  @IsString()
  noCertificado?: string;

  /**
   * Numero de certificado del SAT
   */
  @IsOptional()
  @IsString()
  noCertificadoSat?: string;

  /**
   * Cadena original del timbre
   */
  @IsOptional()
  @IsString()
  cadenaOriginalTimbre?: string;
}
