/**
 * UpdateFraccionamientoDto - DTO para actualizar fraccionamientos
 *
 * @module Construction
 */

import {
  IsString,
  IsOptional,
  IsInt,
  IsNumber,
  MaxLength,
  MinLength,
  Min,
} from 'class-validator';

/**
 * DTO para actualizar un fraccionamiento.
 * El proyectoId no se puede cambiar.
 */
export class UpdateFraccionamientoDto {
  @IsOptional()
  @IsString()
  @MinLength(3, { message: 'El codigo debe tener al menos 3 caracteres' })
  @MaxLength(20, { message: 'El codigo no puede exceder 20 caracteres' })
  codigo?: string;

  @IsOptional()
  @IsString()
  @MinLength(3, { message: 'El nombre debe tener al menos 3 caracteres' })
  @MaxLength(200, { message: 'El nombre no puede exceder 200 caracteres' })
  nombre?: string;

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

  @IsOptional()
  @IsInt({ message: 'El numero de manzanas debe ser entero' })
  @Min(0, { message: 'El numero de manzanas no puede ser negativo' })
  numeroManzanas?: number;

  @IsOptional()
  @IsInt({ message: 'El numero de lotes debe ser entero' })
  @Min(0, { message: 'El numero de lotes no puede ser negativo' })
  numeroLotes?: number;

  @IsOptional()
  @IsNumber({}, { message: 'La superficie debe ser un numero' })
  @Min(0, { message: 'La superficie no puede ser negativa' })
  superficieTotal?: number;
}
