import { Type } from 'class-transformer';
import {
  ArrayMinSize,
  IsArray,
  IsDateString,
  IsNumber,
  IsOptional,
  IsString,
  IsUUID,
  Min,
  ValidateNested,
} from 'class-validator';

export class LineaAsientoDto {
  @IsUUID()
  cuenta_id: string;

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

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

  @IsNumber()
  @Min(0)
  debe_moneda: number;

  @IsNumber()
  @Min(0)
  haber_moneda: number;
}

export class CrearAsientoDto {
  @IsUUID()
  periodo_id: string;

  @IsDateString()
  fecha: string;

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

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

  @IsArray()
  @ArrayMinSize(2)
  @ValidateNested({ each: true })
  @Type(() => LineaAsientoDto)
  lineas: LineaAsientoDto[];
}

export class EditarAsientoDto {
  @IsOptional()
  @IsString()
  glosa?: string;

  @IsOptional()
  @IsDateString()
  fecha?: string;

  @IsArray()
  @ArrayMinSize(2)
  @ValidateNested({ each: true })
  @Type(() => LineaAsientoDto)
  lineas: LineaAsientoDto[];
}
