138 lines
1.9 KiB
TypeScript
138 lines
1.9 KiB
TypeScript
import {
|
|
IsString,
|
|
IsNumber,
|
|
IsBoolean,
|
|
IsOptional,
|
|
IsEnum,
|
|
IsDateString,
|
|
IsArray,
|
|
IsUUID,
|
|
Min,
|
|
Max,
|
|
Length,
|
|
} from 'class-validator';
|
|
import { PromotionType } from '../entities/promotion.entity';
|
|
|
|
export class CreatePromotionDto {
|
|
@IsString()
|
|
@Length(2, 100)
|
|
name: string;
|
|
|
|
@IsString()
|
|
@Length(2, 50)
|
|
code: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsEnum(PromotionType)
|
|
type: PromotionType;
|
|
|
|
@IsNumber()
|
|
@Min(0)
|
|
value: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
minPurchaseAmount?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
maxDiscount?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(1)
|
|
usageLimit?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(1)
|
|
perUserLimit?: number;
|
|
|
|
@IsDateString()
|
|
startsAt: string;
|
|
|
|
@IsDateString()
|
|
endsAt: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isActive?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsUUID('4', { each: true })
|
|
applicablePackageIds?: string[];
|
|
}
|
|
|
|
export class UpdatePromotionDto {
|
|
@IsOptional()
|
|
@IsString()
|
|
@Length(2, 100)
|
|
name?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
value?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
minPurchaseAmount?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
maxDiscount?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(1)
|
|
usageLimit?: number;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(1)
|
|
perUserLimit?: number;
|
|
|
|
@IsOptional()
|
|
@IsDateString()
|
|
startsAt?: string;
|
|
|
|
@IsOptional()
|
|
@IsDateString()
|
|
endsAt?: string;
|
|
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
isActive?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsUUID('4', { each: true })
|
|
applicablePackageIds?: string[];
|
|
}
|
|
|
|
export class ValidatePromoCodeDto {
|
|
@IsString()
|
|
code: string;
|
|
|
|
@IsOptional()
|
|
@IsUUID()
|
|
packageId?: string;
|
|
|
|
@IsOptional()
|
|
@IsNumber()
|
|
@Min(0)
|
|
purchaseAmount?: number;
|
|
}
|