From 4f4fd7b73423ae766132419df26173f169091512 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Wed, 11 Dec 2024 12:03:09 +0400 Subject: [PATCH] added count validation --- .../dtos/create-space-product-model.dto.ts | 2 ++ .../services/space-product-model.service.ts | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/space-model/dtos/create-space-product-model.dto.ts b/src/space-model/dtos/create-space-product-model.dto.ts index 8b98bc6..11d8bb5 100644 --- a/src/space-model/dtos/create-space-product-model.dto.ts +++ b/src/space-model/dtos/create-space-product-model.dto.ts @@ -5,6 +5,7 @@ import { IsArray, ValidateNested, IsInt, + ArrayNotEmpty, } from 'class-validator'; import { Type } from 'class-transformer'; import { CreateSpaceProductItemModelDto } from './create-space-product-item-model.dto'; @@ -31,6 +32,7 @@ export class CreateSpaceProductModelDto { type: [CreateSpaceProductItemModelDto], }) @IsArray() + @ArrayNotEmpty() @ValidateNested({ each: true }) @Type(() => CreateSpaceProductItemModelDto) items: CreateSpaceProductItemModelDto[]; diff --git a/src/space-model/services/space-product-model.service.ts b/src/space-model/services/space-product-model.service.ts index c478dca..cf60203 100644 --- a/src/space-model/services/space-product-model.service.ts +++ b/src/space-model/services/space-product-model.service.ts @@ -39,6 +39,8 @@ export class SpaceProductModelService { spaceProductModelDto: CreateSpaceProductModelDto, spaceModel: SpaceModelEntity, ) { + this.validateCount(spaceProductModelDto); + const product = await this.productRepository.findOneBy({ uuid: spaceProductModelDto.productId, }); @@ -62,4 +64,14 @@ export class SpaceProductModelService { spaceModel, ); } + + private validateCount(spaceProductModelDto: CreateSpaceProductModelDto) { + const productItemCount = spaceProductModelDto.items.length; + if (spaceProductModelDto.productCount !== productItemCount) { + throw new HttpException( + `Product count (${spaceProductModelDto.productCount}) does not match the number of items (${productItemCount}) for product ID ${spaceProductModelDto.productId}.`, + HttpStatus.BAD_REQUEST, + ); + } + } }