UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

144 lines (143 loc) 7.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const spool_email_1 = require("@fabrix/spool-email"); const moment = require("moment"); class Subscription extends spool_email_1.Template { cancelled(subscription) { const cancelTimeDate = new Date(subscription.cancelled_at); const cancelTime = moment(cancelTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); let reason; switch (subscription.cancel_reason) { case 'funding': reason = 'because we were unable to process your billing method'; break; case 'inventory': reason = 'because we are unable to fulfill your subscription'; break; case 'fraud': reason = 'because it was reported fraudulent'; break; case 'other': case 'customer': reason = 'by your request'; break; default: reason = 'by your request'; } return `<h1>Subscription ${subscription.token} Cancelled</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription was cancelled ${reason} and cancelled at ${cancelTime}.</p> <h5>Cancelled Subscription Items</h5> ${subscriptionItems} <p>Thank you!</p>`; } failed(subscription) { const cancelTimeDate = new Date(subscription.renews_on); const cancelTime = moment(cancelTimeDate.toDateString()) .add(this.app.config.get('cart.subscriptions.grace_period_days') || 0, 'days') .format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Failed to Renew</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription failed to renew and is at risk of being cancelled.</p> <p>To avoid cancellation of your subscription, please update your payment method or contact customer services.</p> <p>Your Subscription is set to cancel on ${cancelTime}</p> <p>Subscription Order Number: ${subscription.last_order.name}</p> <h5>Subscription Items</h5> ${subscriptionItems} <p>------------------------</p> <p>Subtotal: ${this.app.services.ProxyCartService.formatCurrency(subscription.subtotal_price, subscription.currency)}</p> <p>Total: ${this.app.services.ProxyCartService.formatCurrency(subscription.total_price, subscription.currency)}</p> <p>------------------------</p> <p>Thank you!</p>`; } renewed(subscription) { const renewOnTimeDate = new Date(subscription.renews_on); const renewOnTime = moment(renewOnTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Renewed</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription has renewed.</p> <p>Subscription Order Number: ${subscription.last_order.name}</p> <p>Next renewal date: ${renewOnTime}</p> <h5>Renewed Subscription Items</h5> ${subscriptionItems} <p>------------------------</p> <p>Subtotal: ${this.app.services.ProxyCartService.formatCurrency(subscription.subtotal_price, subscription.currency)}</p> <p>Total: ${this.app.services.ProxyCartService.formatCurrency(subscription.total_price, subscription.currency)}</p> <p>------------------------</p> <p>Thank you!</p>`; } activated(subscription) { const renewTimeDate = new Date(subscription.renewed_at); const renewTime = moment(renewTimeDate.toDateString()).format('LLLL'); const renewOnTimeDate = new Date(subscription.renews_on); const renewOnTime = moment(renewOnTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Activated</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription has been activated.</p> <p>Start date: ${renewTime}</p> <p>Next renewal date: ${renewOnTime}</p> <h5>Subscription Items</h5> ${subscriptionItems} <p>Thank you!</p>`; } deactivated(subscription) { const renewTimeDate = new Date(subscription.renewed_at); const renewTime = moment(renewTimeDate.toDateString()).format('LLLL'); const renewOnTimeDate = new Date(subscription.renews_on); const renewOnTime = moment(renewOnTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Deactivated</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription has been deactivated and will be cancelled at the end of this billing period.</p> <p>Start date: ${renewTime}</p> <p>Cancellation date: ${renewOnTime}</p> <h5>Subscription Items</h5> ${subscriptionItems} <p>Thank you!</p>`; } updated(subscription) { const renewTimeDate = new Date(subscription.renewed_at); const renewTime = moment(renewTimeDate.toDateString()).format('LLLL'); const renewOnTimeDate = new Date(subscription.renews_on); const renewOnTime = moment(renewOnTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Updated</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription has been updated.</p> <p>Start date: ${renewTime}</p> <p>Next renewal date: ${renewOnTime}</p> <h5>Subscription Items</h5> ${subscriptionItems} <p>Thank you!</p>`; } willRenew(subscription) { const renewOnTimeDate = new Date(subscription.renews_on); const renewOnTime = moment(renewOnTimeDate.toDateString()).format('LLLL'); const subscriptionItems = subscription.line_items.map(item => { return `<p>${item.name} x ${item.quantity} - ${this.app.services.ProxyCartService.formatCurrency(item.calculated_price, subscription.currency)}</p>`; }).join('\n'); return `<h1>Subscription ${subscription.token} Will Renew</h1> <p>Dear ${subscription.Customer ? subscription.Customer.getSalutation() : 'Customer'},</p> <p>Your subscription will renew on ${renewOnTime}.</p> <h5>Subscription items that will renew</h5> ${subscriptionItems} <p>Thank you!</p>`; } } exports.Subscription = Subscription;