From 64eeb7d45b2e4cbfaf46f0cd3edcfe6b20ef0f51 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 13 Dec 2025 15:25:45 +0330 Subject: [PATCH] pop product --- src/modules/product/DTO/product.dto.ts | 42 +++++++++++++++++++ .../product/Repository/productVarinat.ts | 21 +++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/modules/product/DTO/product.dto.ts b/src/modules/product/DTO/product.dto.ts index 4645f23..4cc116a 100644 --- a/src/modules/product/DTO/product.dto.ts +++ b/src/modules/product/DTO/product.dto.ts @@ -83,6 +83,44 @@ class SaleFormatDTO { //################################# +class VariantProductCategoryDTO { + @Expose() + _id: string; + + @Expose() + title_fa: string; + + @Expose() + theme: string; +} + +class VariantProductDTO { + @Expose() + _id: number; + + @Expose() + title_fa: string; + + @Expose() + title_en: string; + + @Expose() + status: string; + + @Expose() + model: string; + + @Expose() + @Type(() => ImagesUrlDTO) + images: ImagesUrlDTO; + + @Expose() + @Type(() => VariantProductCategoryDTO) + category: VariantProductCategoryDTO; +} + +//################################# + export class ThemeValueDTO { @Expose() _id: string; @@ -293,6 +331,10 @@ export class ProductVariantDTO { @Type(() => ThemeValueDTO) themeValue?: ThemeValueDTO; + @Expose() + @Type(() => VariantProductDTO) + product?: VariantProductDTO; + public static transformProduct(data: IProductVariant): ProductVariantDTO { const productVariantDTO = plainToInstance(ProductVariantDTO, data, { excludeExtraneousValues: true, diff --git a/src/modules/product/Repository/productVarinat.ts b/src/modules/product/Repository/productVarinat.ts index 27a3969..34c542c 100644 --- a/src/modules/product/Repository/productVarinat.ts +++ b/src/modules/product/Repository/productVarinat.ts @@ -110,6 +110,24 @@ export class ProductVariantRepository extends BaseRepository { }, }, + { + $addFields: { + product: { + _id: "$product._id", + title_fa: "$product.title_fa", + title_en: "$product.title_en", + status: "$product.status", + model: "$product.model", + images: "$product.imagesUrl", + category: { + _id: "$category._id", + title_fa: "$category.title_fa", + theme: "$category.theme", + }, + }, + }, + }, + { $addFields: { product_id: "$product._id", @@ -120,7 +138,7 @@ export class ProductVariantRepository extends BaseRepository { model: "$product.model", category_theme: "$category.theme", category_title_fa: "$category.title_fa", - coverImage: "$product.imagesUrl.cover", + coverImage: "$product.images.cover", is_variant_active: { $cond: { if: { $eq: ["$market_status", ProductMarketStatus.Marketable] }, @@ -147,7 +165,6 @@ export class ProductVariantRepository extends BaseRepository { { $project: { category: 0, - product: 0, shop: 0, }, },