Files
edr-platform/apps/edr-passenger-api/src/modules/segments/segment-fare.dto.ts
2026-07-05 18:14:42 +03:00

68 lines
1.6 KiB
TypeScript

import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import {
IsString, IsInt, IsOptional, IsDateString, IsIn, Min,
} from 'class-validator';
export class CreateSegmentFareDto {
@ApiProperty({ example: 'route-uuid' })
@IsString()
routeId: string;
@ApiProperty({ example: 1 })
@IsInt() @Min(0)
originStopSequence: number;
@ApiProperty({ example: 5 })
@IsInt() @Min(1)
destinationStopSequence: number;
@ApiProperty({ example: 'seat-class-uuid' })
@IsString()
seatClassId: string;
@ApiProperty({ example: 35000, description: 'Base fare in minor units (e.g. 350.00 ETB = 35000)' })
@IsInt() @Min(0)
baseFareMinor: number;
@ApiPropertyOptional({ example: 'LOCAL', enum: ['LOCAL', 'INTERNATIONAL'] })
@IsOptional()
@IsIn(['LOCAL', 'INTERNATIONAL'])
nationality?: string;
@ApiPropertyOptional({ example: 'ETB', default: 'ETB' })
@IsOptional()
@IsString()
currency?: string;
@ApiProperty({ example: '2025-01-01T00:00:00.000Z' })
@IsDateString()
validFrom: string;
@ApiPropertyOptional({ example: '2026-12-31T23:59:59.000Z' })
@IsOptional()
@IsDateString()
validUntil?: string;
}
export class UpdateSegmentFareDto {
@ApiPropertyOptional({ example: 40000 })
@IsOptional()
@IsInt() @Min(0)
baseFareMinor?: number;
@ApiPropertyOptional({ example: 'ETB' })
@IsOptional()
@IsString()
currency?: string;
@ApiPropertyOptional({ example: '2025-06-01T00:00:00.000Z' })
@IsOptional()
@IsDateString()
validFrom?: string;
@ApiPropertyOptional({ example: '2026-12-31T23:59:59.000Z' })
@IsOptional()
@IsDateString()
validUntil?: string;
}