@unchainedshop/core-enrollments 2.0.0-beta8 → 2.0.0-beta9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/jest.config.js +9 -0
- package/lib/director/EnrollmentAdapter.d.ts +4 -0
- package/lib/director/EnrollmentAdapter.js +1 -1
- package/lib/director/EnrollmentAdapter.js.map +1 -1
- package/lib/director/EnrollmentDirector.js +4 -4
- package/lib/director/EnrollmentDirector.js.map +1 -1
- package/lib/enrollments-index.d.ts +1 -1
- package/lib/enrollments-index.js +1 -1
- package/lib/enrollments-index.js.map +1 -1
- package/lib/module/configureEnrollmentsModule.d.ts +9 -1
- package/lib/module/configureEnrollmentsModule.js +58 -56
- package/lib/module/configureEnrollmentsModule.js.map +1 -1
- package/package.json +10 -9
- package/src/director/EnrollmentAdapter.ts +1 -1
- package/src/director/EnrollmentDirector.ts +4 -7
- package/src/enrollments-index.ts +1 -1
- package/src/module/configureEnrollmentsModule.ts +79 -107
- package/tests/enrollments-index.test.ts +44 -81
package/jest.config.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import { IEnrollmentAdapter } from '@unchainedshop/types/enrollments';
|
|
2
|
+
export declare const periodForReferenceDate: (referenceDate: Date, intervalCount?: number, interval?: string) => {
|
|
3
|
+
start: Date;
|
|
4
|
+
end: Date;
|
|
5
|
+
};
|
|
2
6
|
export declare const EnrollmentAdapter: Omit<IEnrollmentAdapter, 'key' | 'label' | 'version'>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { log, LogLevel } from '@unchainedshop/logger';
|
|
2
2
|
import { startOfHour, startOfMinute, add } from 'date-fns';
|
|
3
|
-
const periodForReferenceDate = (referenceDate, intervalCount = 1, interval = 'WEEKS') => {
|
|
3
|
+
export const periodForReferenceDate = (referenceDate, intervalCount = 1, interval = 'WEEKS') => {
|
|
4
4
|
const lowerCase = interval.toLowerCase();
|
|
5
5
|
const start = lowerCase === 'hours' ? startOfMinute(referenceDate) : startOfHour(referenceDate);
|
|
6
6
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnrollmentAdapter.js","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAI3D,MAAM,sBAAsB,GAAG,CAAC,aAAmB,EAAE,aAAa,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"EnrollmentAdapter.js","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,12 +16,12 @@ const findAppropriateAdapters = (productPlan) => baseDirector.getAdapters({
|
|
|
16
16
|
});
|
|
17
17
|
export const EnrollmentDirector = {
|
|
18
18
|
...baseDirector,
|
|
19
|
-
transformOrderItemToEnrollment: async ({ orderPosition, product }, doc,
|
|
19
|
+
transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, unchainedAPI) => {
|
|
20
20
|
const Adapter = findAppropriateAdapters(product.plan)?.[0];
|
|
21
21
|
if (!Adapter) {
|
|
22
22
|
throw new Error('No suitable enrollment plugin available for this item');
|
|
23
23
|
}
|
|
24
|
-
const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition,
|
|
24
|
+
const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, unchainedAPI);
|
|
25
25
|
const enrollmentData = {
|
|
26
26
|
...doc,
|
|
27
27
|
...enrollmentPlan,
|
|
@@ -29,8 +29,8 @@ export const EnrollmentDirector = {
|
|
|
29
29
|
};
|
|
30
30
|
return enrollmentData;
|
|
31
31
|
},
|
|
32
|
-
actions: async (enrollmentContext,
|
|
33
|
-
const context = { ...enrollmentContext, ...
|
|
32
|
+
actions: async (enrollmentContext, unchainedAPI) => {
|
|
33
|
+
const context = { ...enrollmentContext, ...unchainedAPI };
|
|
34
34
|
// Resolve adapter
|
|
35
35
|
const product = await context.modules.products.findProduct({
|
|
36
36
|
productId: context.enrollment.productId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnrollmentDirector.js","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,YAAY,GAAG,YAAY,CAAqB,oBAAoB,EAAE;IAC1E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,WAAyB,EAAE,EAAE,CAC5D,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,CAAC,OAA2B,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;YACd,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,WAAW,EAAE;gBACxE,KAAK,EAAE,QAAQ,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,GAAG,YAAY;IAEf,8BAA8B,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"EnrollmentDirector.js","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,YAAY,GAAG,YAAY,CAAqB,oBAAoB,EAAE;IAC1E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,WAAyB,EAAE,EAAE,CAC5D,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,CAAC,OAA2B,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;YACd,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,WAAW,EAAE;gBACxE,KAAK,EAAE,QAAQ,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,GAAG,YAAY;IAEf,8BAA8B,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;QACtF,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kCAAkC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAErG,MAAM,cAAc,GAAmB;YACrC,GAAG,GAAG;YACN,GAAG,cAAc;YACjB,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,CAAC;QAE1D,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;SACxC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
|
|
1
|
+
export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
|
|
2
2
|
export { EnrollmentAdapter } from './director/EnrollmentAdapter';
|
|
3
3
|
export { EnrollmentDirector } from './director/EnrollmentDirector';
|
|
4
4
|
export { EnrollmentStatus } from './db/EnrollmentStatus';
|
package/lib/enrollments-index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
|
|
1
|
+
export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
|
|
2
2
|
export { EnrollmentAdapter } from './director/EnrollmentAdapter';
|
|
3
3
|
export { EnrollmentDirector } from './director/EnrollmentDirector';
|
|
4
4
|
export { EnrollmentStatus } from './db/EnrollmentStatus';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollments-index.js","sourceRoot":"","sources":["../src/enrollments-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"enrollments-index.js","sourceRoot":"","sources":["../src/enrollments-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { ModuleInput } from '@unchainedshop/types/core';
|
|
2
|
-
import { EnrollmentsModule, EnrollmentsSettingsOptions } from '@unchainedshop/types/enrollments';
|
|
2
|
+
import { EnrollmentQuery, EnrollmentsModule, EnrollmentsSettingsOptions } from '@unchainedshop/types/enrollments';
|
|
3
|
+
export declare const buildFindSelector: ({ queryString, status, userId }: EnrollmentQuery) => {
|
|
4
|
+
deleted: Date;
|
|
5
|
+
status?: any;
|
|
6
|
+
$text?: {
|
|
7
|
+
$search?: string;
|
|
8
|
+
};
|
|
9
|
+
userId?: string;
|
|
10
|
+
};
|
|
3
11
|
export declare const configureEnrollmentsModule: ({ db, options: enrollmentOptions, }: ModuleInput<EnrollmentsSettingsOptions>) => Promise<EnrollmentsModule>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SortDirection } from '@unchainedshop/types/api';
|
|
1
2
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
3
|
import { log } from '@unchainedshop/logger';
|
|
3
4
|
import { generateDbFilterById, generateDbMutations, buildSortOptions } from '@unchainedshop/utils';
|
|
@@ -12,7 +13,7 @@ const ENROLLMENT_EVENTS = [
|
|
|
12
13
|
'ENROLLMENT_REMOVE',
|
|
13
14
|
'ENROLLMENT_UPDATE',
|
|
14
15
|
];
|
|
15
|
-
const buildFindSelector = ({ queryString, status, userId }) => {
|
|
16
|
+
export const buildFindSelector = ({ queryString, status, userId }) => {
|
|
16
17
|
const selector = {
|
|
17
18
|
deleted: null,
|
|
18
19
|
};
|
|
@@ -36,9 +37,9 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
36
37
|
}
|
|
37
38
|
return findNewEnrollmentNumber(enrollment, index + 1);
|
|
38
39
|
};
|
|
39
|
-
const findNextStatus = async (enrollment,
|
|
40
|
+
const findNextStatus = async (enrollment, unchainedAPI) => {
|
|
40
41
|
let status = enrollment.status;
|
|
41
|
-
const director = await EnrollmentDirector.actions({ enrollment },
|
|
42
|
+
const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
|
|
42
43
|
if (status === EnrollmentStatus.INITIAL || status === EnrollmentStatus.PAUSED) {
|
|
43
44
|
if (await director.isValidForActivation()) {
|
|
44
45
|
status = EnrollmentStatus.ACTIVE;
|
|
@@ -49,19 +50,19 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
49
50
|
status = EnrollmentStatus.PAUSED;
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
|
-
else if (
|
|
53
|
+
else if (unchainedAPI.modules.enrollments.isExpired(enrollment, {})) {
|
|
53
54
|
status = EnrollmentStatus.TERMINATED;
|
|
54
55
|
}
|
|
55
56
|
return status;
|
|
56
57
|
};
|
|
57
|
-
const updateStatus = async (enrollmentId, { status, info = '' }
|
|
58
|
+
const updateStatus = async (enrollmentId, { status, info = '' }) => {
|
|
58
59
|
const selector = generateDbFilterById(enrollmentId);
|
|
59
60
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
60
61
|
if (enrollment.status === status)
|
|
61
62
|
return enrollment;
|
|
62
63
|
const date = new Date();
|
|
63
64
|
const modifier = {
|
|
64
|
-
$set: { status, updated: new Date()
|
|
65
|
+
$set: { status, updated: new Date() },
|
|
65
66
|
$push: {
|
|
66
67
|
log: {
|
|
67
68
|
date,
|
|
@@ -89,33 +90,33 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
89
90
|
const reactivateEnrollment = async (enrollment) => {
|
|
90
91
|
return enrollment;
|
|
91
92
|
};
|
|
92
|
-
const processEnrollment = async (enrollment,
|
|
93
|
-
let status = await findNextStatus(enrollment,
|
|
93
|
+
const processEnrollment = async (enrollment, unchainedAPI) => {
|
|
94
|
+
let status = await findNextStatus(enrollment, unchainedAPI);
|
|
94
95
|
if (status === EnrollmentStatus.ACTIVE) {
|
|
95
96
|
const nextEnrollment = await reactivateEnrollment(enrollment);
|
|
96
|
-
status = await findNextStatus(nextEnrollment,
|
|
97
|
+
status = await findNextStatus(nextEnrollment, unchainedAPI);
|
|
97
98
|
}
|
|
98
|
-
return updateStatus(enrollment._id, { status, info: 'enrollment processed' },
|
|
99
|
+
return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, unchainedAPI);
|
|
99
100
|
};
|
|
100
|
-
const initializeEnrollment = async (enrollment, params,
|
|
101
|
-
const { modules
|
|
102
|
-
|
|
103
|
-
// const locale = modules.users.userLocale(user, requestContext);
|
|
104
|
-
// const reason = "new_enrollment";
|
|
105
|
-
const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
|
|
101
|
+
const initializeEnrollment = async (enrollment, params, unchainedAPI) => {
|
|
102
|
+
const { modules } = unchainedAPI;
|
|
103
|
+
const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
|
|
106
104
|
const period = await director.nextPeriod();
|
|
107
105
|
if (period && (params.orderIdForFirstPeriod || period.isTrial)) {
|
|
108
|
-
const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, {
|
|
109
|
-
|
|
106
|
+
const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, {
|
|
107
|
+
...period,
|
|
108
|
+
orderId: params.orderIdForFirstPeriod,
|
|
109
|
+
});
|
|
110
|
+
return processEnrollment(intializedEnrollment, unchainedAPI);
|
|
110
111
|
}
|
|
111
|
-
return processEnrollment(enrollment,
|
|
112
|
+
return processEnrollment(enrollment, unchainedAPI);
|
|
112
113
|
};
|
|
113
|
-
const sendStatusToCustomer = async (enrollment, params,
|
|
114
|
-
const { modules
|
|
114
|
+
const sendStatusToCustomer = async (enrollment, params, unchainedAPI) => {
|
|
115
|
+
const { modules } = unchainedAPI;
|
|
115
116
|
let { locale } = params;
|
|
116
117
|
if (!locale) {
|
|
117
118
|
const user = await modules.users.findUserById(enrollment.userId);
|
|
118
|
-
locale = modules.users.userLocale(user
|
|
119
|
+
locale = modules.users.userLocale(user);
|
|
119
120
|
}
|
|
120
121
|
await modules.worker.addWork({
|
|
121
122
|
type: 'MESSAGE',
|
|
@@ -126,7 +127,7 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
126
127
|
template: 'ENROLLMENT_STATUS',
|
|
127
128
|
enrollmentId: enrollment._id,
|
|
128
129
|
},
|
|
129
|
-
}
|
|
130
|
+
});
|
|
130
131
|
return enrollment;
|
|
131
132
|
};
|
|
132
133
|
const updateEnrollmentField = (fieldKey) => async (enrollmentId, fieldValue, userId) => {
|
|
@@ -134,7 +135,7 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
134
135
|
enrollmentId,
|
|
135
136
|
userId,
|
|
136
137
|
});
|
|
137
|
-
await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } }
|
|
138
|
+
await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } });
|
|
138
139
|
const enrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
|
|
139
140
|
await emit('ENROLLMENT_UPDATE', { enrollment, field: fieldKey });
|
|
140
141
|
return enrollment;
|
|
@@ -145,6 +146,11 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
145
146
|
const enrollmentCount = await Enrollments.countDocuments(buildFindSelector(query));
|
|
146
147
|
return enrollmentCount;
|
|
147
148
|
},
|
|
149
|
+
openEnrollmentWithProduct: async ({ productId }) => {
|
|
150
|
+
const selector = { productId };
|
|
151
|
+
selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
|
|
152
|
+
return Enrollments.findOne(selector);
|
|
153
|
+
},
|
|
148
154
|
findEnrollment: async ({ enrollmentId, orderId }, options) => {
|
|
149
155
|
const selector = enrollmentId
|
|
150
156
|
? generateDbFilterById(enrollmentId)
|
|
@@ -152,10 +158,11 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
152
158
|
return Enrollments.findOne(selector, options);
|
|
153
159
|
},
|
|
154
160
|
findEnrollments: async ({ limit, offset, sort, ...query }) => {
|
|
161
|
+
const defaultSortOption = [{ key: 'created', value: SortDirection.ASC }];
|
|
155
162
|
const enrollments = Enrollments.find(buildFindSelector(query), {
|
|
156
163
|
skip: offset,
|
|
157
164
|
limit,
|
|
158
|
-
sort: buildSortOptions(sort),
|
|
165
|
+
sort: buildSortOptions(sort || defaultSortOption),
|
|
159
166
|
});
|
|
160
167
|
return enrollments.toArray();
|
|
161
168
|
},
|
|
@@ -172,28 +179,28 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
172
179
|
return isExpired;
|
|
173
180
|
},
|
|
174
181
|
// Processing
|
|
175
|
-
terminateEnrollment: async (enrollment,
|
|
182
|
+
terminateEnrollment: async (enrollment, unchainedAPI) => {
|
|
176
183
|
if (enrollment.status === EnrollmentStatus.TERMINATED)
|
|
177
184
|
return enrollment;
|
|
178
185
|
let updatedEnrollment = await updateStatus(enrollment._id, {
|
|
179
186
|
status: EnrollmentStatus.TERMINATED,
|
|
180
187
|
info: 'terminated manually',
|
|
181
|
-
},
|
|
182
|
-
updatedEnrollment = await processEnrollment(updatedEnrollment,
|
|
183
|
-
return sendStatusToCustomer(updatedEnrollment, {},
|
|
188
|
+
}, unchainedAPI);
|
|
189
|
+
updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
|
|
190
|
+
return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
|
|
184
191
|
},
|
|
185
|
-
activateEnrollment: async (enrollment,
|
|
192
|
+
activateEnrollment: async (enrollment, unchainedAPI) => {
|
|
186
193
|
if (enrollment.status === EnrollmentStatus.TERMINATED)
|
|
187
194
|
return enrollment;
|
|
188
195
|
let updatedEnrollment = await updateStatus(enrollment._id, {
|
|
189
196
|
status: EnrollmentStatus.ACTIVE,
|
|
190
197
|
info: 'activated manually',
|
|
191
|
-
},
|
|
192
|
-
updatedEnrollment = await processEnrollment(updatedEnrollment,
|
|
193
|
-
return sendStatusToCustomer(updatedEnrollment, {},
|
|
198
|
+
}, unchainedAPI);
|
|
199
|
+
updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
|
|
200
|
+
return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
|
|
194
201
|
},
|
|
195
202
|
// Mutations
|
|
196
|
-
addEnrollmentPeriod: async (enrollmentId, period
|
|
203
|
+
addEnrollmentPeriod: async (enrollmentId, period) => {
|
|
197
204
|
const { start, end, orderId, isTrial } = period;
|
|
198
205
|
const selector = generateDbFilterById(enrollmentId);
|
|
199
206
|
await Enrollments.updateOne(selector, {
|
|
@@ -207,20 +214,18 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
207
214
|
},
|
|
208
215
|
$set: {
|
|
209
216
|
updated: new Date(),
|
|
210
|
-
updatedBy: userId,
|
|
211
217
|
},
|
|
212
218
|
});
|
|
213
219
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
214
220
|
await emit('ENROLLMENT_ADD_PERIOD', { enrollment });
|
|
215
221
|
return enrollment;
|
|
216
222
|
},
|
|
217
|
-
create: async ({ countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData },
|
|
218
|
-
const {
|
|
219
|
-
log('Create Enrollment', { userId });
|
|
223
|
+
create: async ({ countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData }, unchainedAPI) => {
|
|
224
|
+
const { services } = unchainedAPI;
|
|
220
225
|
const currency = currencyCode ||
|
|
221
226
|
(await services.countries.resolveDefaultCurrencyCode({
|
|
222
227
|
isoCode: countryCode,
|
|
223
|
-
},
|
|
228
|
+
}, unchainedAPI));
|
|
224
229
|
const enrollmentId = await mutations.create({
|
|
225
230
|
...enrollmentData,
|
|
226
231
|
status: EnrollmentStatus.INITIAL,
|
|
@@ -229,21 +234,21 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
229
234
|
countryCode,
|
|
230
235
|
configuration: enrollmentData.configuration || [],
|
|
231
236
|
log: [],
|
|
232
|
-
}
|
|
237
|
+
});
|
|
233
238
|
const newEnrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
|
|
234
239
|
const reason = 'new_enrollment';
|
|
235
240
|
const initializedEnrollment = await initializeEnrollment(newEnrollment, {
|
|
236
241
|
orderIdForFirstPeriod,
|
|
237
242
|
reason,
|
|
238
|
-
},
|
|
243
|
+
}, unchainedAPI);
|
|
239
244
|
const enrollment = await sendStatusToCustomer(initializedEnrollment, {
|
|
240
245
|
reason,
|
|
241
|
-
},
|
|
246
|
+
}, unchainedAPI);
|
|
242
247
|
await emit('ENROLLMENT_CREATE', { enrollment });
|
|
243
248
|
return enrollment;
|
|
244
249
|
},
|
|
245
|
-
createFromCheckout: async (order, { items, context },
|
|
246
|
-
const { modules } =
|
|
250
|
+
createFromCheckout: async (order, { items, context }, unchainedAPI) => {
|
|
251
|
+
const { modules } = unchainedAPI;
|
|
247
252
|
const orderId = order._id;
|
|
248
253
|
const payment = await modules.orders.payments.findOrderPayment({
|
|
249
254
|
orderPaymentId: order.paymentId,
|
|
@@ -270,21 +275,20 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
270
275
|
...context,
|
|
271
276
|
};
|
|
272
277
|
await Promise.all(items.map(async (item) => {
|
|
273
|
-
const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(item, template,
|
|
274
|
-
return modules.enrollments.create(enrollmentData,
|
|
278
|
+
const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(item, template, unchainedAPI);
|
|
279
|
+
return modules.enrollments.create(enrollmentData, unchainedAPI);
|
|
275
280
|
}));
|
|
276
281
|
},
|
|
277
|
-
delete: async (enrollmentId
|
|
278
|
-
const deletedCount = await mutations.delete(enrollmentId
|
|
282
|
+
delete: async (enrollmentId) => {
|
|
283
|
+
const deletedCount = await mutations.delete(enrollmentId);
|
|
279
284
|
await emit('ORDER_REMOVE', { enrollmentId });
|
|
280
285
|
return deletedCount;
|
|
281
286
|
},
|
|
282
|
-
removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId
|
|
287
|
+
removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId) => {
|
|
283
288
|
const selector = generateDbFilterById(enrollmentId);
|
|
284
289
|
await Enrollments.updateOne(selector, {
|
|
285
290
|
$set: {
|
|
286
291
|
updated: new Date(),
|
|
287
|
-
updatedBy: userId,
|
|
288
292
|
},
|
|
289
293
|
$pull: {
|
|
290
294
|
periods: { orderId: { $in: [orderId, undefined, null] } },
|
|
@@ -297,23 +301,21 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
|
|
|
297
301
|
updateContext: updateEnrollmentField('context'),
|
|
298
302
|
updateDelivery: updateEnrollmentField('delivery'),
|
|
299
303
|
updatePayment: updateEnrollmentField('payment'),
|
|
300
|
-
updatePlan: async (enrollmentId, plan,
|
|
301
|
-
const { userId } = requestContext;
|
|
304
|
+
updatePlan: async (enrollmentId, plan, unchainedAPI) => {
|
|
302
305
|
log(`Update enrollment plan fields`, {
|
|
303
306
|
enrollmentId,
|
|
304
|
-
userId,
|
|
305
307
|
});
|
|
306
308
|
await mutations.update(enrollmentId, {
|
|
307
309
|
productId: plan.productId,
|
|
308
310
|
quantity: plan.quantity,
|
|
309
311
|
configuration: plan.configuration,
|
|
310
|
-
}
|
|
312
|
+
});
|
|
311
313
|
const selector = generateDbFilterById(enrollmentId);
|
|
312
314
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
313
315
|
await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
|
|
314
316
|
const reason = 'updated_plan';
|
|
315
|
-
const initializedEnrollment = await initializeEnrollment(enrollment, { reason },
|
|
316
|
-
return sendStatusToCustomer(initializedEnrollment, { reason },
|
|
317
|
+
const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, unchainedAPI);
|
|
318
|
+
return sendStatusToCustomer(initializedEnrollment, { reason }, unchainedAPI);
|
|
317
319
|
},
|
|
318
320
|
updateStatus,
|
|
319
321
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-enrollments",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-beta9",
|
|
4
4
|
"main": "lib/enrollments-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/enrollments-index.js",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"clean": "rm -rf lib",
|
|
13
13
|
"build": "npm run clean && tsc",
|
|
14
14
|
"watch": "tsc -w",
|
|
15
|
-
"test": "jest --
|
|
15
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
|
|
16
|
+
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
|
|
16
17
|
},
|
|
17
18
|
"repository": {
|
|
18
19
|
"type": "git",
|
|
@@ -31,19 +32,19 @@
|
|
|
31
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
32
33
|
"dependencies": {
|
|
33
34
|
"@breejs/later": "^4.1.0",
|
|
34
|
-
"@unchainedshop/events": "^2.0.0-
|
|
35
|
-
"@unchainedshop/logger": "^2.0.0-
|
|
36
|
-
"@unchainedshop/utils": "^2.0.0-
|
|
35
|
+
"@unchainedshop/events": "^2.0.0-beta9",
|
|
36
|
+
"@unchainedshop/logger": "^2.0.0-beta9",
|
|
37
|
+
"@unchainedshop/utils": "^2.0.0-beta9",
|
|
37
38
|
"date-fns": "^2.29.3",
|
|
38
39
|
"locale": "0.1.0",
|
|
39
|
-
"simpl-schema": "^3.0
|
|
40
|
+
"simpl-schema": "^3.2.0"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@types/locale": "^0.1.1",
|
|
43
|
-
"@types/node": "^18.11.
|
|
44
|
-
"@unchainedshop/types": "^2.0.0-
|
|
44
|
+
"@types/node": "^18.11.12",
|
|
45
|
+
"@unchainedshop/types": "^2.0.0-beta9",
|
|
45
46
|
"jest": "^29.3.1",
|
|
46
47
|
"ts-jest": "^29.0.3",
|
|
47
|
-
"typescript": "^4.9.
|
|
48
|
+
"typescript": "^4.9.4"
|
|
48
49
|
}
|
|
49
50
|
}
|
|
@@ -3,7 +3,7 @@ import { startOfHour, startOfMinute, add } from 'date-fns';
|
|
|
3
3
|
|
|
4
4
|
import { IEnrollmentAdapter } from '@unchainedshop/types/enrollments';
|
|
5
5
|
|
|
6
|
-
const periodForReferenceDate = (referenceDate: Date, intervalCount = 1, interval = 'WEEKS') => {
|
|
6
|
+
export const periodForReferenceDate = (referenceDate: Date, intervalCount = 1, interval = 'WEEKS') => {
|
|
7
7
|
const lowerCase = interval.toLowerCase();
|
|
8
8
|
const start = lowerCase === 'hours' ? startOfMinute(referenceDate) : startOfHour(referenceDate);
|
|
9
9
|
|
|
@@ -27,16 +27,13 @@ const findAppropriateAdapters = (productPlan?: ProductPlan) =>
|
|
|
27
27
|
export const EnrollmentDirector: IEnrollmentDirector = {
|
|
28
28
|
...baseDirector,
|
|
29
29
|
|
|
30
|
-
transformOrderItemToEnrollment: async ({ orderPosition, product }, doc,
|
|
30
|
+
transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, unchainedAPI) => {
|
|
31
31
|
const Adapter = findAppropriateAdapters(product.plan)?.[0];
|
|
32
32
|
if (!Adapter) {
|
|
33
33
|
throw new Error('No suitable enrollment plugin available for this item');
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(
|
|
37
|
-
orderPosition,
|
|
38
|
-
requestContext,
|
|
39
|
-
);
|
|
36
|
+
const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, unchainedAPI);
|
|
40
37
|
|
|
41
38
|
const enrollmentData: EnrollmentData = {
|
|
42
39
|
...doc,
|
|
@@ -47,8 +44,8 @@ export const EnrollmentDirector: IEnrollmentDirector = {
|
|
|
47
44
|
return enrollmentData;
|
|
48
45
|
},
|
|
49
46
|
|
|
50
|
-
actions: async (enrollmentContext,
|
|
51
|
-
const context = { ...enrollmentContext, ...
|
|
47
|
+
actions: async (enrollmentContext, unchainedAPI) => {
|
|
48
|
+
const context = { ...enrollmentContext, ...unchainedAPI };
|
|
52
49
|
|
|
53
50
|
// Resolve adapter
|
|
54
51
|
const product = await context.modules.products.findProduct({
|
package/src/enrollments-index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
|
|
1
|
+
export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
|
|
2
2
|
|
|
3
3
|
export { EnrollmentAdapter } from './director/EnrollmentAdapter';
|
|
4
4
|
export { EnrollmentDirector } from './director/EnrollmentDirector';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ModuleInput, ModuleMutations } from '@unchainedshop/types/core';
|
|
1
|
+
import { SortDirection, SortOption } from '@unchainedshop/types/api';
|
|
2
|
+
import { ModuleInput, ModuleMutations, UnchainedCore } from '@unchainedshop/types/core';
|
|
3
3
|
import {
|
|
4
4
|
Enrollment,
|
|
5
5
|
EnrollmentQuery,
|
|
@@ -10,6 +10,7 @@ import type { Locale } from 'locale';
|
|
|
10
10
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
11
11
|
import { log } from '@unchainedshop/logger';
|
|
12
12
|
import { generateDbFilterById, generateDbMutations, buildSortOptions } from '@unchainedshop/utils';
|
|
13
|
+
import { Query } from '@unchainedshop/types/common';
|
|
13
14
|
import { EnrollmentsCollection } from '../db/EnrollmentsCollection';
|
|
14
15
|
import { EnrollmentsSchema } from '../db/EnrollmentsSchema';
|
|
15
16
|
import { EnrollmentStatus } from '../db/EnrollmentStatus';
|
|
@@ -23,7 +24,7 @@ const ENROLLMENT_EVENTS: string[] = [
|
|
|
23
24
|
'ENROLLMENT_UPDATE',
|
|
24
25
|
];
|
|
25
26
|
|
|
26
|
-
const buildFindSelector = ({ queryString, status, userId }: EnrollmentQuery) => {
|
|
27
|
+
export const buildFindSelector = ({ queryString, status, userId }: EnrollmentQuery) => {
|
|
27
28
|
const selector: {
|
|
28
29
|
deleted: Date;
|
|
29
30
|
status?: any;
|
|
@@ -65,10 +66,10 @@ export const configureEnrollmentsModule = async ({
|
|
|
65
66
|
|
|
66
67
|
const findNextStatus = async (
|
|
67
68
|
enrollment: Enrollment,
|
|
68
|
-
|
|
69
|
+
unchainedAPI: UnchainedCore,
|
|
69
70
|
): Promise<EnrollmentStatus> => {
|
|
70
71
|
let status = enrollment.status as EnrollmentStatus;
|
|
71
|
-
const director = await EnrollmentDirector.actions({ enrollment },
|
|
72
|
+
const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
|
|
72
73
|
|
|
73
74
|
if (status === EnrollmentStatus.INITIAL || status === EnrollmentStatus.PAUSED) {
|
|
74
75
|
if (await director.isValidForActivation()) {
|
|
@@ -78,7 +79,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
78
79
|
if (await director.isOverdue()) {
|
|
79
80
|
status = EnrollmentStatus.PAUSED;
|
|
80
81
|
}
|
|
81
|
-
} else if (
|
|
82
|
+
} else if (unchainedAPI.modules.enrollments.isExpired(enrollment, {})) {
|
|
82
83
|
status = EnrollmentStatus.TERMINATED;
|
|
83
84
|
}
|
|
84
85
|
|
|
@@ -88,7 +89,6 @@ export const configureEnrollmentsModule = async ({
|
|
|
88
89
|
const updateStatus: EnrollmentsModule['updateStatus'] = async (
|
|
89
90
|
enrollmentId,
|
|
90
91
|
{ status, info = '' },
|
|
91
|
-
requestContext,
|
|
92
92
|
) => {
|
|
93
93
|
const selector = generateDbFilterById(enrollmentId);
|
|
94
94
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
@@ -100,7 +100,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
100
100
|
$set: Partial<Enrollment>;
|
|
101
101
|
$push: { log: Enrollment['log'][0] };
|
|
102
102
|
} = {
|
|
103
|
-
$set: { status, updated: new Date()
|
|
103
|
+
$set: { status, updated: new Date() },
|
|
104
104
|
$push: {
|
|
105
105
|
log: {
|
|
106
106
|
date,
|
|
@@ -136,74 +136,62 @@ export const configureEnrollmentsModule = async ({
|
|
|
136
136
|
return enrollment;
|
|
137
137
|
};
|
|
138
138
|
|
|
139
|
-
const processEnrollment = async (
|
|
140
|
-
enrollment
|
|
141
|
-
params: { enrollmentContext?: any; orderIdForFirstPeriod?: string },
|
|
142
|
-
requestContext: Context,
|
|
143
|
-
) => {
|
|
144
|
-
let status = await findNextStatus(enrollment, requestContext);
|
|
139
|
+
const processEnrollment = async (enrollment: Enrollment, unchainedAPI: UnchainedCore) => {
|
|
140
|
+
let status = await findNextStatus(enrollment, unchainedAPI);
|
|
145
141
|
|
|
146
142
|
if (status === EnrollmentStatus.ACTIVE) {
|
|
147
143
|
const nextEnrollment = await reactivateEnrollment(enrollment);
|
|
148
|
-
status = await findNextStatus(nextEnrollment,
|
|
144
|
+
status = await findNextStatus(nextEnrollment, unchainedAPI);
|
|
149
145
|
}
|
|
150
146
|
|
|
151
|
-
return updateStatus(enrollment._id, { status, info: 'enrollment processed' },
|
|
147
|
+
return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, unchainedAPI);
|
|
152
148
|
};
|
|
153
149
|
|
|
154
150
|
const initializeEnrollment = async (
|
|
155
151
|
enrollment: Enrollment,
|
|
156
152
|
params: { orderIdForFirstPeriod?: string; reason: string },
|
|
157
|
-
|
|
153
|
+
unchainedAPI: UnchainedCore,
|
|
158
154
|
) => {
|
|
159
|
-
const { modules
|
|
155
|
+
const { modules } = unchainedAPI;
|
|
160
156
|
|
|
161
|
-
|
|
162
|
-
// const locale = modules.users.userLocale(user, requestContext);
|
|
163
|
-
// const reason = "new_enrollment";
|
|
164
|
-
|
|
165
|
-
const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
|
|
157
|
+
const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
|
|
166
158
|
const period = await director.nextPeriod();
|
|
167
159
|
|
|
168
160
|
if (period && (params.orderIdForFirstPeriod || period.isTrial)) {
|
|
169
|
-
const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
);
|
|
161
|
+
const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, {
|
|
162
|
+
...period,
|
|
163
|
+
orderId: params.orderIdForFirstPeriod,
|
|
164
|
+
});
|
|
174
165
|
|
|
175
|
-
return processEnrollment(intializedEnrollment,
|
|
166
|
+
return processEnrollment(intializedEnrollment, unchainedAPI);
|
|
176
167
|
}
|
|
177
168
|
|
|
178
|
-
return processEnrollment(enrollment,
|
|
169
|
+
return processEnrollment(enrollment, unchainedAPI);
|
|
179
170
|
};
|
|
180
171
|
|
|
181
172
|
const sendStatusToCustomer = async (
|
|
182
173
|
enrollment: Enrollment,
|
|
183
174
|
params: { locale?: Locale; reason?: string },
|
|
184
|
-
|
|
175
|
+
unchainedAPI: UnchainedCore,
|
|
185
176
|
) => {
|
|
186
|
-
const { modules
|
|
177
|
+
const { modules } = unchainedAPI;
|
|
187
178
|
|
|
188
179
|
let { locale } = params;
|
|
189
180
|
if (!locale) {
|
|
190
181
|
const user = await modules.users.findUserById(enrollment.userId);
|
|
191
|
-
locale = modules.users.userLocale(user
|
|
182
|
+
locale = modules.users.userLocale(user);
|
|
192
183
|
}
|
|
193
184
|
|
|
194
|
-
await modules.worker.addWork(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
enrollmentId: enrollment._id,
|
|
203
|
-
},
|
|
185
|
+
await modules.worker.addWork({
|
|
186
|
+
type: 'MESSAGE',
|
|
187
|
+
retries: 0,
|
|
188
|
+
input: {
|
|
189
|
+
reason: params.reason || 'status_change',
|
|
190
|
+
locale,
|
|
191
|
+
template: 'ENROLLMENT_STATUS',
|
|
192
|
+
enrollmentId: enrollment._id,
|
|
204
193
|
},
|
|
205
|
-
|
|
206
|
-
);
|
|
194
|
+
});
|
|
207
195
|
|
|
208
196
|
return enrollment;
|
|
209
197
|
};
|
|
@@ -215,7 +203,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
215
203
|
userId,
|
|
216
204
|
});
|
|
217
205
|
|
|
218
|
-
await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } }
|
|
206
|
+
await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } });
|
|
219
207
|
|
|
220
208
|
const enrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
|
|
221
209
|
|
|
@@ -230,6 +218,11 @@ export const configureEnrollmentsModule = async ({
|
|
|
230
218
|
const enrollmentCount = await Enrollments.countDocuments(buildFindSelector(query));
|
|
231
219
|
return enrollmentCount;
|
|
232
220
|
},
|
|
221
|
+
openEnrollmentWithProduct: async ({ productId }) => {
|
|
222
|
+
const selector: Query = { productId };
|
|
223
|
+
selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
|
|
224
|
+
return Enrollments.findOne(selector);
|
|
225
|
+
},
|
|
233
226
|
|
|
234
227
|
findEnrollment: async ({ enrollmentId, orderId }, options) => {
|
|
235
228
|
const selector = enrollmentId
|
|
@@ -245,10 +238,11 @@ export const configureEnrollmentsModule = async ({
|
|
|
245
238
|
sort,
|
|
246
239
|
...query
|
|
247
240
|
}: EnrollmentQuery & { limit?: number; offset?: number; sort?: Array<SortOption> }) => {
|
|
241
|
+
const defaultSortOption: Array<SortOption> = [{ key: 'created', value: SortDirection.ASC }];
|
|
248
242
|
const enrollments = Enrollments.find(buildFindSelector(query), {
|
|
249
243
|
skip: offset,
|
|
250
244
|
limit,
|
|
251
|
-
sort: buildSortOptions(sort),
|
|
245
|
+
sort: buildSortOptions(sort || defaultSortOption),
|
|
252
246
|
});
|
|
253
247
|
|
|
254
248
|
return enrollments.toArray();
|
|
@@ -269,7 +263,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
269
263
|
},
|
|
270
264
|
|
|
271
265
|
// Processing
|
|
272
|
-
terminateEnrollment: async (enrollment,
|
|
266
|
+
terminateEnrollment: async (enrollment, unchainedAPI) => {
|
|
273
267
|
if (enrollment.status === EnrollmentStatus.TERMINATED) return enrollment;
|
|
274
268
|
|
|
275
269
|
let updatedEnrollment = await updateStatus(
|
|
@@ -278,19 +272,15 @@ export const configureEnrollmentsModule = async ({
|
|
|
278
272
|
status: EnrollmentStatus.TERMINATED,
|
|
279
273
|
info: 'terminated manually',
|
|
280
274
|
},
|
|
281
|
-
|
|
275
|
+
unchainedAPI,
|
|
282
276
|
);
|
|
283
277
|
|
|
284
|
-
updatedEnrollment = await processEnrollment(
|
|
285
|
-
updatedEnrollment,
|
|
286
|
-
{ enrollmentContext },
|
|
287
|
-
requestContext,
|
|
288
|
-
);
|
|
278
|
+
updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
|
|
289
279
|
|
|
290
|
-
return sendStatusToCustomer(updatedEnrollment, {},
|
|
280
|
+
return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
|
|
291
281
|
},
|
|
292
282
|
|
|
293
|
-
activateEnrollment: async (enrollment,
|
|
283
|
+
activateEnrollment: async (enrollment, unchainedAPI) => {
|
|
294
284
|
if (enrollment.status === EnrollmentStatus.TERMINATED) return enrollment;
|
|
295
285
|
|
|
296
286
|
let updatedEnrollment = await updateStatus(
|
|
@@ -299,20 +289,16 @@ export const configureEnrollmentsModule = async ({
|
|
|
299
289
|
status: EnrollmentStatus.ACTIVE,
|
|
300
290
|
info: 'activated manually',
|
|
301
291
|
},
|
|
302
|
-
|
|
292
|
+
unchainedAPI,
|
|
303
293
|
);
|
|
304
294
|
|
|
305
|
-
updatedEnrollment = await processEnrollment(
|
|
306
|
-
updatedEnrollment,
|
|
307
|
-
{ enrollmentContext },
|
|
308
|
-
requestContext,
|
|
309
|
-
);
|
|
295
|
+
updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
|
|
310
296
|
|
|
311
|
-
return sendStatusToCustomer(updatedEnrollment, {},
|
|
297
|
+
return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
|
|
312
298
|
},
|
|
313
299
|
|
|
314
300
|
// Mutations
|
|
315
|
-
addEnrollmentPeriod: async (enrollmentId, period
|
|
301
|
+
addEnrollmentPeriod: async (enrollmentId, period) => {
|
|
316
302
|
const { start, end, orderId, isTrial } = period;
|
|
317
303
|
const selector = generateDbFilterById(enrollmentId);
|
|
318
304
|
await Enrollments.updateOne(selector, {
|
|
@@ -326,7 +312,6 @@ export const configureEnrollmentsModule = async ({
|
|
|
326
312
|
},
|
|
327
313
|
$set: {
|
|
328
314
|
updated: new Date(),
|
|
329
|
-
updatedBy: userId,
|
|
330
315
|
},
|
|
331
316
|
});
|
|
332
317
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
@@ -338,11 +323,9 @@ export const configureEnrollmentsModule = async ({
|
|
|
338
323
|
|
|
339
324
|
create: async (
|
|
340
325
|
{ countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData },
|
|
341
|
-
|
|
326
|
+
unchainedAPI,
|
|
342
327
|
) => {
|
|
343
|
-
const {
|
|
344
|
-
|
|
345
|
-
log('Create Enrollment', { userId });
|
|
328
|
+
const { services } = unchainedAPI;
|
|
346
329
|
|
|
347
330
|
const currency =
|
|
348
331
|
currencyCode ||
|
|
@@ -350,21 +333,18 @@ export const configureEnrollmentsModule = async ({
|
|
|
350
333
|
{
|
|
351
334
|
isoCode: countryCode,
|
|
352
335
|
},
|
|
353
|
-
|
|
336
|
+
unchainedAPI,
|
|
354
337
|
));
|
|
355
338
|
|
|
356
|
-
const enrollmentId = await mutations.create(
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
},
|
|
366
|
-
userId,
|
|
367
|
-
);
|
|
339
|
+
const enrollmentId = await mutations.create({
|
|
340
|
+
...enrollmentData,
|
|
341
|
+
status: EnrollmentStatus.INITIAL,
|
|
342
|
+
periods: [],
|
|
343
|
+
currencyCode: currency,
|
|
344
|
+
countryCode,
|
|
345
|
+
configuration: enrollmentData.configuration || [],
|
|
346
|
+
log: [],
|
|
347
|
+
});
|
|
368
348
|
|
|
369
349
|
const newEnrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
|
|
370
350
|
|
|
@@ -376,7 +356,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
376
356
|
orderIdForFirstPeriod,
|
|
377
357
|
reason,
|
|
378
358
|
},
|
|
379
|
-
|
|
359
|
+
unchainedAPI,
|
|
380
360
|
);
|
|
381
361
|
|
|
382
362
|
const enrollment = await sendStatusToCustomer(
|
|
@@ -384,7 +364,7 @@ export const configureEnrollmentsModule = async ({
|
|
|
384
364
|
{
|
|
385
365
|
reason,
|
|
386
366
|
},
|
|
387
|
-
|
|
367
|
+
unchainedAPI,
|
|
388
368
|
);
|
|
389
369
|
|
|
390
370
|
await emit('ENROLLMENT_CREATE', { enrollment });
|
|
@@ -392,8 +372,8 @@ export const configureEnrollmentsModule = async ({
|
|
|
392
372
|
return enrollment;
|
|
393
373
|
},
|
|
394
374
|
|
|
395
|
-
createFromCheckout: async (order, { items, context },
|
|
396
|
-
const { modules } =
|
|
375
|
+
createFromCheckout: async (order, { items, context }, unchainedAPI) => {
|
|
376
|
+
const { modules } = unchainedAPI;
|
|
397
377
|
const orderId = order._id;
|
|
398
378
|
|
|
399
379
|
const payment = await modules.orders.payments.findOrderPayment({
|
|
@@ -427,26 +407,25 @@ export const configureEnrollmentsModule = async ({
|
|
|
427
407
|
const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(
|
|
428
408
|
item,
|
|
429
409
|
template,
|
|
430
|
-
|
|
410
|
+
unchainedAPI,
|
|
431
411
|
);
|
|
432
412
|
|
|
433
|
-
return modules.enrollments.create(enrollmentData,
|
|
413
|
+
return modules.enrollments.create(enrollmentData, unchainedAPI);
|
|
434
414
|
}),
|
|
435
415
|
);
|
|
436
416
|
},
|
|
437
417
|
|
|
438
|
-
delete: async (enrollmentId
|
|
439
|
-
const deletedCount = await mutations.delete(enrollmentId
|
|
418
|
+
delete: async (enrollmentId) => {
|
|
419
|
+
const deletedCount = await mutations.delete(enrollmentId);
|
|
440
420
|
await emit('ORDER_REMOVE', { enrollmentId });
|
|
441
421
|
return deletedCount;
|
|
442
422
|
},
|
|
443
423
|
|
|
444
|
-
removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId
|
|
424
|
+
removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId) => {
|
|
445
425
|
const selector = generateDbFilterById(enrollmentId);
|
|
446
426
|
await Enrollments.updateOne(selector, {
|
|
447
427
|
$set: {
|
|
448
428
|
updated: new Date(),
|
|
449
|
-
updatedBy: userId,
|
|
450
429
|
},
|
|
451
430
|
|
|
452
431
|
$pull: {
|
|
@@ -463,23 +442,16 @@ export const configureEnrollmentsModule = async ({
|
|
|
463
442
|
updateDelivery: updateEnrollmentField('delivery'),
|
|
464
443
|
updatePayment: updateEnrollmentField('payment'),
|
|
465
444
|
|
|
466
|
-
updatePlan: async (enrollmentId, plan,
|
|
467
|
-
const { userId } = requestContext;
|
|
468
|
-
|
|
445
|
+
updatePlan: async (enrollmentId, plan, unchainedAPI) => {
|
|
469
446
|
log(`Update enrollment plan fields`, {
|
|
470
447
|
enrollmentId,
|
|
471
|
-
userId,
|
|
472
448
|
});
|
|
473
449
|
|
|
474
|
-
await mutations.update(
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
configuration: plan.configuration,
|
|
480
|
-
},
|
|
481
|
-
userId,
|
|
482
|
-
);
|
|
450
|
+
await mutations.update(enrollmentId, {
|
|
451
|
+
productId: plan.productId,
|
|
452
|
+
quantity: plan.quantity,
|
|
453
|
+
configuration: plan.configuration,
|
|
454
|
+
});
|
|
483
455
|
|
|
484
456
|
const selector = generateDbFilterById(enrollmentId);
|
|
485
457
|
const enrollment = await Enrollments.findOne(selector, {});
|
|
@@ -487,9 +459,9 @@ export const configureEnrollmentsModule = async ({
|
|
|
487
459
|
await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
|
|
488
460
|
|
|
489
461
|
const reason = 'updated_plan';
|
|
490
|
-
const initializedEnrollment = await initializeEnrollment(enrollment, { reason },
|
|
462
|
+
const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, unchainedAPI);
|
|
491
463
|
|
|
492
|
-
return sendStatusToCustomer(initializedEnrollment, { reason },
|
|
464
|
+
return sendStatusToCustomer(initializedEnrollment, { reason }, unchainedAPI);
|
|
493
465
|
},
|
|
494
466
|
|
|
495
467
|
updateStatus,
|
|
@@ -1,91 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { configureUsersModule } from '@unchainedshop/core-users';
|
|
4
|
-
import { configureEnrollmentsModule } from '@unchainedshop/core-enrollments';
|
|
5
|
-
import { EnrollmentsModule } from '@unchainedshop/types/enrollments';
|
|
6
|
-
import { Context } from '@unchainedshop/types/api';
|
|
7
|
-
import { User, UsersModule } from '@unchainedshop/types/user';
|
|
1
|
+
import { EnrollmentStatus } from "@unchainedshop/types/enrollments";
|
|
2
|
+
import {periodForReferenceDate} from "../src/director/EnrollmentAdapter";
|
|
8
3
|
|
|
9
|
-
|
|
10
|
-
const context: {
|
|
11
|
-
modules: { enrollments: EnrollmentsModule; users: UsersModule };
|
|
12
|
-
services: { countries: { resolveDefaultCurrencyCode: () => string } };
|
|
13
|
-
} = {
|
|
14
|
-
modules: {
|
|
15
|
-
enrollments: null,
|
|
16
|
-
users: null,
|
|
17
|
-
},
|
|
18
|
-
services: {
|
|
19
|
-
countries: {
|
|
20
|
-
resolveDefaultCurrencyCode: () => 'CHF',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
let user: User
|
|
4
|
+
import {buildFindSelector} from '../src/module/configureEnrollmentsModule'
|
|
25
5
|
|
|
26
|
-
before(async () => {
|
|
27
|
-
const db = await initDb();
|
|
28
|
-
const enrollmentsModule = await configureEnrollmentsModule({ db }).catch(
|
|
29
|
-
(error) => {
|
|
30
|
-
console.error(error);
|
|
31
6
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
throw error;
|
|
7
|
+
describe('Enrollment', () => {
|
|
8
|
+
describe('periodForReferenceDate', () => {
|
|
9
|
+
it('Should return 1 week interval from When passed a given date', async () => {
|
|
10
|
+
expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'))).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-10T17:00:00.000Z') })
|
|
11
|
+
});
|
|
12
|
+
it('Should return 2 week interval from When passed 2 as interval', async () => {
|
|
13
|
+
expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'), 2)).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-17T17:00:00.000Z') })
|
|
40
14
|
});
|
|
41
15
|
|
|
42
|
-
|
|
43
|
-
|
|
16
|
+
it('Should return 2 HOURS when interval is set to HOURS', async () => {
|
|
17
|
+
expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'), 2, 'HOURS')).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-03T19:00:00.000Z') })
|
|
18
|
+
});
|
|
44
19
|
});
|
|
45
20
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
{
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
quantity: 2,
|
|
63
|
-
userId: 'Test-User-1',
|
|
64
|
-
payment: {
|
|
65
|
-
paymentProviderId: 'payment-provider-1',
|
|
66
|
-
context: {},
|
|
67
|
-
},
|
|
68
|
-
delivery: {
|
|
69
|
-
deliveryProviderId: 'delivery-provider-1',
|
|
70
|
-
context: {},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
context as Context
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
assert.ok(enrollment);
|
|
77
|
-
const enrollmentId = enrollment._id;
|
|
78
|
-
enrollment = await context.modules.enrollments.findEnrollment({
|
|
79
|
-
enrollmentId,
|
|
21
|
+
describe('buildFindSelector', () => {
|
|
22
|
+
it('Should correct filter when passed status, userId and queryString', async () => {
|
|
23
|
+
expect(buildFindSelector({queryString: "Hello World", status: [EnrollmentStatus.ACTIVE], userId: 'admin-id'})).toEqual({
|
|
24
|
+
deleted: null,
|
|
25
|
+
status: { '$in': [ 'ACTIVE' ] },
|
|
26
|
+
userId: 'admin-id',
|
|
27
|
+
'$text': { '$search': 'Hello World' }
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
it('Should correct filter when passed userId and queryString', async () => {
|
|
31
|
+
|
|
32
|
+
expect(buildFindSelector({queryString: "Hello World", userId: 'admin-id'})).toEqual({
|
|
33
|
+
deleted: null,
|
|
34
|
+
userId: 'admin-id',
|
|
35
|
+
'$text': { '$search': 'Hello World' }
|
|
36
|
+
})
|
|
80
37
|
});
|
|
81
38
|
|
|
82
|
-
|
|
39
|
+
it('Should correct filter when passed queryString', async () => {
|
|
40
|
+
|
|
41
|
+
expect(buildFindSelector({queryString: "Hello World"})).toEqual({
|
|
42
|
+
deleted: null,
|
|
43
|
+
'$text': { '$search': 'Hello World' }
|
|
44
|
+
})
|
|
45
|
+
});
|
|
83
46
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
})
|
|
91
|
-
})
|
|
47
|
+
it('Should correct filter when passed no argument', async () => {
|
|
48
|
+
|
|
49
|
+
expect(buildFindSelector({})).toEqual({
|
|
50
|
+
deleted: null,
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
})
|
|
54
|
+
})
|