UNPKG

trailpack-proxy-cart

Version:

eCommerce - Trailpack for Proxy Engine

234 lines (204 loc) 7.76 kB
/* eslint no-console: [0] */ 'use strict' const Email = require('trailpack-proxy-email').Email module.exports = class Subscription extends Email { /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ cancelled(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { return resSubscription.resolveLastOrder({transaction: options.transaction}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Cancelled` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION CANCELLED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('cancelled', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ failed(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { return resSubscription.resolveLastOrder({transaction: options.transaction}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Failed to Renew` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION FAILED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('failed', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ renewed(subscription, data, options) { options = options || {} data = data || {} // const Subscription = this.app.orm['Subscription'] const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, {transaction: options.transaction || null }) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { return resSubscription.resolveLastOrder({transaction: options.transaction}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Renewed` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION RENEWED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('renewed', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ activated(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Activated` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION ACTIVATED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('activated', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ deactivated(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Deactivated` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION DEACTIVATED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('deactivated', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ updated(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Updated` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION UPDATED SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('updated', subject, resSubscription, sendEmail) }) } /** * * @param subscription * @param data * @param options * @returns {Promise.<{text: string, html:string}>} */ willRenew(subscription, data, options) { options = options || {} data = data || {} const Subscription = this.app.orm['Subscription'] let resSubscription return Subscription.resolve(subscription, options) .then(_subscription => { if (!_subscription) { throw new Error('Subscription did not resolve') } resSubscription = _subscription return resSubscription.resolveCustomer({transaction: options.transaction || null}) }) .then(() => { const subject = data.subject || `Subscription ${ resSubscription.token } Will Renew` const sendEmail = typeof data.send_email !== 'undefined' ? data.send_email : true this.app.log.debug(`SUBSCRIPTION WILL RENEW SEND EMAIL ${ resSubscription.token }`, sendEmail) return this.compose('willRenew', subject, resSubscription, sendEmail) }) } }