import { ApiProperty } from '@nestjs/swagger'; import { ArrayMinSize, IsArray, IsBoolean, IsDateString, IsNotEmpty, IsOptional, IsString, 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() @IsDateString({}, { message: AnnouncementMessage.PUBLISH_AT_MUST_BE_DATE }) @ApiProperty({ description: 'Publish date of the announcement', example: '2025-02-25T10:00:00Z' }) publishAt?: string; @IsOptional() @IsBoolean({ message: AnnouncementMessage.IMPORTANT_MUST_BE_BOOLEAN }) @ApiProperty({ description: 'Is this announcement important?', example: false }) isImportant?: boolean; @IsOptional() @ArrayMinSize(1) @IsArray({ message: AnnouncementMessage.USER_IDS_MUST_BE_ARRAY }) @IsString({ each: true, message: AnnouncementMessage.USER_MUST_BE_UUID }) @ApiProperty({ type: [String], description: 'Array of user ids to send announcement to (if empty, sends to all users)', example: [], }) userIds?: string[]; }