add : api to complete cancel
This commit is contained in:
@@ -257,6 +257,7 @@ export const enum OrderMessage {
|
||||
TrackingEmailSent = "ایمیل حاوی اطلاعات سفارس و کد رهگیری برای شما ارسال شد",
|
||||
ItemAlreadyReceived = "سفارش شما قبلا تحویل گرفته شده است",
|
||||
ItemNotShipped = "سفارش هنوز ارسال نشده است",
|
||||
CancelCompleted = "فرآیند لغو کالا تکمیل شد",
|
||||
}
|
||||
|
||||
export const enum TicketMessage {
|
||||
|
||||
@@ -166,6 +166,17 @@ export class AdminOrderController extends BaseController {
|
||||
return this.response(data);
|
||||
}
|
||||
|
||||
@ApiOperation("complete a cancell order with cancel order id")
|
||||
@ApiResponse("successful", HttpStatus.Ok)
|
||||
@ApiParam("cancellOrderId", "id of return order", true)
|
||||
@ApiModel(CompeleteReturnRequestDTO)
|
||||
@ApiAuth()
|
||||
@httpPost("/cancel/:cancelOrderId/complete", Guard.authAdmin(), Guard.checkAdminPermissions([PermissionEnum.ADMIN]))
|
||||
public async completeCancelOrder(@requestParam("cancelOrderId") cancelOrderId: string, @requestBody() dto: CompeleteReturnRequestDTO) {
|
||||
const data = await this.cancelService.completeCancelOrder(cancelOrderId, dto);
|
||||
return this.response(data);
|
||||
}
|
||||
|
||||
//get orders for admin panel
|
||||
@ApiOperation("get all native shop orders")
|
||||
@ApiResponse("successfully", HttpStatus.Ok)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Expose, Transform, Type, plainToClass } from "class-transformer";
|
||||
import { ArrayMinSize, IsArray, IsNotEmpty, IsNumber, IsString, Min, ValidateNested } from "class-validator";
|
||||
import { ArrayMinSize, IsArray, IsNotEmpty, IsNumber, IsOptional, IsString, Min, ValidateNested } from "class-validator";
|
||||
|
||||
import { ApiProperty } from "../../../common/decorator/swggerDocs";
|
||||
import { IsValidId } from "../../../common/decorator/validation.decorator";
|
||||
@@ -113,3 +113,24 @@ export class CreateCancelDTO {
|
||||
})
|
||||
items: CancelOrderItemsDTO[];
|
||||
}
|
||||
|
||||
export class CompeleteCancelOrderDTO {
|
||||
@Expose()
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
@ApiProperty({ type: "string", description: "Date", example: "1404/02/02" })
|
||||
refundDate: string;
|
||||
|
||||
@Expose()
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
@ApiProperty({ type: "string", description: "comment", example: "متن دلخواه" })
|
||||
refundComment: string;
|
||||
|
||||
@Expose()
|
||||
@IsOptional()
|
||||
@IsNotEmpty()
|
||||
@IsString()
|
||||
@ApiProperty({ type: "string", description: "the image of receipt if mandatory ", example: "https://cdn.com" })
|
||||
refundReceipt?: string;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ import { inject, injectable } from "inversify";
|
||||
import { isValidObjectId, startSession } from "mongoose";
|
||||
|
||||
import { CancelOrderItemRepo, CancelOrderRepo, CancelReasonRepo } from "./cancel.repository";
|
||||
import { CancelOrderDTO, CreateCancelDTO } from "./DTO/cancel.dto";
|
||||
import { CancelOrderDTO, CompeleteCancelOrderDTO, CreateCancelDTO } from "./DTO/cancel.dto";
|
||||
import { CancelReasonDTO } from "./DTO/cancelReason.dto";
|
||||
import { CommonMessage } from "../../common/enums/message.enum";
|
||||
import { CommonMessage, OrderMessage } from "../../common/enums/message.enum";
|
||||
import { OrderItemsStatus } from "../../common/enums/order.enum";
|
||||
import { AdminCancelsQueries } from "../../common/types/query.type";
|
||||
import { BadRequestError } from "../../core/app/app.errors";
|
||||
@@ -13,6 +13,7 @@ import { OrderItemRefEnum, ReasonRefEnum } from "../fine/models/fine.model";
|
||||
import { FineRepo } from "../fine/repository/fine.repository";
|
||||
import { OrderItemRepo } from "../order/order.repository";
|
||||
import { CancellerRefEnum } from "./models/cancel.model";
|
||||
import { StatusEnum } from "../../common/enums/status.enum";
|
||||
import { FineRuleRepo } from "../fine/repository/fineRule.repository";
|
||||
import { NotificationService } from "../notification/notification.service";
|
||||
|
||||
@@ -344,6 +345,26 @@ class CancelService {
|
||||
message: CommonMessage.Deleted,
|
||||
};
|
||||
}
|
||||
|
||||
async completeCancelOrder(cancelRequestId: string, dto: CompeleteCancelOrderDTO) {
|
||||
const { refundComment, refundDate, refundReceipt } = dto;
|
||||
|
||||
const cancelOrder = await this.cancelOrderRepo.model.findByIdAndUpdate(cancelRequestId, {
|
||||
status: StatusEnum.Completed,
|
||||
refundComment,
|
||||
refundDate,
|
||||
refundReceipt,
|
||||
});
|
||||
if (!cancelOrder) throw new BadRequestError(OrderMessage.NotFound);
|
||||
|
||||
return {
|
||||
message: OrderMessage.CancelCompleted,
|
||||
};
|
||||
}
|
||||
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
// async updateReturnReason(reasonId: string, updateReasonDto: UpdateReasonDTO) {
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
import { Types } from "mongoose";
|
||||
|
||||
import { OrderItemsStatus } from "../../../../common/enums/order.enum";
|
||||
import { CancellerRefEnum } from "../cancel.model";
|
||||
import { CancelStatusEnum, CancellerRefEnum } from "../cancel.model";
|
||||
|
||||
export interface ICancelOrder {
|
||||
order: number;
|
||||
canceller: Types.ObjectId;
|
||||
cancellerRef: CancellerRefEnum;
|
||||
status: OrderItemsStatus;
|
||||
status: CancelStatusEnum;
|
||||
total_price: number;
|
||||
cancellReceipt: string;
|
||||
cancellComment: string;
|
||||
cancellDate: Date;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Schema, model } from "mongoose";
|
||||
|
||||
import { ICancelOrder } from "./Abstraction/ICancel";
|
||||
import { OrderItemsStatus } from "../../../common/enums/order.enum";
|
||||
|
||||
export enum CancellerRefEnum {
|
||||
User = "User",
|
||||
@@ -9,13 +8,21 @@ export enum CancellerRefEnum {
|
||||
Admin = "Admin",
|
||||
}
|
||||
|
||||
export enum CancelStatusEnum {
|
||||
Pending = "Pending",
|
||||
Completed = "Completed",
|
||||
}
|
||||
|
||||
const CancelOrderSchema = new Schema<ICancelOrder>(
|
||||
{
|
||||
order: { type: Number, ref: "Order", required: true },
|
||||
canceller: { type: Schema.Types.ObjectId, refPath: "cancellerRef", required: true },
|
||||
cancellerRef: { type: String, enum: CancellerRefEnum, required: true },
|
||||
status: { type: String, enum: OrderItemsStatus, default: OrderItemsStatus.cancelled_system },
|
||||
status: { type: String, enum: CancelStatusEnum, default: CancelStatusEnum.Pending },
|
||||
total_price: { type: Number, default: 0 },
|
||||
cancellReceipt: { type: String, default: null },
|
||||
cancellComment: { type: String, default: null },
|
||||
cancellDate: { type: Date, default: null },
|
||||
},
|
||||
{ timestamps: true, toJSON: { versionKey: false, virtuals: true }, id: false },
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user