Files
dmenu-api/src/modules/delivery/dto/create-delivery.dto.ts
T
2025-12-17 10:20:15 +03:30

65 lines
1.9 KiB
TypeScript

import { IsNumber, IsBoolean, IsOptional, IsString, Min, IsEnum } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { DeliveryFeeTypeEnum, DeliveryMethodEnum } from '../interface/delivery';
export class CreateDeliveryDto {
@ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryMethodEnum })
@IsEnum(DeliveryMethodEnum)
method!: DeliveryMethodEnum;
@ApiProperty({ example: 'سرو در رستوران', description: 'Delivery method display name' })
@IsString()
title!: string;
@ApiProperty({ example: 5000, description: 'Delivery fee' })
@IsNumber()
@Min(0)
@Type(() => Number)
deliveryFee!: number;
@ApiProperty({ example: 100000, description: 'Minimum order price for free delivery' })
@IsNumber()
@Min(0)
@Type(() => Number)
minOrderPrice!: number;
@ApiPropertyOptional({ example: 'توضیحات روش ارسال', description: 'Delivery method description' })
@IsOptional()
@IsString()
description?: string;
@ApiPropertyOptional({ example: true, description: 'Is this delivery method enabled?' })
@IsOptional()
@IsBoolean()
@Type(() => Boolean)
enabled?: boolean;
@ApiPropertyOptional({ example: 0, description: 'Display order for sorting delivery methods' })
@IsOptional()
@IsNumber()
@Type(() => Number)
order?: number;
@ApiPropertyOptional({ example: 0, description: 'Kilometer number' })
@IsOptional()
@IsNumber()
@Type(() => Number)
kilometerNumber?: number;
@ApiPropertyOptional({ example: 0, description: 'Delivery fee for kilometer' })
@IsOptional()
@IsNumber()
@Type(() => Number)
deliveryFeeForKilometer?: number;
@ApiPropertyOptional({
example: DeliveryFeeTypeEnum.FIXED,
description: 'Delivery fee type',
enum: DeliveryFeeTypeEnum,
})
@IsOptional()
@IsEnum(DeliveryFeeTypeEnum)
deliveryFeeType!: DeliveryFeeTypeEnum;
}