delete variant
This commit is contained in:
@@ -11,6 +11,10 @@ export class ProductVariantRepository extends BaseRepository<IProductVariant> {
|
|||||||
super(ProductVariantModel);
|
super(ProductVariantModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override async findById(id: string | number) {
|
||||||
|
return this.model.findOne({ _id: id, deleted: false });
|
||||||
|
}
|
||||||
|
|
||||||
async getProductVariants(shopId: string, productId: number, queries: VariantQueries) {
|
async getProductVariants(shopId: string, productId: number, queries: VariantQueries) {
|
||||||
const page = queries.page || 1;
|
const page = queries.page || 1;
|
||||||
const limit = queries.limit || 10;
|
const limit = queries.limit || 10;
|
||||||
@@ -19,6 +23,7 @@ export class ProductVariantRepository extends BaseRepository<IProductVariant> {
|
|||||||
const matchQuery: any = {
|
const matchQuery: any = {
|
||||||
shop: new Types.ObjectId(shopId),
|
shop: new Types.ObjectId(shopId),
|
||||||
product: productId,
|
product: productId,
|
||||||
|
deleted: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const sortBy: any = {
|
const sortBy: any = {
|
||||||
@@ -182,6 +187,7 @@ export class ProductVariantRepository extends BaseRepository<IProductVariant> {
|
|||||||
|
|
||||||
const matchQuery: any = {
|
const matchQuery: any = {
|
||||||
shop: new Types.ObjectId(shopId),
|
shop: new Types.ObjectId(shopId),
|
||||||
|
deleted: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const sortBy: any = {
|
const sortBy: any = {
|
||||||
@@ -329,6 +335,7 @@ export class ProductVariantRepository extends BaseRepository<IProductVariant> {
|
|||||||
_id: new Types.ObjectId(variantId),
|
_id: new Types.ObjectId(variantId),
|
||||||
shop: new Types.ObjectId(shopId),
|
shop: new Types.ObjectId(shopId),
|
||||||
product: productId,
|
product: productId,
|
||||||
|
deleted: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export interface IProductVariant {
|
|||||||
dimensions: IDimensions;
|
dimensions: IDimensions;
|
||||||
sellerSpecialCode: string;
|
sellerSpecialCode: string;
|
||||||
themeValue: Types.ObjectId;
|
themeValue: Types.ObjectId;
|
||||||
|
deleted: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IPrice {
|
export interface IPrice {
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ const productVariantSchema = new Schema<IProductVariant>(
|
|||||||
dimensions: { type: productDimensionsSchema, required: true },
|
dimensions: { type: productDimensionsSchema, required: true },
|
||||||
sellerSpecialCode: { type: String },
|
sellerSpecialCode: { type: String },
|
||||||
themeValue: { type: Schema.Types.ObjectId, ref: "ThemeValue", required: true },
|
themeValue: { type: Schema.Types.ObjectId, ref: "ThemeValue", required: true },
|
||||||
|
deleted: { type: Boolean, default: false },
|
||||||
},
|
},
|
||||||
{ timestamps: true, toObject: { virtuals: true, versionKey: false }, toJSON: { virtuals: true, versionKey: false }, id: false },
|
{ timestamps: true, toObject: { virtuals: true, versionKey: false }, toJSON: { virtuals: true, versionKey: false }, id: false },
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -306,6 +306,17 @@ class ProductController extends BaseController {
|
|||||||
return this.response(data);
|
return this.response(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("Delete product variant as admin ")
|
||||||
|
@ApiResponse("successfully", HttpStatus.Ok)
|
||||||
|
@ApiParam("id", "id of product variant", true)
|
||||||
|
@ApiParam("variantId", "id of product variant", true)
|
||||||
|
@ApiAuth()
|
||||||
|
@httpDelete("/variants/:variantId", Guard.authAdmin())
|
||||||
|
public async removeVariant(@queryParam() paramDto: SetFreeShipParamDto) {
|
||||||
|
const data = await this.productService.softDeleteProductVariant( paramDto.variantId);
|
||||||
|
return this.response(data);
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("update a variant of product ==> need to login as seller")
|
@ApiOperation("update a variant of product ==> need to login as seller")
|
||||||
@ApiResponse("successfully", HttpStatus.Created)
|
@ApiResponse("successfully", HttpStatus.Created)
|
||||||
@ApiModel(UpdateVariantDTO)
|
@ApiModel(UpdateVariantDTO)
|
||||||
|
|||||||
@@ -1103,6 +1103,11 @@ class ProductService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async softDeleteProductVariant(variantId: string) {
|
||||||
|
await this.productVariantRepo.model.findOneAndUpdate({ _id: variantId }, { deleted: true });
|
||||||
|
return { message: 'Deleted successfully' }
|
||||||
|
}
|
||||||
|
|
||||||
//################################################################
|
//################################################################
|
||||||
async cloneProduct(ownerId: string, productId: number) {
|
async cloneProduct(ownerId: string, productId: number) {
|
||||||
const product = await this.validateProduct(productId, ownerId);
|
const product = await this.validateProduct(productId, ownerId);
|
||||||
|
|||||||
Reference in New Issue
Block a user