fix : prohibit return / cancel order
This commit is contained in:
@@ -258,6 +258,7 @@ export const enum OrderMessage {
|
||||
ItemAlreadyReceived = "سفارش شما قبلا تحویل گرفته شده است",
|
||||
ItemNotShipped = "سفارش هنوز ارسال نشده است",
|
||||
CancelCompleted = "فرآیند لغو کالا تکمیل شد",
|
||||
NotAllowed = "انجام این عملیات مجاز نیست",
|
||||
}
|
||||
|
||||
export const enum TicketMessage {
|
||||
|
||||
@@ -5,13 +5,13 @@ import { CancelOrderItemRepo, CancelOrderRepo, CancelReasonRepo } from "./cancel
|
||||
import { CancelOrderDTO, CompeleteCancelOrderDTO, CreateCancelDTO } from "./DTO/cancel.dto";
|
||||
import { CancelReasonDTO } from "./DTO/cancelReason.dto";
|
||||
import { CommonMessage, OrderMessage } from "../../common/enums/message.enum";
|
||||
import { OrderItemsStatus } from "../../common/enums/order.enum";
|
||||
import { OrderItemsStatus, OrdersStatus } from "../../common/enums/order.enum";
|
||||
import { AdminCancelsQueries } from "../../common/types/query.type";
|
||||
import { BadRequestError } from "../../core/app/app.errors";
|
||||
import { IOCTYPES } from "../../IOC/ioc.types";
|
||||
import { OrderItemRefEnum, ReasonRefEnum } from "../fine/models/fine.model";
|
||||
import { FineRepo } from "../fine/repository/fine.repository";
|
||||
import { OrderItemRepo } from "../order/order.repository";
|
||||
import { OrderItemRepo, OrderRepository } from "../order/order.repository";
|
||||
import { CancellerRefEnum, CancelStatusEnum } from "./models/cancel.model";
|
||||
import { StatusEnum } from "../../common/enums/status.enum";
|
||||
import { FineRuleRepo } from "../fine/repository/fineRule.repository";
|
||||
@@ -26,6 +26,7 @@ class CancelService {
|
||||
@inject(IOCTYPES.FineRuleRepo) private fineRuleRepo: FineRuleRepo;
|
||||
@inject(IOCTYPES.FineRepo) private fineRepo: FineRepo;
|
||||
@inject(IOCTYPES.NotificationService) notificationService: NotificationService;
|
||||
@inject(IOCTYPES.OrderService) orderRepository: OrderRepository;
|
||||
|
||||
//#######################################################
|
||||
|
||||
@@ -59,6 +60,14 @@ class CancelService {
|
||||
const session = await startSession();
|
||||
session.startTransaction();
|
||||
try {
|
||||
const { orderId } = createCancelDto;
|
||||
const order = await this.orderRepository.findById(orderId);
|
||||
if (!order) {
|
||||
throw new BadRequestError(OrderMessage.NotFound);
|
||||
}
|
||||
if (order.orderStatus != OrdersStatus.process_by_seller) {
|
||||
throw new BadRequestError(OrderMessage.NotAllowed);
|
||||
}
|
||||
// create Cancel Order
|
||||
let total_cancel_price = 0;
|
||||
const cancelOrder = await this.cancelOrderRepo.model.create(
|
||||
|
||||
@@ -6,7 +6,7 @@ import { ReasonDTO, UpdateReasonDTO } from "./DTO/returnReason.dto";
|
||||
import { ReturnOrderItemRepo, ReturnOrderRepo, ReturnReasonRepo } from "./return.repository";
|
||||
import { PaginationDTO } from "../../common/dto/pagination.dto";
|
||||
import { CommonMessage, OrderMessage, ShopMessage, UserMessage } from "../../common/enums/message.enum";
|
||||
import { OrderItemsStatus } from "../../common/enums/order.enum";
|
||||
import { OrderItemsStatus, OrdersStatus } from "../../common/enums/order.enum";
|
||||
import { StatusEnum } from "../../common/enums/status.enum";
|
||||
import { BadRequestError } from "../../core/app/app.errors";
|
||||
import { IOCTYPES } from "../../IOC/ioc.types";
|
||||
@@ -14,7 +14,7 @@ import { paginationUtils } from "../../utils/pagination.utils";
|
||||
import { SMS } from "../../utils/sms.service";
|
||||
import { FineRuleRepo } from "../fine/repository/fineRule.repository";
|
||||
import { NotificationService } from "../notification/notification.service";
|
||||
import { OrderItemRepo } from "../order/order.repository";
|
||||
import { OrderItemRepo, OrderRepository } from "../order/order.repository";
|
||||
import { ShopRepo } from "../shop/shop.repository";
|
||||
import { UserRepository } from "../user/user.repository";
|
||||
|
||||
@@ -28,6 +28,7 @@ class ReturnService {
|
||||
@inject(IOCTYPES.NotificationService) private notificationService: NotificationService;
|
||||
@inject(IOCTYPES.ShopRepo) private shopRepo: ShopRepo;
|
||||
@inject(IOCTYPES.UserRepository) private userRepository: UserRepository;
|
||||
@inject(IOCTYPES.OrderRepository) private orderRepository: OrderRepository;
|
||||
|
||||
//#######################################################
|
||||
|
||||
@@ -70,6 +71,15 @@ class ReturnService {
|
||||
try {
|
||||
const user = await this.userRepository.findById(userId);
|
||||
if (!user) throw new BadRequestError(UserMessage.UserNotFound);
|
||||
const { orderId } = returnDto;
|
||||
const order = await this.orderRepository.findById(orderId);
|
||||
if (!order) {
|
||||
throw new BadRequestError(OrderMessage.NotFound);
|
||||
}
|
||||
if (order.orderStatus != OrdersStatus.shipped) {
|
||||
throw new BadRequestError(OrderMessage.NotAllowed);
|
||||
}
|
||||
|
||||
// create ReturnOrder
|
||||
let total_return_price = 0;
|
||||
const returnOrder = await this.returnOrderRepo.model.create([{ user: userId, order: returnDto.orderId }], { session });
|
||||
|
||||
Reference in New Issue
Block a user