| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- const mappings = new Map([
- ['salesforce_id', generateSubscriptionToSalesforceMapping],
- ['v1_id', generateSubscriptionToV1Mapping],
- ['recurlySubscription_id', generateSubscriptionToRecurlyMapping],
- ])
- /**
- * @typedef {(import('./types.d.ts').AccountMapping)} AccountMapping
- * @import { StripePaymentProviderService } from '../../../../types/subscription/dashboard/subscription'
- */
- /**
- *
- * @param {Object} subscription
- * @param {Object} updatedSubscription
- * @return {Array<AccountMapping>}
- */
- function extractAccountMappingsFromSubscription(
- subscription,
- updatedSubscription
- ) {
- const accountMappings = []
- mappings.forEach((generateMapping, param) => {
- if (updatedSubscription[param] || updatedSubscription[param] === '') {
- if (subscription[param] !== updatedSubscription[param]) {
- accountMappings.push(
- generateMapping(subscription.id, updatedSubscription[param])
- )
- }
- }
- })
- return accountMappings
- }
- function generateV1Mapping(v1Id, salesforceId, createdAt) {
- return {
- source: 'salesforce',
- sourceEntity: 'account',
- sourceEntityId: salesforceId,
- target: 'v1',
- targetEntity: 'university',
- targetEntityId: v1Id,
- createdAt,
- }
- }
- function generateSubscriptionToV1Mapping(subscriptionId, v1Id) {
- return {
- source: 'v1',
- sourceEntity: 'university',
- sourceEntityId: v1Id,
- target: 'v2',
- targetEntity: 'subscription',
- targetEntityId: subscriptionId,
- createdAt: new Date().toISOString(),
- }
- }
- function generateSubscriptionToSalesforceMapping(subscriptionId, salesforceId) {
- return {
- source: 'salesforce',
- sourceEntity: 'account',
- sourceEntityId: salesforceId,
- target: 'v2',
- targetEntity: 'subscription',
- targetEntityId: subscriptionId,
- createdAt: new Date().toISOString(),
- }
- }
- /**
- *
- * @param {string} subscriptionId
- * @param {string} recurlyId
- * @param {string} [createdAt] - Should be an ISO date
- * @return {AccountMapping}
- */
- function generateSubscriptionToRecurlyMapping(
- subscriptionId,
- recurlyId,
- createdAt = new Date().toISOString()
- ) {
- return {
- source: 'recurly',
- sourceEntity: 'subscription',
- sourceEntityId: recurlyId,
- target: 'v2',
- targetEntity: 'subscription',
- targetEntityId: subscriptionId,
- createdAt,
- }
- }
- /**
- *
- * @param {string} subscriptionId
- * @param {string} stripeId
- * @param {StripePaymentProviderService} stripePaymentProviderService
- * @param {string} [createdAt] - Should be an ISO date
- * @return {AccountMapping}
- */
- function generateSubscriptionToStripeMapping(
- subscriptionId,
- stripeId,
- stripePaymentProviderService,
- createdAt = new Date().toISOString()
- ) {
- return {
- source: stripePaymentProviderService,
- sourceEntity: 'subscription',
- sourceEntityId: stripeId,
- target: 'v2',
- targetEntity: 'subscription',
- targetEntityId: subscriptionId,
- createdAt,
- }
- }
- export default {
- extractAccountMappingsFromSubscription,
- generateV1Mapping,
- generateSubscriptionToRecurlyMapping,
- generateSubscriptionToStripeMapping,
- }
|