import { IsString, IsNumber, IsDate, IsOptional, IsNotEmpty } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; import { Transform } from 'class-transformer'; export class EventAnalyticsDTO { @ApiProperty({ type: Number }) @IsNumber() @IsNotEmpty() eventId: number; @ApiProperty({ type: Number }) @IsOptional() @IsNumber() views: number; @ApiProperty({ type: Number }) @IsOptional() @IsNumber() ticketSales: number; @ApiProperty({ type: Number }) @IsOptional() @IsNumber() engagementRate: number; @ApiProperty({ type: Number }) @IsOptional() @IsNumber() promotionViews: number; @ApiProperty({ type: Number }) @IsOptional() @IsNumber() promotionSales: number; @ApiProperty({ type: String }) @IsString() @IsOptional() status: string; @ApiProperty({ type: Date }) @IsOptional() @IsDate() @Transform(({ value }) => new Date(value)) validFrom: Date; @ApiProperty({ type: Date }) @IsOptional() @IsDate() @Transform(({ value }) => new Date(value)) validTill: Date; @ApiProperty({ type: Date }) @IsOptional() @IsDate() @Transform(({ value }) => new Date(value)) createdAt: Date; @ApiProperty({ type: Date }) @IsOptional() @IsDate() @Transform(({ value }) => new Date(value)) updatedAt: Date; @ApiProperty({ type: String }) @IsOptional() @IsString() createdBy: string; @ApiProperty({ type: String }) @IsOptional() @IsString() modifiedBy: string; @ApiProperty({ type: Date }) @IsOptional() @IsDate() @Transform(({ value }) => value ? new Date(value) : null) deletedAt: Date; @ApiProperty({ type: Number }) @IsNumber() @IsNotEmpty() version: number; } export class EventAnalyticsUpdateDTO extends EventAnalyticsDTO { @ApiProperty({ type: Number }) @IsNumber() @IsNotEmpty() id: number; }