import { Action, task, api } from "actionhero"; export class orderExport extends Action { constructor() { super(); this.name = "orderExport"; this.description = "I am an API method which will start a specific order exporting"; this.outputExample = { status: "success", orderNumber: "12345", message: "Order 123456 is being exported" }; this.inputs = { orderNumber: { required : true }, exportType: { required: true } } } async run({session, response, params }) { const {orderNumber, exportType} = params; const { shop } = session.shopifySession; const { order } = await api.exportOrders.getOrderData(orderNumber, shop); if(!order){ response.orderNumber = orderNumber; response.exportType = exportType; response.status = "error"; response.message = `Could not find order ${ orderNumber }.`; throw response.message; } if(exportType == "full" || exportType == "retail" ){ await task.enqueue( "exportOrder", { order: order, shop: shop, exportType: "invoice"}, "default" ); } if(exportType == "full" || exportType == "rental" ){ await task.enqueue( "exportOrder", { order: order, shop: shop, exportType: "reservation"}, "default" ); } response.orderNumber = orderNumber; response.exportType = exportType; response.status = "success"; response.message = `${exportType} order ${ orderNumber } is being exported`; } } export class orderExportWebhook extends Action { constructor() { super(); this.name = "orderExportWebhook"; this.description = "I am an API method which will start a specific order exporting from a shopify webhook"; this.outputExample = {}; this.inputs = { id: {required: false}, xShopifyApiVersion: {required: false}, xShopifyHmacSha256: {required: false}, xShopifyShopDomain: {required: false}, xShopifyTest: {required: false}, xShopifyTopic: {required: false} } } async run({session, response, params }) { const exportType = "full"; const {xShopifyShopDomain:shop, id} = params const webhooksActive = await api.shopSettings.getValue(shop, "webhooks"); if(!webhooksActive) return; const { order } = await api.exportOrders.getOrderData(id, shop); if(!order){ response.orderNumber = id; response.exportType = exportType; response.status = "error"; response.message = `Could not find order ${id}.`; throw response.message; } if(exportType == "full" || exportType == "retail" ){ await task.enqueue( "exportOrder", { order: order, shop: shop, exportType: "invoice"}, "default" ); } if(exportType == "full" || exportType == "rental" ){ await task.enqueue( "exportOrder", { order: order, shop: shop, exportType: "reservation"}, "default" ); } response.orderNumber = id; response.exportType = exportType; response.status = "success"; response.message = `${exportType} order ${id} is being exported`; } }