This commit is contained in:
2025-12-07 13:00:37 +03:30
parent 1dc1eaad9a
commit a945138543
13 changed files with 360 additions and 316 deletions
@@ -0,0 +1,49 @@
import { IsNotEmpty, IsNumber, IsOptional, IsString, Max, Min, IsArray } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
export class CreateReviewDto {
@IsNotEmpty()
@IsString()
@ApiProperty({ description: 'Food ID' })
foodId: string;
@IsNotEmpty()
@IsString()
@ApiProperty({ description: 'Order ID' })
orderId: string;
@IsNotEmpty()
@IsNumber()
@Min(1)
@Max(5)
@Type(() => Number)
@ApiProperty({ description: 'Rating from 1 to 5', example: 5, minimum: 1, maximum: 5 })
rating: number;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Comment text', example: 'Very delicious food!' })
comment?: string;
@IsOptional()
@IsArray()
@IsString({ each: true })
@ApiPropertyOptional({
description: 'Positive points about the food',
example: ['Great taste', 'Fast delivery'],
type: [String]
})
positivePoints?: string[];
@IsOptional()
@IsArray()
@IsString({ each: true })
@ApiPropertyOptional({
description: 'Negative points about the food',
example: ['Too spicy', 'Small portion'],
type: [String]
})
negativePoints?: string[];
}
@@ -0,0 +1,49 @@
import { IsBoolean, IsNumber, IsOptional, IsString } from 'class-validator';
import { ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
export class FindReviewsDto {
@IsOptional()
@IsNumber()
@Type(() => Number)
@ApiPropertyOptional({ description: 'Page number', example: 1 })
page?: number;
@IsOptional()
@IsNumber()
@Type(() => Number)
@ApiPropertyOptional({ description: 'Items per page', example: 10 })
limit?: number;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Food ID to filter comments' })
foodId?: string;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Restaurant ID to filter comments' })
restId?: string;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'User ID to filter comments' })
userId?: string;
@IsOptional()
@IsBoolean()
@ApiPropertyOptional({ description: 'Filter by approval status' })
@Type(() => Boolean)
isApproved?: boolean;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Order by field', example: 'createdAt' })
orderBy?: string;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Order direction', enum: ['asc', 'desc'], example: 'desc' })
order?: 'asc' | 'desc';
}
@@ -0,0 +1,43 @@
import { IsBoolean, IsNumber, IsOptional, IsString, Max, Min, IsArray } from 'class-validator';
import { ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
export class UpdateReviewDto {
@IsOptional()
@IsNumber()
@Min(1)
@Max(5)
@Type(() => Number)
@ApiPropertyOptional({ description: 'Rating from 1 to 5', minimum: 1, maximum: 5 })
rating?: number;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: 'Comment text' })
comment?: string;
@IsOptional()
@IsArray()
@IsString({ each: true })
@ApiPropertyOptional({
description: 'Positive points about the food',
type: [String]
})
positivePoints?: string[];
@IsOptional()
@IsArray()
@IsString({ each: true })
@ApiPropertyOptional({
description: 'Negative points about the food',
type: [String]
})
negativePoints?: string[];
@IsOptional()
@IsBoolean()
@ApiPropertyOptional({ description: 'Approval status (admin only)' })
@Type(() => Boolean)
isApproved?: boolean;
}