@fabrix/spool-cart
Version:
Spool - eCommerce Spool for Fabrix
170 lines (169 loc) • 7.67 kB
JavaScript
;
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;