46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
const { withAccount } = require("../lib/utils")
|
|
const { getPrintfulOrder, cancelPrintfulOrder } = require("../lib/printfulRestAPI")
|
|
;(function () {
|
|
withAccount((login) => {
|
|
const order = context.db.find("bigCommerceOrder", {
|
|
filter: {
|
|
bigCommerceId: Number(context.data.bigCommerceId),
|
|
},
|
|
})[0]
|
|
if (!order)
|
|
throw {
|
|
message: "Order not found",
|
|
code: 404,
|
|
}
|
|
|
|
if (order.customerBigCommerceId !== login.bigCommerceId)
|
|
throw {
|
|
message: "You don't have permission to access this order",
|
|
code: 403,
|
|
}
|
|
const existingRevokeRequests = context.db.find("orderRevokeRequest", {
|
|
filter: {
|
|
bigCommerceId: context.data.bigCommerceId,
|
|
},
|
|
})
|
|
if (existingRevokeRequests.length > 0)
|
|
throw {
|
|
message: "Revoke request already exists",
|
|
code: 400,
|
|
}
|
|
if (!!order.status && order.status !== "draft") {
|
|
throw {
|
|
message: "Order is already in process",
|
|
code: 400,
|
|
}
|
|
}
|
|
const printfulOrder = getPrintfulOrder(order.bigCommerceId)
|
|
|
|
cancelPrintfulOrder(context.data.bigCommerceId)
|
|
context.data.status = "pending"
|
|
context.data.email = login.email
|
|
context.data.printfulId = printfulOrder.id
|
|
})
|
|
return context
|
|
})()
|