mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-28 12:30:58 +00:00
104 lines
2.2 KiB
TypeScript
104 lines
2.2 KiB
TypeScript
import { ApiProperty, ApiPropertyOptional, PartialType } from '@nestjs/swagger';
|
|
import { Type } from 'class-transformer';
|
|
import { IsArray, IsEnum, IsInt, IsNumber, IsOptional, IsString, IsUUID, Matches, Min, ValidateNested } from 'class-validator';
|
|
|
|
import { FEE_RULE_TYPES, FeeRuleType } from '../entities/warehouse-fee-rule.entity';
|
|
|
|
export class FeeRuleTierDto {
|
|
@ApiProperty({ example: 4 })
|
|
@IsInt()
|
|
@Min(1)
|
|
fromDay!: number;
|
|
|
|
@ApiPropertyOptional({ example: 4, description: 'Inclusive. Leave empty for an open-ended tier.' })
|
|
@IsOptional()
|
|
@IsInt()
|
|
@Min(1)
|
|
toDay?: number | null;
|
|
|
|
@ApiProperty({ example: 2500 })
|
|
@IsNumber()
|
|
@Min(0)
|
|
ratePerDay!: number;
|
|
}
|
|
|
|
export class CreateFeeRuleDto {
|
|
@ApiProperty()
|
|
@IsString()
|
|
@Matches(/^[A-Za-z\s]+$/, { message: 'name may only contain letters and spaces' })
|
|
name!: string;
|
|
|
|
@ApiProperty({ enum: FEE_RULE_TYPES })
|
|
@IsEnum(FEE_RULE_TYPES)
|
|
ruleType!: FeeRuleType;
|
|
|
|
@ApiPropertyOptional({ default: 100 })
|
|
@IsOptional()
|
|
@IsInt()
|
|
priority?: number;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsOptional()
|
|
@IsString()
|
|
freightType?: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsOptional()
|
|
@IsString()
|
|
tradeDirection?: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsOptional()
|
|
@IsString()
|
|
cargoTypeCode?: string;
|
|
|
|
@ApiPropertyOptional()
|
|
@IsOptional()
|
|
@IsString()
|
|
containerType?: string;
|
|
|
|
@ApiPropertyOptional({ format: 'uuid' })
|
|
@IsOptional()
|
|
@IsUUID()
|
|
facilityId?: string;
|
|
|
|
@ApiPropertyOptional({ format: 'uuid' })
|
|
@IsOptional()
|
|
@IsUUID()
|
|
warehouseId?: string;
|
|
|
|
@ApiPropertyOptional({ format: 'uuid' })
|
|
@IsOptional()
|
|
@IsUUID()
|
|
yardId?: string;
|
|
|
|
@ApiPropertyOptional({ format: 'uuid' })
|
|
@IsOptional()
|
|
@IsUUID()
|
|
zoneId?: string;
|
|
|
|
@ApiProperty({ description: 'Grace period in days before charging starts.' })
|
|
@IsInt()
|
|
@Min(0)
|
|
freeDays!: number;
|
|
|
|
@ApiProperty()
|
|
@IsNumber()
|
|
@Min(0)
|
|
ratePerDay!: number;
|
|
|
|
@ApiPropertyOptional({ type: [FeeRuleTierDto] })
|
|
@IsOptional()
|
|
@IsArray()
|
|
@ValidateNested({ each: true })
|
|
@Type(() => FeeRuleTierDto)
|
|
tiers?: FeeRuleTierDto[];
|
|
|
|
@ApiPropertyOptional({ default: 'USD' })
|
|
@IsOptional()
|
|
@IsString()
|
|
currency?: string;
|
|
}
|
|
|
|
export class UpdateFeeRuleDto extends PartialType(CreateFeeRuleDto) {}
|