import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import {
  IsBoolean,
  IsInt,
  IsNotEmpty,
  IsNumber,
  IsOptional,
  IsString,
  IsUUID,
  Max,
  Min,
} from 'class-validator';

export class CreateProductoPrecioCuotaDto {
  @ApiProperty({ description: 'ID del producto' })
  @IsUUID()
  producto_id: string;

  @ApiProperty({ description: 'Nombre descriptivo del plan, ej: "3 x 100.000 mensual"' })
  @IsString()
  @IsNotEmpty()
  nombre: string;

  @ApiProperty({ description: 'Cantidad de cuotas' })
  @IsInt()
  @Min(1)
  @Max(120)
  cant_cuotas: number;

  @ApiProperty({ description: 'Monto de cada cuota' })
  @IsNumber()
  @Min(0)
  monto_cuota: number;

  @ApiPropertyOptional({ description: 'Cuota inicial / entrada (opcional)' })
  @IsOptional()
  @IsNumber()
  @Min(0)
  cuota_inicial?: number;

  @ApiPropertyOptional({
    description: 'Descuento % sobre el total al comprar con este plan (0-100). Se usa en el ecommerce.',
    default: 0,
  })
  @IsOptional()
  @IsNumber()
  @Min(0)
  @Max(100)
  descuento_porcentaje?: number;

  @ApiPropertyOptional({ description: 'Moneda (default PYG)', default: 'PYG' })
  @IsOptional()
  @IsString()
  moneda?: string;

  @ApiPropertyOptional({ description: 'Activo (default true)', default: true })
  @IsOptional()
  @IsBoolean()
  activo?: boolean;

  @ApiPropertyOptional({ description: 'Orden de visualización' })
  @IsOptional()
  @IsInt()
  @Min(0)
  orden?: number;
}
