Merge pull request #77 from Danakcorp/mrtz

pop product
This commit is contained in:
morteza-mortezai
2025-12-13 15:26:43 +03:30
committed by GitHub
2 changed files with 61 additions and 2 deletions
+42
View File
@@ -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,
@@ -110,6 +110,24 @@ export class ProductVariantRepository extends BaseRepository<IProductVariant> {
},
},
{
$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<IProductVariant> {
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<IProductVariant> {
{
$project: {
category: 0,
product: 0,
shop: 0,
},
},