@stamhoofd/models 2.78.4 → 2.79.0
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/dist/src/factories/GroupFactory.d.ts +4 -0
- package/dist/src/factories/GroupFactory.d.ts.map +1 -1
- package/dist/src/factories/GroupFactory.js +11 -1
- package/dist/src/factories/GroupFactory.js.map +1 -1
- package/dist/src/factories/MemberResponsibilityRecordFactory.d.ts +14 -0
- package/dist/src/factories/MemberResponsibilityRecordFactory.d.ts.map +1 -0
- package/dist/src/factories/MemberResponsibilityRecordFactory.js +34 -0
- package/dist/src/factories/MemberResponsibilityRecordFactory.js.map +1 -0
- package/dist/src/factories/OrganizationRegistrationPeriodFactory.d.ts +13 -0
- package/dist/src/factories/OrganizationRegistrationPeriodFactory.d.ts.map +1 -0
- package/dist/src/factories/OrganizationRegistrationPeriodFactory.js +20 -0
- package/dist/src/factories/OrganizationRegistrationPeriodFactory.js.map +1 -0
- package/dist/src/factories/OrganizationTagFactory.js +1 -1
- package/dist/src/factories/OrganizationTagFactory.js.map +1 -1
- package/dist/src/factories/PlatformResponsibilityFactory.d.ts +11 -0
- package/dist/src/factories/PlatformResponsibilityFactory.d.ts.map +1 -0
- package/dist/src/factories/PlatformResponsibilityFactory.js +25 -0
- package/dist/src/factories/PlatformResponsibilityFactory.js.map +1 -0
- package/dist/src/factories/RegistrationPeriodFactory.d.ts +1 -0
- package/dist/src/factories/RegistrationPeriodFactory.d.ts.map +1 -1
- package/dist/src/factories/RegistrationPeriodFactory.js +4 -0
- package/dist/src/factories/RegistrationPeriodFactory.js.map +1 -1
- package/dist/src/factories/index.d.ts +3 -0
- package/dist/src/factories/index.d.ts.map +1 -1
- package/dist/src/factories/index.js +3 -0
- package/dist/src/factories/index.js.map +1 -1
- package/dist/src/helpers/EmailBuilder.d.ts +8 -10
- package/dist/src/helpers/EmailBuilder.d.ts.map +1 -1
- package/dist/src/helpers/EmailBuilder.js +44 -42
- package/dist/src/helpers/EmailBuilder.js.map +1 -1
- package/dist/src/models/Email.d.ts +9 -2
- package/dist/src/models/Email.d.ts.map +1 -1
- package/dist/src/models/Email.js +18 -16
- package/dist/src/models/Email.js.map +1 -1
- package/dist/src/models/Email.test.js +183 -2
- package/dist/src/models/Email.test.js.map +1 -1
- package/dist/src/models/Member.d.ts +3 -1
- package/dist/src/models/Member.d.ts.map +1 -1
- package/dist/src/models/Member.js.map +1 -1
- package/dist/src/models/Order.d.ts +0 -2
- package/dist/src/models/Order.d.ts.map +1 -1
- package/dist/src/models/Order.js +0 -48
- package/dist/src/models/Order.js.map +1 -1
- package/dist/src/models/Organization.d.ts +1 -16
- package/dist/src/models/Organization.d.ts.map +1 -1
- package/dist/src/models/Organization.js +5 -86
- package/dist/src/models/Organization.js.map +1 -1
- package/dist/src/models/Platform.d.ts +11 -3
- package/dist/src/models/Platform.d.ts.map +1 -1
- package/dist/src/models/Platform.js +76 -24
- package/dist/src/models/Platform.js.map +1 -1
- package/dist/src/models/Platform.test.d.ts +2 -0
- package/dist/src/models/Platform.test.d.ts.map +1 -0
- package/dist/src/models/Platform.test.js +90 -0
- package/dist/src/models/Platform.test.js.map +1 -0
- package/dist/src/models/index.d.ts +1 -1
- package/dist/src/models/index.d.ts.map +1 -1
- package/dist/src/models/index.js +2 -3
- package/dist/src/models/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/factories/GroupFactory.ts +16 -3
- package/src/factories/MemberResponsibilityRecordFactory.ts +35 -0
- package/src/factories/OrganizationRegistrationPeriodFactory.ts +22 -0
- package/src/factories/OrganizationTagFactory.ts +1 -1
- package/src/factories/PlatformResponsibilityFactory.ts +25 -0
- package/src/factories/RegistrationPeriodFactory.ts +4 -0
- package/src/factories/index.ts +3 -0
- package/src/helpers/EmailBuilder.ts +54 -50
- package/src/models/Email.test.ts +217 -5
- package/src/models/Email.ts +22 -20
- package/src/models/Member.ts +3 -1
- package/src/models/Order.ts +0 -55
- package/src/models/Organization.ts +6 -101
- package/src/models/Platform.test.ts +107 -0
- package/src/models/Platform.ts +86 -25
- package/src/models/index.ts +1 -1
|
@@ -6,6 +6,7 @@ const simple_database_1 = require("@simonbackx/simple-database");
|
|
|
6
6
|
const queues_1 = require("@stamhoofd/queues");
|
|
7
7
|
const sql_1 = require("@stamhoofd/sql");
|
|
8
8
|
const structures_1 = require("@stamhoofd/structures");
|
|
9
|
+
const utility_1 = require("@stamhoofd/utility");
|
|
9
10
|
const uuid_1 = require("uuid");
|
|
10
11
|
const RegistrationPeriod_1 = require("./RegistrationPeriod");
|
|
11
12
|
class Platform extends sql_1.QueryableModel {
|
|
@@ -20,38 +21,37 @@ class Platform extends sql_1.QueryableModel {
|
|
|
20
21
|
* Invisible data for the frontend / structs - no matter your auhtorization level
|
|
21
22
|
*/
|
|
22
23
|
serverConfig = structures_1.PlatformServerConfig.create({});
|
|
24
|
+
static shared = null;
|
|
25
|
+
static sharedPrivateStruct = null;
|
|
23
26
|
static sharedStruct = null;
|
|
24
27
|
static async getSharedStruct() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
if (!this.sharedStruct) {
|
|
29
|
+
await this.loadCaches();
|
|
30
|
+
}
|
|
31
|
+
if (!this.sharedStruct || !!this.sharedStruct.privateConfig) {
|
|
32
|
+
throw new Error('[Platform] Failed to load platform shared struct');
|
|
33
|
+
}
|
|
34
|
+
return this.sharedStruct;
|
|
30
35
|
}
|
|
31
36
|
async setPreviousPeriodId() {
|
|
32
37
|
const period = await RegistrationPeriod_1.RegistrationPeriod.getByID(this.periodId);
|
|
33
38
|
this.previousPeriodId = period?.previousPeriodId ?? null;
|
|
34
39
|
}
|
|
35
40
|
static async getSharedPrivateStruct() {
|
|
36
|
-
if (this.
|
|
37
|
-
|
|
41
|
+
if (!this.sharedPrivateStruct) {
|
|
42
|
+
await this.loadCaches();
|
|
38
43
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
...model,
|
|
44
|
-
period: period?.getStructure() ?? undefined,
|
|
45
|
-
});
|
|
46
|
-
this.sharedStruct = struct;
|
|
47
|
-
return struct;
|
|
48
|
-
});
|
|
44
|
+
if (!this.sharedPrivateStruct || !this.sharedPrivateStruct.privateConfig) {
|
|
45
|
+
throw new Error('[Platform] Failed to load platform shared private struct');
|
|
46
|
+
}
|
|
47
|
+
return this.sharedPrivateStruct;
|
|
49
48
|
}
|
|
50
|
-
static async
|
|
51
|
-
return queues_1.QueueHandler.schedule('Platform.
|
|
49
|
+
static async getForEditing() {
|
|
50
|
+
return queues_1.QueueHandler.schedule('Platform.getModel', async () => {
|
|
52
51
|
// Build a new one
|
|
53
52
|
let model = await this.getByID('1');
|
|
54
53
|
if (!model) {
|
|
54
|
+
console.info('[Platform] Creating new platform');
|
|
55
55
|
// Create a new platform
|
|
56
56
|
model = new Platform();
|
|
57
57
|
model.id = '1';
|
|
@@ -61,14 +61,66 @@ class Platform extends sql_1.QueryableModel {
|
|
|
61
61
|
return model;
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
|
-
static
|
|
65
|
-
|
|
64
|
+
static async getShared() {
|
|
65
|
+
return queues_1.QueueHandler.schedule('Platform.getShared', async () => {
|
|
66
|
+
if (this.shared) {
|
|
67
|
+
return this.shared;
|
|
68
|
+
}
|
|
69
|
+
// Build a new one
|
|
70
|
+
const model = await this.getForEditing();
|
|
71
|
+
(0, utility_1.deepFreeze)(model);
|
|
72
|
+
this.shared = model;
|
|
73
|
+
return model;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
static async loadCaches() {
|
|
77
|
+
await queues_1.QueueHandler.schedule('Platform.loadCaches', async () => {
|
|
78
|
+
if (this.sharedPrivateStruct && this.sharedStruct) {
|
|
79
|
+
// Already loaded (possible if multiple calls to loadCaches were made)
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Build a new one
|
|
83
|
+
const model = await this.getForEditing();
|
|
84
|
+
await this.setCachesFromModel(model);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
static async setCachesFromModel(model) {
|
|
88
|
+
// Set structure cache
|
|
89
|
+
const period = await RegistrationPeriod_1.RegistrationPeriod.getByID(model.periodId);
|
|
90
|
+
const struct = structures_1.Platform.create({
|
|
91
|
+
...model,
|
|
92
|
+
period: period?.getStructure() ?? undefined,
|
|
93
|
+
});
|
|
94
|
+
// We clone to avoid the chance of updating the platform model
|
|
95
|
+
this.sharedPrivateStruct = struct.clone();
|
|
96
|
+
const clone = struct.clone();
|
|
97
|
+
clone.privateConfig = null;
|
|
98
|
+
clone.setShared();
|
|
99
|
+
this.sharedStruct = clone;
|
|
100
|
+
}
|
|
101
|
+
static async clearCache() {
|
|
102
|
+
await this.clearCacheWithoutRefresh();
|
|
103
|
+
await this.loadCaches();
|
|
104
|
+
}
|
|
105
|
+
static async clearCacheWithoutRefresh() {
|
|
106
|
+
await queues_1.QueueHandler.schedule('Platform.loadCaches', async () => {
|
|
107
|
+
this.sharedStruct = null;
|
|
108
|
+
this.sharedPrivateStruct = null;
|
|
109
|
+
});
|
|
110
|
+
await queues_1.QueueHandler.schedule('Platform.getShared', async () => {
|
|
111
|
+
this.shared = null;
|
|
112
|
+
});
|
|
66
113
|
}
|
|
67
114
|
async save() {
|
|
115
|
+
let update = false;
|
|
116
|
+
if (this.existsInDatabase) {
|
|
117
|
+
update = true;
|
|
118
|
+
}
|
|
68
119
|
const s = await super.save();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
120
|
+
if (update) {
|
|
121
|
+
// Force update cache immediately
|
|
122
|
+
await Platform.clearCache();
|
|
123
|
+
}
|
|
72
124
|
return s;
|
|
73
125
|
}
|
|
74
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../src/models/Platform.ts"],"names":[],"mappings":";;;;AAAA,iEAAqD;AACrD,8CAAiD;AACjD,wCAAgD;AAChD,sDAAgI;AAChI,+BAAoC;AACpC,6DAA0D;AAE1D,MAAa,QAAS,SAAQ,oBAAc;IACxC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC;IAO1B,EAAE,CAAU;IAGZ,MAAM,GAAmB,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAGnD,QAAQ,CAAS;IAGjB,gBAAgB,GAAkB,IAAI,CAAC;IAGvC,wBAAwB,GAAkB,IAAI,CAAC;IAG/C,aAAa,GAA0B,kCAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAExE;;OAEG;IAEH,YAAY,GAAyB,iCAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../src/models/Platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Platform.test.d.ts","sourceRoot":"","sources":["../../../src/models/Platform.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const structures_1 = require("@stamhoofd/structures");
|
|
4
|
+
const Platform_1 = require("./Platform");
|
|
5
|
+
const simple_database_1 = require("@simonbackx/simple-database");
|
|
6
|
+
describe('Model.Platform', () => {
|
|
7
|
+
describe('Shared caches', () => {
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
const platform = await Platform_1.Platform.getByID('1');
|
|
10
|
+
platform.config = structures_1.PlatformConfig.create({});
|
|
11
|
+
await platform.save();
|
|
12
|
+
});
|
|
13
|
+
test('Editable model changes do not propagate', async () => {
|
|
14
|
+
const editable = await Platform_1.Platform.getForEditing();
|
|
15
|
+
editable.config.membershipTypes = [
|
|
16
|
+
structures_1.PlatformMembershipType.create({ id: '1', name: 'Test' }),
|
|
17
|
+
];
|
|
18
|
+
const shared = (await Platform_1.Platform.getShared());
|
|
19
|
+
expect(shared.config.membershipTypes).toHaveLength(0);
|
|
20
|
+
});
|
|
21
|
+
test('Shared model is immutable', async () => {
|
|
22
|
+
const editable = await Platform_1.Platform.getForEditing();
|
|
23
|
+
editable.config.membershipTypes = [
|
|
24
|
+
structures_1.PlatformMembershipType.create({ id: '1', name: 'Test' }),
|
|
25
|
+
];
|
|
26
|
+
await editable.save();
|
|
27
|
+
const shared = (await Platform_1.Platform.getShared());
|
|
28
|
+
expect(() => {
|
|
29
|
+
shared.privateConfig.roles = [];
|
|
30
|
+
}).toThrow();
|
|
31
|
+
expect(() => {
|
|
32
|
+
shared.membershipOrganizationId = '2';
|
|
33
|
+
}).toThrow();
|
|
34
|
+
expect(shared.config.membershipTypes).toHaveLength(1);
|
|
35
|
+
expect(() => {
|
|
36
|
+
shared.concat.membershipTypes[0].name = 'Test2';
|
|
37
|
+
}).toThrow();
|
|
38
|
+
});
|
|
39
|
+
test('Saving changes propagates to all shared states', async () => {
|
|
40
|
+
const structBefore = await Platform_1.Platform.getSharedStruct();
|
|
41
|
+
const privateStructBefore = await Platform_1.Platform.getSharedPrivateStruct();
|
|
42
|
+
const sharedModelBefore = await Platform_1.Platform.getShared();
|
|
43
|
+
const editable = await Platform_1.Platform.getForEditing();
|
|
44
|
+
editable.config.membershipTypes = [
|
|
45
|
+
structures_1.PlatformMembershipType.create({ id: '1', name: 'Hey there' }),
|
|
46
|
+
];
|
|
47
|
+
await editable.save();
|
|
48
|
+
const structAfter = await Platform_1.Platform.getSharedStruct();
|
|
49
|
+
const privateStructAfter = await Platform_1.Platform.getSharedPrivateStruct();
|
|
50
|
+
const sharedModelAfter = await Platform_1.Platform.getShared();
|
|
51
|
+
expect(structAfter.config.membershipTypes[0].name).toEqual('Hey there');
|
|
52
|
+
expect(privateStructAfter.config.membershipTypes[0].name).toEqual('Hey there');
|
|
53
|
+
expect(sharedModelAfter.config.membershipTypes[0].name).toEqual('Hey there');
|
|
54
|
+
// Test before state not altered
|
|
55
|
+
expect(structBefore.config.membershipTypes).toHaveLength(0);
|
|
56
|
+
expect(privateStructBefore.config.membershipTypes).toHaveLength(0);
|
|
57
|
+
expect(sharedModelBefore.config.membershipTypes).toHaveLength(0);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('Creating fresh platform', () => {
|
|
61
|
+
beforeEach(async () => {
|
|
62
|
+
await simple_database_1.Database.delete('DELETE FROM platform');
|
|
63
|
+
await Platform_1.Platform.clearCacheWithoutRefresh();
|
|
64
|
+
if (await Platform_1.Platform.getByID('1')) {
|
|
65
|
+
throw new Error('Platform 1 should not exist');
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
test('when requesting getForEditing', async () => {
|
|
69
|
+
const editable = await Platform_1.Platform.getForEditing();
|
|
70
|
+
expect(editable.id).toBe('1');
|
|
71
|
+
expect(await Platform_1.Platform.getByID('1')).toEqual(editable);
|
|
72
|
+
});
|
|
73
|
+
test('when requesting getShared', async () => {
|
|
74
|
+
const shared = await Platform_1.Platform.getShared();
|
|
75
|
+
expect(shared.id).toBe('1');
|
|
76
|
+
expect(await Platform_1.Platform.getByID('1')).toMatchObject(shared);
|
|
77
|
+
});
|
|
78
|
+
test('when requesting getSharedPrivateStruct', async () => {
|
|
79
|
+
const editable = await Platform_1.Platform.getSharedPrivateStruct();
|
|
80
|
+
expect(editable).toBeDefined();
|
|
81
|
+
expect(await Platform_1.Platform.getByID('1')).toBeDefined();
|
|
82
|
+
});
|
|
83
|
+
test('when requesting getSharedStruct', async () => {
|
|
84
|
+
const editable = await Platform_1.Platform.getSharedStruct();
|
|
85
|
+
expect(editable).toBeDefined();
|
|
86
|
+
expect(await Platform_1.Platform.getByID('1')).toBeDefined();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=Platform.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Platform.test.js","sourceRoot":"","sources":["../../../src/models/Platform.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ export { Organization } from './Organization';
|
|
|
2
2
|
export { User } from './User';
|
|
3
3
|
export { Payment } from './Payment';
|
|
4
4
|
export { Registration } from './Registration';
|
|
5
|
-
export
|
|
5
|
+
export * from './Member';
|
|
6
6
|
export { MergedMember } from './MergedMember';
|
|
7
7
|
export * from './EmailVerificationCode';
|
|
8
8
|
export * from './Image';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,cAAc,yBAAyB,CAAC;AAExC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AAErC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AAExC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAE7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
package/dist/src/models/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Group = exports.BalanceItemPayment = exports.BalanceItem = exports.Token = exports.STPendingInvoice = exports.Order = exports.MergedMember = exports.
|
|
3
|
+
exports.Group = exports.BalanceItemPayment = exports.BalanceItem = exports.Token = exports.STPendingInvoice = exports.Order = exports.MergedMember = exports.Registration = exports.Payment = exports.User = exports.Organization = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var Organization_1 = require("./Organization");
|
|
6
6
|
Object.defineProperty(exports, "Organization", { enumerable: true, get: function () { return Organization_1.Organization; } });
|
|
@@ -10,8 +10,7 @@ var Payment_1 = require("./Payment");
|
|
|
10
10
|
Object.defineProperty(exports, "Payment", { enumerable: true, get: function () { return Payment_1.Payment; } });
|
|
11
11
|
var Registration_1 = require("./Registration");
|
|
12
12
|
Object.defineProperty(exports, "Registration", { enumerable: true, get: function () { return Registration_1.Registration; } });
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(exports, "Member", { enumerable: true, get: function () { return Member_1.Member; } });
|
|
13
|
+
tslib_1.__exportStar(require("./Member"), exports);
|
|
15
14
|
var MergedMember_1 = require("./MergedMember");
|
|
16
15
|
Object.defineProperty(exports, "MergedMember", { enumerable: true, get: function () { return MergedMember_1.MergedMember; } });
|
|
17
16
|
tslib_1.__exportStar(require("./EmailVerificationCode"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,mDAAyB;AACzB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AAErB,kEAAwC;AAExC,kDAAwB;AACxB,0DAAgC;AAChC,wDAA8B;AAC9B,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,0DAAgC;AAChC,4DAAkC;AAClC,yDAA+B;AAC/B,sDAA4B;AAC5B,sDAA4B;AAC5B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,iCAA+C;AAAtC,8FAAA,KAAK,OAAA;AACd,oDAA0B;AAC1B,qDAA2B;AAC3B,6DAAmC;AACnC,mDAAyB;AACzB,0DAAgC;AAChC,4DAAkC;AAClC,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd,6DAAmC;AACnC,2DAAiC;AACjC,iEAAuC;AACvC,+DAAqC;AAErC,0DAAgC;AAChC,gEAAsC;AACtC,kEAAwC;AAExC,qDAA2B;AAC3B,6DAAmC;AAEnC,gEAAsC;AAEtC,qDAA2B;AAC3B,uEAA6C;AAE7C,2EAAiD;AACjD,+DAAqC;AACrC,qEAA2C;AAC3C,kDAAwB;AACxB,2DAAiC;AACjC,kDAAwB;AACxB,8DAAoC;AACpC,0DAAgC;AAChC,qDAA2B;AAC3B,uDAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/factories/addressfactory.ts","../src/factories/balanceitemfactory.ts","../src/factories/emergencycontactfactory.ts","../src/factories/groupfactory.ts","../src/factories/memberfactory.ts","../src/factories/organizationfactory.ts","../src/factories/organizationtagfactory.ts","../src/factories/parentfactory.ts","../src/factories/recordfactory.ts","../src/factories/registercodefactory.ts","../src/factories/registrationfactory.ts","../src/factories/registrationperiodfactory.ts","../src/factories/userfactory.ts","../src/factories/webshopfactory.ts","../src/factories/index.ts","../src/helpers/dnsvalidator.ts","../src/helpers/emailbuilder.ts","../src/helpers/groupbuilder.ts","../src/helpers/handlebars.ts","../src/helpers/membermerger.test.ts","../src/helpers/membermerger.ts","../src/helpers/ratelimiter.ts","../src/helpers/webshopcounter.ts","../src/migrations/1605262045-import-postcodes.ts","../src/migrations/1605262046-import-postcodes-nl.ts","../src/models/auditlog.ts","../src/models/balanceitem.ts","../src/models/balanceitempayment.ts","../src/models/buckaroopayment.ts","../src/models/cachedbalance.ts","../src/models/document.ts","../src/models/documenttemplate.ts","../src/models/email.test.ts","../src/models/email.ts","../src/models/emailrecipient.ts","../src/models/emailtemplate.ts","../src/models/emailverificationcode.ts","../src/models/event.ts","../src/models/eventnotification.ts","../src/models/group.ts","../src/models/image.ts","../src/models/member.ts","../src/models/memberplatformmembership.ts","../src/models/memberresponsibilityrecord.ts","../src/models/memberuser.ts","../src/models/mergedmember.ts","../src/models/molliepayment.ts","../src/models/mollietoken.ts","../src/models/onetimetoken.ts","../src/models/order.ts","../src/models/organization.ts","../src/models/organizationregistrationperiod.ts","../src/models/passwordtoken.ts","../src/models/payconiqpayment.ts","../src/models/payment.ts","../src/models/platform.ts","../src/models/registercode.ts","../src/models/registration.ts","../src/models/registrationperiod.ts","../src/models/stcredit.ts","../src/models/stinvoice.ts","../src/models/stpackage.ts","../src/models/stpendinginvoice.ts","../src/models/stripeaccount.ts","../src/models/stripecheckoutsession.ts","../src/models/stripepaymentintent.ts","../src/models/ticket.ts","../src/models/token.test.ts","../src/models/token.ts","../src/models/usedregistercode.ts","../src/models/user.ts","../src/models/userpermissions.ts","../src/models/webshop.ts","../src/models/webshopdiscountcode.ts","../src/models/index.ts","../src/models/addresses/city.ts","../src/models/addresses/postalcode.test.ts","../src/models/addresses/postalcode.ts","../src/models/addresses/province.ts","../src/models/addresses/street.ts","../src/structures/organizationservermetadata.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.6.2"}
|
|
1
|
+
{"root":["../src/index.ts","../src/factories/addressfactory.ts","../src/factories/balanceitemfactory.ts","../src/factories/emergencycontactfactory.ts","../src/factories/groupfactory.ts","../src/factories/memberfactory.ts","../src/factories/memberresponsibilityrecordfactory.ts","../src/factories/organizationfactory.ts","../src/factories/organizationregistrationperiodfactory.ts","../src/factories/organizationtagfactory.ts","../src/factories/parentfactory.ts","../src/factories/platformresponsibilityfactory.ts","../src/factories/recordfactory.ts","../src/factories/registercodefactory.ts","../src/factories/registrationfactory.ts","../src/factories/registrationperiodfactory.ts","../src/factories/userfactory.ts","../src/factories/webshopfactory.ts","../src/factories/index.ts","../src/helpers/dnsvalidator.ts","../src/helpers/emailbuilder.ts","../src/helpers/groupbuilder.ts","../src/helpers/handlebars.ts","../src/helpers/membermerger.test.ts","../src/helpers/membermerger.ts","../src/helpers/ratelimiter.ts","../src/helpers/webshopcounter.ts","../src/migrations/1605262045-import-postcodes.ts","../src/migrations/1605262046-import-postcodes-nl.ts","../src/models/auditlog.ts","../src/models/balanceitem.ts","../src/models/balanceitempayment.ts","../src/models/buckaroopayment.ts","../src/models/cachedbalance.ts","../src/models/document.ts","../src/models/documenttemplate.ts","../src/models/email.test.ts","../src/models/email.ts","../src/models/emailrecipient.ts","../src/models/emailtemplate.ts","../src/models/emailverificationcode.ts","../src/models/event.ts","../src/models/eventnotification.ts","../src/models/group.ts","../src/models/image.ts","../src/models/member.ts","../src/models/memberplatformmembership.ts","../src/models/memberresponsibilityrecord.ts","../src/models/memberuser.ts","../src/models/mergedmember.ts","../src/models/molliepayment.ts","../src/models/mollietoken.ts","../src/models/onetimetoken.ts","../src/models/order.ts","../src/models/organization.ts","../src/models/organizationregistrationperiod.ts","../src/models/passwordtoken.ts","../src/models/payconiqpayment.ts","../src/models/payment.ts","../src/models/platform.test.ts","../src/models/platform.ts","../src/models/registercode.ts","../src/models/registration.ts","../src/models/registrationperiod.ts","../src/models/stcredit.ts","../src/models/stinvoice.ts","../src/models/stpackage.ts","../src/models/stpendinginvoice.ts","../src/models/stripeaccount.ts","../src/models/stripecheckoutsession.ts","../src/models/stripepaymentintent.ts","../src/models/ticket.ts","../src/models/token.test.ts","../src/models/token.ts","../src/models/usedregistercode.ts","../src/models/user.ts","../src/models/userpermissions.ts","../src/models/webshop.ts","../src/models/webshopdiscountcode.ts","../src/models/index.ts","../src/models/addresses/city.ts","../src/models/addresses/postalcode.test.ts","../src/models/addresses/postalcode.ts","../src/models/addresses/province.ts","../src/models/addresses/street.ts","../src/structures/organizationservermetadata.ts","../tests/jest.global.setup.ts","../tests/jest.setup.ts","../../../../environment.d.ts","../../../../jest-extended.d.ts","../../../stamhoofd.d.ts"],"version":"5.6.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/models",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.79.0",
|
|
4
4
|
"main": "./dist/src/index.js",
|
|
5
5
|
"types": "./dist/src/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"lint": "eslint"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@simonbackx/simple-database": "1.29.
|
|
19
|
+
"@simonbackx/simple-database": "1.29.1",
|
|
20
20
|
"@stamhoofd/email": "*",
|
|
21
21
|
"@stamhoofd/queues": "*"
|
|
22
22
|
},
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"base-x": "^3.0.9"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@simonbackx/simple-database": "1.29.
|
|
28
|
+
"@simonbackx/simple-database": "1.29.1"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "1ba7d80ded3676ecdc63741f3e8972bd378b5ea6"
|
|
34
34
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Factory } from '@simonbackx/simple-database';
|
|
2
|
-
import { GroupPrice, GroupSettings,
|
|
2
|
+
import { GroupPrice, GroupSettings, GroupType, ReduceablePrice } from '@stamhoofd/structures';
|
|
3
3
|
|
|
4
|
+
import { RegistrationPeriod } from '../models';
|
|
4
5
|
import { Group } from '../models/Group';
|
|
5
6
|
import { Organization } from '../models/Organization';
|
|
6
7
|
import { OrganizationFactory } from './OrganizationFactory';
|
|
@@ -10,9 +11,10 @@ class Options {
|
|
|
10
11
|
price?: number;
|
|
11
12
|
reducedPrice?: number;
|
|
12
13
|
stock?: number;
|
|
13
|
-
|
|
14
|
+
type?: GroupType;
|
|
14
15
|
skipCategory?: boolean;
|
|
15
16
|
maxMembers?: number | null;
|
|
17
|
+
period?: RegistrationPeriod;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
export class GroupFactory extends Factory<Options, Group> {
|
|
@@ -21,7 +23,14 @@ export class GroupFactory extends Factory<Options, Group> {
|
|
|
21
23
|
|
|
22
24
|
const group = new Group();
|
|
23
25
|
group.organizationId = organization.id;
|
|
24
|
-
|
|
26
|
+
|
|
27
|
+
if (this.options.period) {
|
|
28
|
+
group.periodId = this.options.period.id;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
group.periodId = organization.periodId;
|
|
32
|
+
}
|
|
33
|
+
|
|
25
34
|
group.settings = GroupSettings.create({
|
|
26
35
|
name: 'Group name',
|
|
27
36
|
startDate: new Date(new Date().getTime() - 10 * 1000),
|
|
@@ -40,6 +49,10 @@ export class GroupFactory extends Factory<Options, Group> {
|
|
|
40
49
|
maxMembers: this.options.maxMembers === undefined ? null : this.options.maxMembers,
|
|
41
50
|
});
|
|
42
51
|
|
|
52
|
+
if (this.options.type) {
|
|
53
|
+
group.type = this.options.type;
|
|
54
|
+
}
|
|
55
|
+
|
|
43
56
|
await group.save();
|
|
44
57
|
|
|
45
58
|
if (!this.options.skipCategory) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Factory } from '@simonbackx/simple-database';
|
|
2
|
+
import { MemberResponsibility } from '@stamhoofd/structures';
|
|
3
|
+
|
|
4
|
+
import { Member, MemberResponsibilityRecord } from '../models';
|
|
5
|
+
import { PlatformResponsibilityFactory } from './PlatformResponsibilityFactory';
|
|
6
|
+
|
|
7
|
+
class Options {
|
|
8
|
+
name?: string;
|
|
9
|
+
responsibility?: MemberResponsibility;
|
|
10
|
+
member: Member;
|
|
11
|
+
organizationId?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class MemberResponsibilityRecordFactory extends Factory<Options, MemberResponsibilityRecord> {
|
|
15
|
+
async create(): Promise<MemberResponsibilityRecord> {
|
|
16
|
+
const record = new MemberResponsibilityRecord();
|
|
17
|
+
const responsibility = this.options.responsibility ?? (await new PlatformResponsibilityFactory({
|
|
18
|
+
organizationBased: !!this.options.organizationId,
|
|
19
|
+
}).create());
|
|
20
|
+
record.responsibilityId = this.options.responsibility?.id ?? responsibility.id;
|
|
21
|
+
record.memberId = this.options.member.id;
|
|
22
|
+
record.startDate = new Date();
|
|
23
|
+
record.endDate = null;
|
|
24
|
+
record.organizationId = this.options.organizationId ?? this.options.member.organizationId;
|
|
25
|
+
|
|
26
|
+
if (record.organizationId) {
|
|
27
|
+
if (responsibility.organizationBased) {
|
|
28
|
+
throw new Error('This responsibility is organization based. Please also provider the organizationId option when creating the record with MemberResponsibilityRecordFactory');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
await record.save();
|
|
33
|
+
return record;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Factory } from '@simonbackx/simple-database';
|
|
2
|
+
|
|
3
|
+
import { OrganizationRegistrationPeriod } from '../models';
|
|
4
|
+
import { Organization } from '../models/Organization';
|
|
5
|
+
import { RegistrationPeriod } from '../models/RegistrationPeriod';
|
|
6
|
+
|
|
7
|
+
class Options {
|
|
8
|
+
organization: Organization;
|
|
9
|
+
period: RegistrationPeriod;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class OrganizationRegistrationPeriodFactory extends Factory<Options, OrganizationRegistrationPeriod> {
|
|
13
|
+
async create(): Promise<OrganizationRegistrationPeriod> {
|
|
14
|
+
const organizationRegistrationPeriod = new OrganizationRegistrationPeriod();
|
|
15
|
+
|
|
16
|
+
organizationRegistrationPeriod.organizationId = this.options.organization.id;
|
|
17
|
+
organizationRegistrationPeriod.periodId = this.options.period.id;
|
|
18
|
+
|
|
19
|
+
await organizationRegistrationPeriod.save();
|
|
20
|
+
return organizationRegistrationPeriod;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -14,7 +14,7 @@ export class OrganizationTagFactory extends Factory<Options, OrganizationTag> {
|
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
// Add to platform
|
|
17
|
-
const platform = await Platform.
|
|
17
|
+
const platform = await Platform.getForEditing();
|
|
18
18
|
platform.config.tags.push(tag);
|
|
19
19
|
await platform.save();
|
|
20
20
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Factory } from '@simonbackx/simple-database';
|
|
2
|
+
import { MemberResponsibility } from '@stamhoofd/structures';
|
|
3
|
+
|
|
4
|
+
import { Platform } from '../models/Platform';
|
|
5
|
+
|
|
6
|
+
class Options {
|
|
7
|
+
name?: string;
|
|
8
|
+
organizationBased?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class PlatformResponsibilityFactory extends Factory<Options, MemberResponsibility> {
|
|
12
|
+
async create(): Promise<MemberResponsibility> {
|
|
13
|
+
const responsibility = MemberResponsibility.create({
|
|
14
|
+
name: this.options.name ?? ('Responsibility ' + (new Date().getTime() + Math.floor(Math.random() * 999999))),
|
|
15
|
+
organizationBased: this.options.organizationBased ?? true,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// Add to platform
|
|
19
|
+
const platform = await Platform.getForEditing();
|
|
20
|
+
platform.config.responsibilities.push(responsibility);
|
|
21
|
+
await platform.save();
|
|
22
|
+
|
|
23
|
+
return responsibility;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -6,6 +6,7 @@ import { RegistrationPeriod } from '../models';
|
|
|
6
6
|
class Options {
|
|
7
7
|
startDate?: Date;
|
|
8
8
|
endDate?: Date;
|
|
9
|
+
previousPeriodId?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export class RegistrationPeriodFactory extends Factory<Options, RegistrationPeriod> {
|
|
@@ -15,6 +16,9 @@ export class RegistrationPeriodFactory extends Factory<Options, RegistrationPeri
|
|
|
15
16
|
period.organizationId = null;
|
|
16
17
|
period.startDate = this.options.startDate ?? new Date(2024, 0, 1, 0, 0, 0, 0);
|
|
17
18
|
period.endDate = this.options.endDate ?? new Date(2024, 11, 31, 59, 59, 59, 999);
|
|
19
|
+
if (this.options.previousPeriodId) {
|
|
20
|
+
period.previousPeriodId = this.options.previousPeriodId;
|
|
21
|
+
}
|
|
18
22
|
period.settings = RegistrationPeriodSettings.create({});
|
|
19
23
|
|
|
20
24
|
await period.save();
|
package/src/factories/index.ts
CHANGED
|
@@ -12,3 +12,6 @@ export * from './WebshopFactory';
|
|
|
12
12
|
export * from './BalanceItemFactory';
|
|
13
13
|
export * from './RegistrationPeriodFactory';
|
|
14
14
|
export * from './OrganizationTagFactory';
|
|
15
|
+
export * from './OrganizationRegistrationPeriodFactory';
|
|
16
|
+
export * from './MemberResponsibilityRecordFactory';
|
|
17
|
+
export * from './PlatformResponsibilityFactory';
|