Files
dsc-api/src/modules/announcements/DTO/create-announcement.dto.ts
T

55 lines
2.1 KiB
TypeScript
Executable File

import { ApiProperty } from "@nestjs/swagger";
import {
ArrayMinSize,
IsArray,
IsBoolean,
IsDateString,
IsNotEmpty,
IsOptional,
IsString,
IsUUID,
Length,
MinLength,
} from "class-validator";
import { AnnouncementMessage } from "../../../common/enums/message.enum";
export class CreateAnnouncementDto {
@IsNotEmpty({ message: AnnouncementMessage.TITLE_IS_REQUIRED })
@IsString({ message: AnnouncementMessage.TITLE_STRING })
@Length(5, 100, { message: AnnouncementMessage.TITLE_LENGTH })
@ApiProperty({ description: "Title of the announcement", example: "اطلاعیه جدید" })
title: string;
@IsNotEmpty({ message: AnnouncementMessage.CONTENT_IS_REQUIRED })
@IsString({ message: AnnouncementMessage.CONTENT_IS_STRING })
@MinLength(10, { message: AnnouncementMessage.CONTENT_MUST_BE_LONGER })
@ApiProperty({ description: "Content of the announcement", example: "اطلاعیه جدید برای کاربران" })
content: string;
@IsOptional()
@IsNotEmpty({ message: AnnouncementMessage.PUBLISH_AT_IS_REQUIRED })
@IsDateString({}, { message: AnnouncementMessage.PUBLISH_AT_MUST_BE_DATE })
@ApiProperty({ description: "Publish date of the announcement", example: "2023-10-01T10:00:00Z" })
publishAt: Date;
@IsNotEmpty({ message: AnnouncementMessage.IMPORTANT_IS_REQUIRED })
@IsBoolean({ message: AnnouncementMessage.IMPORTANT_MUST_BE_BOOLEAN })
@ApiProperty({ description: "Is this announcement important?", example: false })
isImportant: boolean;
@IsOptional()
@IsNotEmpty({ message: AnnouncementMessage.SERVICE_MUST_BE_ID })
@ArrayMinSize(1)
@IsUUID("4", { message: AnnouncementMessage.SERVICE_MUST_BE_UUID, each: true })
@ApiProperty({ type: [String], description: "Service IDs", example: ["d290f1ee-6c54-4b01-90e6-d701748f0851"] })
serviceIds: string[];
@IsOptional()
@ArrayMinSize(1)
@IsArray({ message: AnnouncementMessage.USER_IDS_MUST_BE_ARRAY })
@IsUUID("4", { each: true, message: AnnouncementMessage.USER_MUST_BE_UUID })
@ApiProperty({ type: [String], description: "Array of users ids", example: ["f7b1b3b1-1b1b-4b1b-8b1b-1b1b1b1b1b1b"] })
userIds: string[];
}