import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; import { IsBoolean, IsNotEmpty, IsNumber, IsOptional, IsString, MaxLength } from "class-validator"; import { SliderMessage } from "../../../common/enums/message.enum"; export class CreateSliderDto { @ApiProperty({ description: "Title of the slider", example: "Summer Sale" }) @IsNotEmpty({ message: SliderMessage.TITLE_REQUIRED }) @IsString({ message: SliderMessage.TITLE_STRING }) @MaxLength(150, { message: SliderMessage.TITLE_MAX_LENGTH }) title: string; @ApiPropertyOptional({ description: "Description of the slider", example: "Get up to 50% off" }) @IsOptional() @IsString({ message: SliderMessage.DESCRIPTION_STRING }) @MaxLength(255, { message: SliderMessage.DESCRIPTION_MAX_LENGTH }) description?: string; @ApiProperty({ description: "URL of the slider image", example: "https://example.com/image.jpg" }) @IsNotEmpty({ message: SliderMessage.IMAGE_URL_REQUIRED }) @IsString({ message: SliderMessage.IMAGE_URL_STRING }) @MaxLength(255, { message: SliderMessage.IMAGE_URL_MAX_LENGTH }) imageUrl: string; @ApiPropertyOptional({ description: "Link URL for the slider", example: "https://example.com/sale" }) @IsOptional() @IsString({ message: SliderMessage.LINK_STRING }) @MaxLength(255, { message: SliderMessage.LINK_MAX_LENGTH }) link?: string; @ApiPropertyOptional({ description: "Order of the slider", example: 1, default: 0 }) @IsOptional() @IsNumber({}, { message: SliderMessage.ORDER_NUMBER }) order?: number; @ApiPropertyOptional({ description: "Whether the slider is active", example: true, default: true }) @IsOptional() @IsBoolean({ message: SliderMessage.IS_ACTIVE_SHOULD_BE_A_BOOLEAN }) isActive?: boolean; }