diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index 79289a1..bf428c8 100644 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -312,7 +312,7 @@ export const enum AdminMessage { UserNameNotEmpty = "نام کاربری نباید خالی باشد", RoleNotEmpty = "نقش کاربر نباید خالی باشد", PasswordNotEmpty = "پسورد نباید خالی باشد", - AdminIsExist = "این نام کاربری قبلا ثبت شده است", + AdminIsExist = "این ایمیل یا شماره همراه قبلا ثبت شده است", RoleNotFound = "نقش ادمین یافت نشد", EmailNotEmpty = "ایمیل نباید خالی باشد", PhoneNotEmpty = "شماره موبایل نباید خالی باشد", diff --git a/src/modules/admin/DTO/media.dto.ts b/src/modules/admin/DTO/media.dto.ts index 8db344d..64c6d32 100644 --- a/src/modules/admin/DTO/media.dto.ts +++ b/src/modules/admin/DTO/media.dto.ts @@ -140,6 +140,17 @@ export class UpdateSliderDTO { @IsBoolean() @ApiProperty({ type: "boolean", description: "slider active status", example: true, required: false }) isActive: boolean; + + @Expose() + @IsOptional() + @IsNotEmpty() + @IsEnum(DisplayLocations) + @ApiProperty({ + type: "string", + description: "Display location of the slider", + example: "homepage_top | homepage_bottom | category_page | product_page", + }) + displayLocation: DisplayLocations; } export class UpdateBannerDTO { @Expose() diff --git a/src/modules/product/product.controller.ts b/src/modules/product/product.controller.ts index 965c2c5..95bfaef 100644 --- a/src/modules/product/product.controller.ts +++ b/src/modules/product/product.controller.ts @@ -143,7 +143,7 @@ class ProductController extends BaseController { @httpPost("/update/save", Guard.authSeller(), ValidationMiddleware.validateInput(UpdateProductFinalStepDTO)) public async updateProductFinalStep(@requestBody() updateProductFinalStepDto: UpdateProductFinalStepDTO, @request() req: Request) { const seller = req.user as ISeller; - const data = await this.productService.updateProductFinalStepS(updateProductFinalStepDto, seller._id.toString()); + const data = await this.productService.updateProductFinalStepForSeller(updateProductFinalStepDto, seller._id.toString()); return this.response({ data }, HttpStatus.Created); } // request to create a product by admin diff --git a/src/modules/product/providers/product.service.ts b/src/modules/product/providers/product.service.ts index 0741db2..051c02a 100644 --- a/src/modules/product/providers/product.service.ts +++ b/src/modules/product/providers/product.service.ts @@ -485,7 +485,34 @@ class ProductService { { imagesUrl, // step: CreateProductStep.Image, - // status: ProductStatus.Pending, + status: ProductStatus.Approved, + }, + { new: true }, + ); + + return { + message: ProductMessage.ProductUpdated, + updatedProduct, + }; + } + + async updateProductFinalStepForSeller(updateFinalStepDto: UpdateProductFinalStepDTO, ownerId: string) { + const product = await this.validateProduct(updateFinalStepDto.productId, ownerId); + + // ensure the product is in draft status + this.ensureDraftStatus(product.status); + + // ensure the step is correct + // this.ensureCorrectStep(product.step, CreateProductStep.Image); + + const imagesUrl = { cover: updateFinalStepDto.coverImage, list: updateFinalStepDto.imagesList }; + + const updatedProduct = await this.productRepo.model.findByIdAndUpdate( + updateFinalStepDto.productId, + { + imagesUrl, + // step: CreateProductStep.Image, + status: ProductStatus.Pending, }, { new: true }, );