UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

170 lines (169 loc) 7.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const spool_email_1 = require("@fabrix/spool-email"); class Order extends spool_email_1.Email { created(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { return resOrder.resolveCustomer({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Created`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER CREATED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('created', subject, resOrder, sendEmail); }); } cancelled(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Cancelled`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER CANCELLED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('cancelled', subject, resOrder, sendEmail); }); } failed(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Failed`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER FAILED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('failed', subject, resOrder, sendEmail); }); } fulfilled(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Fulfilled`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER FULFILLED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('fulfilled', subject, resOrder, sendEmail); }); } paid(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Paid`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER PAID SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('paid', subject, resOrder, sendEmail); }); } partiallyPaid(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Partially Paid Receipt`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER PARTIALLY PAID SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('partiallyPaid', subject, resOrder, sendEmail); }); } refunded(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Refunded`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER REFUNDED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('refunded', subject, resOrder, sendEmail); }); } updated(order, data, options) { options = options || {}; data = data || {}; const OrderModel = this.app.models['Order']; let resOrder; return OrderModel.resolve(order, { transaction: options.transaction || null }) .then(foundOrder => { if (!foundOrder) { throw new Error('Order did not resolve'); } resOrder = foundOrder; return resOrder.resolveOrderItems({ transaction: options.transaction || null }); }) .then(() => { const subject = data.subject || `Order ${resOrder.name} Updated`; const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true; this.app.log.debug(`ORDER UPDATED SEND EMAIL ${resOrder.name}`, sendEmail); return this.compose('updated', subject, resOrder, sendEmail); }); } } exports.Order = Order;