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