107 lines
2.3 KiB
TypeScript
107 lines
2.3 KiB
TypeScript
import {
|
|
IsArray,
|
|
IsBoolean,
|
|
IsEnum,
|
|
IsInt,
|
|
IsISO8601,
|
|
IsOptional,
|
|
IsString,
|
|
Max,
|
|
Min,
|
|
MinLength,
|
|
ValidateIf,
|
|
ValidateNested,
|
|
} from 'class-validator';
|
|
import { Type } from 'class-transformer';
|
|
import { DeliveryType, SpecialOrderCategory } from '@prisma/client';
|
|
|
|
export class SpecialOrderImageDto {
|
|
@IsString()
|
|
@MinLength(1)
|
|
url!: string;
|
|
|
|
@IsString()
|
|
@MinLength(1)
|
|
storageKey!: string;
|
|
}
|
|
|
|
class SpecialOrderDetailsDto {
|
|
@IsEnum(SpecialOrderCategory, { message: 'دستهبندی نامعتبر است' })
|
|
category!: SpecialOrderCategory;
|
|
|
|
@IsString()
|
|
@MinLength(1, { message: 'مناسبت سفارش الزامی است' })
|
|
name!: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsISO8601({}, { message: 'تاریخ موردنیاز نامعتبر است' })
|
|
neededDate?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
receiveTime?: string;
|
|
|
|
@IsOptional()
|
|
@Type(() => Number)
|
|
@IsInt({ message: 'تعداد نفرات باید عدد باشد' })
|
|
@Min(1, { message: 'تعداد نفرات حداقل ۱ است' })
|
|
@Max(500, { message: 'تعداد نفرات بیش از حد مجاز است' })
|
|
servings?: number;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
cakeFlavor?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
filling?: string;
|
|
|
|
@IsOptional()
|
|
@Type(() => Boolean)
|
|
@IsBoolean()
|
|
baloutSuggestedCombo?: boolean;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
coating?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
designStyle?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
cakeText?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
decorations?: string;
|
|
|
|
@IsOptional()
|
|
@IsEnum(DeliveryType, { message: 'نوع دریافت نامعتبر است' })
|
|
deliveryType?: DeliveryType;
|
|
|
|
@ValidateIf((dto: SpecialOrderDetailsDto) => dto.deliveryType === DeliveryType.pickup)
|
|
@IsString({ message: 'انتخاب شعبه الزامی است' })
|
|
@MinLength(1, { message: 'انتخاب شعبه الزامی است' })
|
|
branchId?: string;
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@ValidateNested({ each: true })
|
|
@Type(() => SpecialOrderImageDto)
|
|
images?: SpecialOrderImageDto[];
|
|
}
|
|
|
|
export class CreateSpecialOrderDto extends SpecialOrderDetailsDto {
|
|
@IsString()
|
|
@MinLength(1)
|
|
userId!: string;
|
|
}
|
|
|
|
export class CreateMySpecialOrderDto extends SpecialOrderDetailsDto {}
|