import { Type } from "class-transformer";
import {
    IsDate,
    IsEnum,
    IsInt,
    IsNotEmpty,
    IsOptional,
    IsString,
    Max,
    MaxLength,
    Min,
    MinLength,
    ValidateIf,
} from "class-validator";

export enum CylinderStatus {
    NEW = "NEW",
    INSIDE = "INSIDE",
    OUTSIDE = "OUTSIDE",
    ASSIGNED = "ASSIGNED",
}

export class CreateCylinderDto {
    // Optional: cylinders can be registered before a tag is fitted.
    @ValidateIf((o) => o.rfid !== undefined && o.rfid !== null && o.rfid !== "")
    @IsString()
    @MinLength(10, { message: "Minimum length should be 10" })
    @MaxLength(30, { message: "Maximum length should be 30" })
    rfid?: string;

    @IsString()
    @IsNotEmpty()
    item_id: string; // Cylinder Sr. No

    @IsString()
    @IsOptional()
    manufacturerName: string;  // NEW FIELD

    @IsString()
    @IsOptional()
    isSpecification?: string;  // NEW FIELD

    @IsString()
    @IsOptional()
    testPressure?: string;     // NEW FIELD

    @IsString()
    @IsOptional()
    tareWeight?: string;       // NEW FIELD

    @IsString()
    @IsOptional()
    waterCapacity?: string;    // NEW FIELD

    @IsString()
    @IsOptional()
    gasCapacity?: string;      // NEW FIELD

    @IsString()
    @IsOptional()
    grossWeight?: string;      // NEW FIELD

    @IsDate()
    @Type(() => Date)
    @IsOptional()
    hydrostaticTestDate?: Date;   // NEW FIELD

    @IsDate()
    @Type(() => Date)
    @IsOptional()
    hydrostaticDueDate?: Date;    // NEW FIELD

    @IsEnum(CylinderStatus)
    @IsOptional()
    status?: CylinderStatus;

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

    @IsDate()
    @Type(() => Date)
    @IsOptional()
    manufacturingDate?: Date;


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

    @IsOptional()
    @IsInt()
    @Type(() => Number)
    is_trial?: number;





}
