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

/**
 * A count-only wagon-transfer request. The requester picks source yard, wagon
 * type, destination yard and HOW MANY — never the specific wagons; OCC hand-picks
 * those at fulfilment. The quantity may not exceed the AVAILABLE wagons of that
 * type currently in the source yard, and a reason is mandatory.
 */
export class CreateTransferRequestDto {
  @IsUUID()
  fromYardId!: string;

  @IsUUID()
  toYardId!: string;

  @IsUUID()
  wagonTypeId!: string;

  @IsInt()
  @Min(1)
  @Max(1000)
  quantity!: number;

  @ApiProperty({ description: 'Why the wagons are needed — shown on the OCC queue' })
  @IsString()
  @IsNotEmpty()
  @MaxLength(2000)
  reason!: string;

  @ApiPropertyOptional({ description: 'Optional note for the fulfilling staff' })
  @IsOptional()
  @IsString()
  note?: string;
}
