@stamhoofd/models 2.1.1 → 2.2.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.
Files changed (127) hide show
  1. package/LICENSE +661 -0
  2. package/dist/src/factories/GroupFactory.d.ts.map +1 -1
  3. package/dist/src/factories/GroupFactory.js +1 -0
  4. package/dist/src/factories/GroupFactory.js.map +1 -1
  5. package/dist/src/factories/MemberFactory.d.ts.map +1 -1
  6. package/dist/src/factories/MemberFactory.js +0 -2
  7. package/dist/src/factories/MemberFactory.js.map +1 -1
  8. package/dist/src/factories/RegistrationFactory.d.ts.map +1 -1
  9. package/dist/src/factories/RegistrationFactory.js +2 -0
  10. package/dist/src/factories/RegistrationFactory.js.map +1 -1
  11. package/dist/src/factories/UserFactory.d.ts +1 -0
  12. package/dist/src/factories/UserFactory.d.ts.map +1 -1
  13. package/dist/src/factories/UserFactory.js +14 -4
  14. package/dist/src/factories/UserFactory.js.map +1 -1
  15. package/dist/src/helpers/GroupBuilder.d.ts.map +1 -1
  16. package/dist/src/helpers/GroupBuilder.js +25 -2
  17. package/dist/src/helpers/GroupBuilder.js.map +1 -1
  18. package/dist/src/migrations/1605262046-import-postcodes-nl.js +1 -1
  19. package/dist/src/migrations/1605262046-import-postcodes-nl.js.map +1 -1
  20. package/dist/src/migrations/1714985451-user-nullable-organization-id.sql +2 -0
  21. package/dist/src/migrations/1714985452-email-verification-code-nullable-organization-id.sql +2 -0
  22. package/dist/src/migrations/1714985453-user-organization-permissions.sql +2 -0
  23. package/dist/src/migrations/1714985454-user-organization-permissions.sql +2 -0
  24. package/dist/src/migrations/1715079362-platform.sql +6 -0
  25. package/dist/src/migrations/1715181649-registrations-organization-id.sql +2 -0
  26. package/dist/src/migrations/1715181650-registrations-organization-id-fill.sql +1 -0
  27. package/dist/src/migrations/1715181651-registrations-organization-id-drop-null.sql +2 -0
  28. package/dist/src/migrations/1716117067-members-nullable-organization-id.sql +2 -0
  29. package/dist/src/migrations/1719567581-registration-periods.sql +13 -0
  30. package/dist/src/migrations/1719567582-organization-registration-periods.sql +13 -0
  31. package/dist/src/migrations/1719567881-organization-periodId.sql +2 -0
  32. package/dist/src/migrations/1719567882-groups-periodId.sql +2 -0
  33. package/dist/src/migrations/1719567883-platform-periodId.sql +2 -0
  34. package/dist/src/migrations/1719568079-default-period.sql +2 -0
  35. package/dist/src/migrations/1719568080-set-default-period-platform.sql +1 -0
  36. package/dist/src/migrations/1719568081-set-default-period-organizations.sql +1 -0
  37. package/dist/src/migrations/1719568082-set-default-period-groups.sql +1 -0
  38. package/dist/src/migrations/1719580828-registrations-periodId.sql +2 -0
  39. package/dist/src/migrations/1719580829-set-default-period-registrations.sql +1 -0
  40. package/dist/src/migrations/1719931362-groups-default-age-group-id.sql +2 -0
  41. package/dist/src/migrations/1720080975-convert-charset.sql +87 -0
  42. package/dist/src/migrations/1720080976-responsibilities.sql +14 -0
  43. package/dist/src/migrations/1720088136-member-membership-types.sql +23 -0
  44. package/dist/src/migrations/1720088137-member-membership-types-expire-date.sql +2 -0
  45. package/dist/src/migrations/1720444931-organization-active.sql +2 -0
  46. package/dist/src/models/BalanceItem.d.ts +1 -1
  47. package/dist/src/models/BalanceItem.d.ts.map +1 -1
  48. package/dist/src/models/BalanceItem.js +15 -5
  49. package/dist/src/models/BalanceItem.js.map +1 -1
  50. package/dist/src/models/Document.d.ts.map +1 -1
  51. package/dist/src/models/Document.js +6 -2
  52. package/dist/src/models/Document.js.map +1 -1
  53. package/dist/src/models/DocumentTemplate.d.ts +3 -3
  54. package/dist/src/models/DocumentTemplate.d.ts.map +1 -1
  55. package/dist/src/models/DocumentTemplate.js +23 -24
  56. package/dist/src/models/DocumentTemplate.js.map +1 -1
  57. package/dist/src/models/EmailVerificationCode.d.ts +6 -7
  58. package/dist/src/models/EmailVerificationCode.d.ts.map +1 -1
  59. package/dist/src/models/EmailVerificationCode.js +37 -30
  60. package/dist/src/models/EmailVerificationCode.js.map +1 -1
  61. package/dist/src/models/Group.d.ts +6 -4
  62. package/dist/src/models/Group.d.ts.map +1 -1
  63. package/dist/src/models/Group.js +28 -9
  64. package/dist/src/models/Group.js.map +1 -1
  65. package/dist/src/models/Member.d.ts +10 -9
  66. package/dist/src/models/Member.d.ts.map +1 -1
  67. package/dist/src/models/Member.js +99 -15
  68. package/dist/src/models/Member.js.map +1 -1
  69. package/dist/src/models/MemberPlatformMembership.d.ts +19 -0
  70. package/dist/src/models/MemberPlatformMembership.d.ts.map +1 -0
  71. package/dist/src/models/MemberPlatformMembership.js +123 -0
  72. package/dist/src/models/MemberPlatformMembership.js.map +1 -0
  73. package/dist/src/models/Organization.d.ts +8 -6
  74. package/dist/src/models/Organization.d.ts.map +1 -1
  75. package/dist/src/models/Organization.js +38 -59
  76. package/dist/src/models/Organization.js.map +1 -1
  77. package/dist/src/models/OrganizationRegistrationPeriod.d.ts +3 -0
  78. package/dist/src/models/OrganizationRegistrationPeriod.d.ts.map +1 -1
  79. package/dist/src/models/OrganizationRegistrationPeriod.js +49 -0
  80. package/dist/src/models/OrganizationRegistrationPeriod.js.map +1 -1
  81. package/dist/src/models/PasswordToken.d.ts +1 -1
  82. package/dist/src/models/PasswordToken.d.ts.map +1 -1
  83. package/dist/src/models/PasswordToken.js +9 -10
  84. package/dist/src/models/PasswordToken.js.map +1 -1
  85. package/dist/src/models/Payment.d.ts +5 -3
  86. package/dist/src/models/Payment.d.ts.map +1 -1
  87. package/dist/src/models/Payment.js +13 -5
  88. package/dist/src/models/Payment.js.map +1 -1
  89. package/dist/src/models/Platform.d.ts +1 -0
  90. package/dist/src/models/Platform.d.ts.map +1 -1
  91. package/dist/src/models/Platform.js +3 -0
  92. package/dist/src/models/Platform.js.map +1 -1
  93. package/dist/src/models/Registration.d.ts +7 -2
  94. package/dist/src/models/Registration.d.ts.map +1 -1
  95. package/dist/src/models/Registration.js +11 -0
  96. package/dist/src/models/Registration.js.map +1 -1
  97. package/dist/src/models/STInvoice.d.ts.map +1 -1
  98. package/dist/src/models/STInvoice.js +1 -0
  99. package/dist/src/models/STInvoice.js.map +1 -1
  100. package/dist/src/models/Token.d.ts.map +1 -1
  101. package/dist/src/models/Token.js +1 -0
  102. package/dist/src/models/Token.js.map +1 -1
  103. package/dist/src/models/User.d.ts +20 -11
  104. package/dist/src/models/User.d.ts.map +1 -1
  105. package/dist/src/models/User.js +84 -26
  106. package/dist/src/models/User.js.map +1 -1
  107. package/dist/src/models/index.d.ts +5 -0
  108. package/dist/src/models/index.d.ts.map +1 -1
  109. package/dist/src/models/index.js +5 -0
  110. package/dist/src/models/index.js.map +1 -1
  111. package/package.json +3 -2
  112. package/src/migrations/1719931362-groups-default-age-group-id.sql +2 -0
  113. package/src/migrations/1720080975-convert-charset.sql +87 -0
  114. package/src/migrations/1720080976-responsibilities.sql +14 -0
  115. package/src/migrations/1720088136-member-membership-types.sql +23 -0
  116. package/src/migrations/1720088137-member-membership-types-expire-date.sql +2 -0
  117. package/src/migrations/1720444931-organization-active.sql +2 -0
  118. package/src/models/Group.ts +3 -0
  119. package/src/models/Member.ts +86 -2
  120. package/src/models/MemberPlatformMembership.ts +122 -0
  121. package/src/models/Organization.ts +4 -61
  122. package/src/models/OrganizationRegistrationPeriod.ts +60 -0
  123. package/src/models/Payment.ts +4 -4
  124. package/src/models/Platform.ts +4 -0
  125. package/src/models/Registration.ts +6 -0
  126. package/src/models/STInvoice.ts +2 -0
  127. package/src/models/index.ts +1 -0
@@ -3,13 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Member = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const simple_database_1 = require("@simonbackx/simple-database");
6
+ const sql_1 = require("@stamhoofd/sql");
6
7
  const structures_1 = require("@stamhoofd/structures");
7
8
  const utility_1 = require("@stamhoofd/utility");
8
9
  const uuid_1 = require("uuid");
9
10
  const _1 = require("./");
11
+ const queues_1 = require("@stamhoofd/queues");
10
12
  class Member extends simple_database_1.Model {
11
13
  constructor() {
12
14
  super(...arguments);
15
+ this.organizationId = null;
13
16
  /**
14
17
  * Not yet paid balance
15
18
  */
@@ -20,7 +23,7 @@ class Member extends simple_database_1.Model {
20
23
  */
21
24
  static async getWithRegistrations(id) {
22
25
  var _a;
23
- return (_a = (await this.getAllWithRegistrations(id))[0]) !== null && _a !== void 0 ? _a : null;
26
+ return (_a = (await this.getBlobByIds(id))[0]) !== null && _a !== void 0 ? _a : null;
24
27
  }
25
28
  /**
26
29
  * Update the outstanding balance of multiple members in one go (or all members)
@@ -146,7 +149,7 @@ class Member extends simple_database_1.Model {
146
149
  /**
147
150
  * Fetch all members with their corresponding (valid) registrations, users
148
151
  */
149
- static async getAllWithRegistrations(...ids) {
152
+ static async getBlobByIds(...ids) {
150
153
  if (ids.length == 0) {
151
154
  return [];
152
155
  }
@@ -157,12 +160,17 @@ class Member extends simple_database_1.Model {
157
160
  query += `where \`${Member.table}\`.\`${Member.primary.name}\` IN (?)`;
158
161
  const [results] = await simple_database_1.Database.select(query, [ids]);
159
162
  const members = [];
163
+ // Load groups
164
+ const groupIds = results.map(r => { var _a; return (_a = r[_1.Registration.table]) === null || _a === void 0 ? void 0 : _a.groupId; }).filter(id => id);
165
+ const groups = await _1.Group.getByIDs(...utility_1.Formatter.uniqueArray(groupIds));
160
166
  for (const row of results) {
161
167
  const foundMember = Member.fromRow(row[Member.table]);
162
168
  if (!foundMember) {
163
169
  throw new Error("Expected member in every row");
164
170
  }
165
- const _f = foundMember.setManyRelation(Member.registrations, []).setManyRelation(Member.users, []);
171
+ const _f = foundMember
172
+ .setManyRelation(Member.registrations, [])
173
+ .setManyRelation(Member.users, []);
166
174
  // Seach if we already got this member?
167
175
  const existingMember = members.find(m => m.id == _f.id);
168
176
  const member = (existingMember !== null && existingMember !== void 0 ? existingMember : _f);
@@ -174,7 +182,11 @@ class Member extends simple_database_1.Model {
174
182
  if (registration) {
175
183
  // Check if we already have this registration
176
184
  if (!member.registrations.find(r => r.id == registration.id)) {
177
- member.registrations.push(registration);
185
+ const g = groups.find(g => g.id == registration.groupId);
186
+ if (!g) {
187
+ throw new Error("Group not found");
188
+ }
189
+ member.registrations.push(registration.setRelation(_1.Registration.group, g));
178
190
  }
179
191
  }
180
192
  // Check if we have a user
@@ -204,35 +216,107 @@ class Member extends simple_database_1.Model {
204
216
  // Member has no users
205
217
  ids.push(id);
206
218
  }
207
- return await this.getAllWithRegistrations(...ids);
219
+ return await this.getBlobByIds(...ids);
208
220
  }
209
221
  /**
210
222
  * Fetch all members with their corresponding (valid) registrations or waiting lists and payments
211
223
  */
212
224
  static async getMembersWithRegistrationForUser(user) {
213
- let query = `SELECT \`${Member.table}\`.\`${Member.primary.name}\` from \`${Member.users.linkTable}\`\n`;
214
- query += `JOIN \`${Member.table}\` ON \`${Member.table}\`.\`${Member.primary.name}\` = \`${Member.users.linkTable}\`.\`${Member.users.linkKeyA}\`\n`;
215
- query += `where \`${Member.users.linkTable}\`.\`${Member.users.linkKeyB}\` = ?`;
216
- const [results] = await simple_database_1.Database.select(query, [user.id]);
217
- const memberIds = results.map((r) => r[Member.table][Member.primary.name]);
218
- return await this.getAllWithRegistrations(...memberIds);
225
+ const query = sql_1.SQL
226
+ .select(sql_1.SQL.column('id'))
227
+ .from(sql_1.SQL.table(Member.table))
228
+ .join(sql_1.SQL.leftJoin(sql_1.SQL.table('_members_users')).where(sql_1.SQL.column('_members_users', 'membersId'), sql_1.SQL.column(Member.table, 'id'))).where(sql_1.SQL.column('_members_users', 'usersId'), user.id);
229
+ const data = await query.fetch();
230
+ return this.getBlobByIds(...data.map((r) => r.members.id));
219
231
  }
220
232
  getStructureWithRegistrations(forOrganization = null) {
221
- return structures_1.EncryptedMemberWithRegistrations.create({
233
+ return structures_1.MemberWithRegistrationsBlob.create({
222
234
  ...this,
223
235
  registrations: this.registrations.map(r => r.getStructure()),
224
236
  details: this.details,
225
- users: this.users.map(u => structures_1.User.create({ ...u, hasAccount: u.hasAccount() })),
237
+ users: this.users.map(u => structures_1.User.create({
238
+ ...u,
239
+ hasAccount: u.hasAccount()
240
+ })),
226
241
  });
227
242
  }
228
243
  static getRegistrationWithMemberStructure(registration) {
229
244
  return structures_1.RegistrationWithMember.create({
230
245
  ...registration.getStructure(),
231
- group: registration.group.getStructure(),
232
246
  cycle: registration.cycle,
233
247
  member: structures_1.Member.create(registration.member),
234
248
  });
235
249
  }
250
+ async updateMemberships() {
251
+ console.log('Updating memberships for member: ' + this.id);
252
+ return await queues_1.QueueHandler.schedule('updateMemberships-' + this.id, async () => {
253
+ const platform = await _1.Platform.getShared();
254
+ const registrations = this.registrations.filter(r => r.group.periodId == platform.periodId && !r.waitingList && r.registeredAt && !r.deactivatedAt);
255
+ const defaultMemberships = registrations.flatMap(r => {
256
+ if (!r.group.defaultAgeGroupId) {
257
+ return [];
258
+ }
259
+ const defaultAgeGroup = platform.config.defaultAgeGroups.find(g => g.id == r.group.defaultAgeGroupId);
260
+ if (!defaultAgeGroup || !defaultAgeGroup.defaultMembershipTypeId) {
261
+ return [];
262
+ }
263
+ const defaultMembership = platform.config.membershipTypes.find(m => m.id == defaultAgeGroup.defaultMembershipTypeId);
264
+ if (!defaultMembership) {
265
+ return [];
266
+ }
267
+ return [{
268
+ registration: r,
269
+ membership: defaultMembership,
270
+ }];
271
+ });
272
+ // Get active memberships for this member
273
+ const memberships = await _1.MemberPlatformMembership.where({ memberId: this.id, periodId: platform.periodId });
274
+ const now = new Date();
275
+ const activeMemberships = memberships.filter(m => m.startDate <= now && m.endDate >= now);
276
+ if (defaultMemberships.length == 0) {
277
+ // Stop all active memberships
278
+ for (const membership of activeMemberships) {
279
+ if (!membership.invoiceId && !membership.invoiceItemDetailId) {
280
+ console.log('Removing membership because no longer registered member and not yet invoiced for: ' + this.id + ' - membership ' + membership.id);
281
+ await membership.delete();
282
+ }
283
+ }
284
+ console.log('Skipping automatic membership for: ' + this.id, ' - no default memberships found');
285
+ return;
286
+ }
287
+ if (activeMemberships.length) {
288
+ // Skip automatic additions
289
+ console.log('Skipping automatic membership for: ' + this.id, ' - already has active memberships');
290
+ return;
291
+ }
292
+ // Add the cheapest available membership
293
+ const cheapestMembership = defaultMemberships.sort(({ membership: a, registration: ar }, { membership: b, registration: br }) => {
294
+ const diff = a.getPrice(platform.periodId, now).price - b.getPrice(platform.periodId, now).price;
295
+ if (diff == 0) {
296
+ return utility_1.Sorter.byDateValue(br.createdAt, ar.createdAt);
297
+ }
298
+ return diff;
299
+ })[0];
300
+ if (!cheapestMembership) {
301
+ throw new Error("No membership found");
302
+ }
303
+ const periodConfig = cheapestMembership.membership.periods.get(platform.periodId);
304
+ if (!periodConfig) {
305
+ throw new Error("Period config not found");
306
+ }
307
+ console.log('Creating automatic membership for: ' + this.id + ' - membership type ' + cheapestMembership.membership.id);
308
+ const membership = new _1.MemberPlatformMembership();
309
+ membership.memberId = this.id;
310
+ membership.membershipTypeId = cheapestMembership.membership.id;
311
+ membership.organizationId = cheapestMembership.registration.organizationId;
312
+ membership.periodId = platform.periodId;
313
+ membership.startDate = periodConfig.startDate;
314
+ membership.endDate = periodConfig.endDate;
315
+ membership.expireDate = periodConfig.expireDate;
316
+ await membership.calculatePrice();
317
+ await membership.save();
318
+ });
319
+ }
236
320
  }
237
321
  exports.Member = Member;
238
322
  Member.table = "members";
@@ -247,7 +331,7 @@ tslib_1.__decorate([
247
331
  })
248
332
  ], Member.prototype, "id", void 0);
249
333
  tslib_1.__decorate([
250
- (0, simple_database_1.column)({ type: "string" })
334
+ (0, simple_database_1.column)({ type: "string", nullable: true })
251
335
  ], Member.prototype, "organizationId", void 0);
252
336
  tslib_1.__decorate([
253
337
  (0, simple_database_1.column)({
@@ -1 +1 @@
1
- {"version":3,"file":"Member.js","sourceRoot":"","sources":["../../../src/models/Member.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Member.js","sourceRoot":"","sources":["../../../src/models/Member.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Model } from "@simonbackx/simple-database";
2
+ export declare class MemberPlatformMembership extends Model {
3
+ static table: string;
4
+ id: string;
5
+ memberId: string;
6
+ membershipTypeId: string;
7
+ organizationId: string;
8
+ periodId: string;
9
+ startDate: Date;
10
+ endDate: Date;
11
+ expireDate: Date | null;
12
+ invoiceItemDetailId: string | null;
13
+ invoiceId: string | null;
14
+ price: number;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ calculatePrice(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=MemberPlatformMembership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberPlatformMembership.d.ts","sourceRoot":"","sources":["../../../src/models/MemberPlatformMembership.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAO5D,qBAAa,wBAAyB,SAAQ,KAAK;IAC/C,MAAM,CAAC,KAAK,SAAiC;IAQ7C,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,cAAc,EAAE,MAAM,CAAC;IAGvB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,IAAI,CAAC;IAGhB,OAAO,EAAE,IAAI,CAAC;IAGd,UAAU,EAAE,IAAI,GAAG,IAAI,CAAQ;IAG/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGhC,KAAK,SAAK;IAYV,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAGT,cAAc;CAiDvB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemberPlatformMembership = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const simple_database_1 = require("@simonbackx/simple-database");
6
+ const uuid_1 = require("uuid");
7
+ const Platform_1 = require("./Platform");
8
+ const structures_1 = require("@stamhoofd/structures");
9
+ const simple_errors_1 = require("@simonbackx/simple-errors");
10
+ const utility_1 = require("@stamhoofd/utility");
11
+ class MemberPlatformMembership extends simple_database_1.Model {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.expireDate = null;
15
+ this.invoiceItemDetailId = null;
16
+ this.invoiceId = null;
17
+ this.price = 0;
18
+ }
19
+ async calculatePrice() {
20
+ var _a;
21
+ if (this.invoiceId || this.invoiceItemDetailId) {
22
+ return;
23
+ }
24
+ const platform = await Platform_1.Platform.getShared();
25
+ const membershipType = platform.config.membershipTypes.find(m => m.id == this.membershipTypeId);
26
+ if (!membershipType) {
27
+ throw new simple_errors_1.SimpleError({
28
+ code: 'invalid_membership_type',
29
+ message: 'Uknown membership type',
30
+ human: 'Deze aansluiting is niet (meer) beschikbaar'
31
+ });
32
+ }
33
+ const periodConfig = membershipType.periods.get(this.periodId);
34
+ if (!periodConfig) {
35
+ throw new simple_errors_1.SimpleError({
36
+ code: 'period_unavailable',
37
+ message: 'Membership not available for this period',
38
+ human: 'Deze aansluiting is nog niet beschikbaar voor dit werkjaar'
39
+ });
40
+ }
41
+ const priceConfig = periodConfig.getPriceForDate(membershipType.behaviour === structures_1.PlatformMembershipTypeBehaviour.Days ? this.startDate : ((_a = this.createdAt) !== null && _a !== void 0 ? _a : new Date()));
42
+ if (membershipType.behaviour === structures_1.PlatformMembershipTypeBehaviour.Days) {
43
+ // Make sure time is equal between start and end date
44
+ let startBrussels = utility_1.Formatter.luxon(this.startDate);
45
+ let endBrussels = utility_1.Formatter.luxon(this.endDate);
46
+ startBrussels = startBrussels.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });
47
+ endBrussels = endBrussels.set({ hour: 23, minute: 59, second: 59, millisecond: 0 });
48
+ this.startDate = startBrussels.toJSDate();
49
+ this.endDate = endBrussels.toJSDate();
50
+ this.expireDate = null;
51
+ const days = Math.round((this.endDate.getTime() - this.startDate.getTime()) / (1000 * 60 * 60 * 24));
52
+ this.price = priceConfig.pricePerDay * days + priceConfig.price;
53
+ }
54
+ else {
55
+ this.price = priceConfig.price;
56
+ this.startDate = periodConfig.startDate;
57
+ this.endDate = periodConfig.endDate;
58
+ this.expireDate = periodConfig.expireDate;
59
+ }
60
+ }
61
+ }
62
+ exports.MemberPlatformMembership = MemberPlatformMembership;
63
+ MemberPlatformMembership.table = "member_platform_memberships";
64
+ tslib_1.__decorate([
65
+ (0, simple_database_1.column)({
66
+ primary: true, type: "string", beforeSave(value) {
67
+ return value !== null && value !== void 0 ? value : (0, uuid_1.v4)();
68
+ }
69
+ })
70
+ ], MemberPlatformMembership.prototype, "id", void 0);
71
+ tslib_1.__decorate([
72
+ (0, simple_database_1.column)({ type: "string" })
73
+ ], MemberPlatformMembership.prototype, "memberId", void 0);
74
+ tslib_1.__decorate([
75
+ (0, simple_database_1.column)({ type: "string" })
76
+ ], MemberPlatformMembership.prototype, "membershipTypeId", void 0);
77
+ tslib_1.__decorate([
78
+ (0, simple_database_1.column)({ type: "string" })
79
+ ], MemberPlatformMembership.prototype, "organizationId", void 0);
80
+ tslib_1.__decorate([
81
+ (0, simple_database_1.column)({ type: "string" })
82
+ ], MemberPlatformMembership.prototype, "periodId", void 0);
83
+ tslib_1.__decorate([
84
+ (0, simple_database_1.column)({ type: "date" })
85
+ ], MemberPlatformMembership.prototype, "startDate", void 0);
86
+ tslib_1.__decorate([
87
+ (0, simple_database_1.column)({ type: "date" })
88
+ ], MemberPlatformMembership.prototype, "endDate", void 0);
89
+ tslib_1.__decorate([
90
+ (0, simple_database_1.column)({ type: "date", nullable: true })
91
+ ], MemberPlatformMembership.prototype, "expireDate", void 0);
92
+ tslib_1.__decorate([
93
+ (0, simple_database_1.column)({ type: "string", nullable: true })
94
+ ], MemberPlatformMembership.prototype, "invoiceItemDetailId", void 0);
95
+ tslib_1.__decorate([
96
+ (0, simple_database_1.column)({ type: "string", nullable: true })
97
+ ], MemberPlatformMembership.prototype, "invoiceId", void 0);
98
+ tslib_1.__decorate([
99
+ (0, simple_database_1.column)({ type: "integer" })
100
+ ], MemberPlatformMembership.prototype, "price", void 0);
101
+ tslib_1.__decorate([
102
+ (0, simple_database_1.column)({
103
+ type: "datetime", beforeSave(old) {
104
+ if (old !== undefined) {
105
+ return old;
106
+ }
107
+ const date = new Date();
108
+ date.setMilliseconds(0);
109
+ return date;
110
+ }
111
+ })
112
+ ], MemberPlatformMembership.prototype, "createdAt", void 0);
113
+ tslib_1.__decorate([
114
+ (0, simple_database_1.column)({
115
+ type: "datetime", beforeSave() {
116
+ const date = new Date();
117
+ date.setMilliseconds(0);
118
+ return date;
119
+ },
120
+ skipUpdate: true
121
+ })
122
+ ], MemberPlatformMembership.prototype, "updatedAt", void 0);
123
+ //# sourceMappingURL=MemberPlatformMembership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemberPlatformMembership.js","sourceRoot":"","sources":["../../../src/models/MemberPlatformMembership.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Model } from "@simonbackx/simple-database";
2
2
  import { DecodedRequest } from '@simonbackx/simple-endpoints';
3
3
  import { I18n } from "@stamhoofd/backend-i18n";
4
4
  import { EmailInterfaceRecipient } from "@stamhoofd/email";
5
- import { Address, EmailTemplateType, Organization as OrganizationStruct, OrganizationMetaData, OrganizationPrivateMetaData, PaymentMethod, PaymentProvider, PrivatePaymentConfiguration, Recipient, TransferSettings } from "@stamhoofd/structures";
5
+ import { Address, EmailTemplateType, OrganizationMetaData, OrganizationPrivateMetaData, Organization as OrganizationStruct, PaymentMethod, PaymentProvider, PrivatePaymentConfiguration, Recipient, TransferSettings } from "@stamhoofd/structures";
6
6
  import { OrganizationServerMetaData } from '../structures/OrganizationServerMetaData';
7
7
  import { Group, StripeAccount } from "./";
8
8
  export declare class Organization extends Model {
@@ -12,6 +12,7 @@ export declare class Organization extends Model {
12
12
  website: string | null;
13
13
  registerDomain: string | null;
14
14
  uri: string;
15
+ periodId: string;
15
16
  /**
16
17
  * Public meta data
17
18
  */
@@ -28,6 +29,7 @@ export declare class Organization extends Model {
28
29
  searchIndex: string;
29
30
  createdAt: Date;
30
31
  updatedAt: Date;
32
+ active: boolean;
31
33
  /**
32
34
  * Return default locale confiruation
33
35
  */
@@ -50,16 +52,16 @@ export declare class Organization extends Model {
50
52
  * Format is 2331c59a-0cbe-4279-871c-ea9d0474cd54.api.stamhoofd.app
51
53
  */
52
54
  static fromApiHost(host: string): Promise<Organization>;
53
- getHost(): string;
54
- getDefaultHost(): string;
55
+ /**
56
+ * Potentially includes a path
57
+ */
58
+ getHost(i18n?: I18n): string;
59
+ getDefaultHost(i18n?: I18n): string;
55
60
  get marketingDomain(): string;
56
61
  getApiHost(): string;
57
62
  getStructure({ emptyGroups }?: {
58
63
  emptyGroups: boolean;
59
64
  }): Promise<OrganizationStruct>;
60
- cleanCategories(groups: {
61
- id: string;
62
- }[]): Promise<void>;
63
65
  updateDNSRecords(): Promise<void>;
64
66
  sendEmailTemplate(data: {
65
67
  type: EmailTemplateType;
@@ -1 +1 @@
1
- {"version":3,"file":"Organization.d.ts","sourceRoot":"","sources":["../../../src/models/Organization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Organization.d.ts","sourceRoot":"","sources":["../../../src/models/Organization.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ const simple_errors_1 = require("@simonbackx/simple-errors");
7
7
  const backend_i18n_1 = require("@stamhoofd/backend-i18n");
8
8
  const email_1 = require("@stamhoofd/email");
9
9
  const structures_1 = require("@stamhoofd/structures");
10
- const utility_1 = require("@stamhoofd/utility");
11
10
  const sesv2_1 = tslib_1.__importDefault(require("aws-sdk/clients/sesv2"));
12
11
  const uuid_1 = require("uuid");
13
12
  const DNSValidator_1 = require("../helpers/DNSValidator");
@@ -30,6 +29,7 @@ class Organization extends simple_database_1.Model {
30
29
  * Data only accessible by the server
31
30
  */
32
31
  this.serverMeta = OrganizationServerMetaData_1.OrganizationServerMetaData.create({});
32
+ this.active = true;
33
33
  }
34
34
  /**
35
35
  * Return default locale confiruation
@@ -124,15 +124,28 @@ class Organization extends simple_database_1.Model {
124
124
  }
125
125
  return organization;
126
126
  }
127
- getHost() {
127
+ /**
128
+ * Potentially includes a path
129
+ */
130
+ getHost(i18n) {
128
131
  if (this.registerDomain) {
129
- return this.registerDomain;
132
+ let d = this.registerDomain;
133
+ if (i18n && i18n.language != this.i18n.language) {
134
+ d += "/" + i18n.language;
135
+ }
136
+ return d;
130
137
  }
131
- return this.getDefaultHost();
138
+ return this.getDefaultHost(i18n);
132
139
  }
133
- getDefaultHost() {
134
- var _a;
135
- const defaultDomain = (_a = STAMHOOFD.domains.registration[this.address.country]) !== null && _a !== void 0 ? _a : STAMHOOFD.domains.registration[""];
140
+ getDefaultHost(i18n) {
141
+ var _a, _b;
142
+ if (!STAMHOOFD.domains.registration) {
143
+ return STAMHOOFD.domains.dashboard + '/' + ((_a = i18n === null || i18n === void 0 ? void 0 : i18n.locale) !== null && _a !== void 0 ? _a : this.i18n.locale) + '/leden/' + this.uri;
144
+ }
145
+ let defaultDomain = (_b = STAMHOOFD.domains.registration[this.address.country]) !== null && _b !== void 0 ? _b : STAMHOOFD.domains.registration[""];
146
+ if (i18n && i18n.language != this.i18n.language) {
147
+ defaultDomain += "/" + i18n.language;
148
+ }
136
149
  return this.uri + "." + defaultDomain;
137
150
  }
138
151
  get marketingDomain() {
@@ -148,7 +161,10 @@ class Organization extends simple_database_1.Model {
148
161
  }
149
162
  async getStructure({ emptyGroups } = { emptyGroups: false }) {
150
163
  var _a, _b;
151
- const groups = emptyGroups ? [] : (await (await Promise.resolve().then(() => tslib_1.__importStar(require("./Group")))).Group.getAll(this.id));
164
+ const oPeriods = await _1.OrganizationRegistrationPeriod.where({ periodId: this.periodId }, { limit: 1 });
165
+ const oPeriod = oPeriods[0];
166
+ const period = await _1.RegistrationPeriod.getByID(this.periodId);
167
+ const groups = emptyGroups ? [] : (await (await Promise.resolve().then(() => tslib_1.__importStar(require("./Group")))).Group.getAll(this.id, this.periodId));
152
168
  const struct = structures_1.Organization.create({
153
169
  id: this.id,
154
170
  name: this.name,
@@ -157,7 +173,12 @@ class Organization extends simple_database_1.Model {
157
173
  registerDomain: this.registerDomain,
158
174
  uri: this.uri,
159
175
  website: this.website,
160
- groups: groups.map(g => g.getStructure())
176
+ groups: groups.map(g => g.getStructure()),
177
+ createdAt: this.createdAt,
178
+ period: structures_1.OrganizationRegistrationPeriod.create({
179
+ ...oPeriod,
180
+ period: period.getStructure()
181
+ })
161
182
  });
162
183
  if (this.meta.modules.disableActivities) {
163
184
  // Only show groups that are in a given category
@@ -171,54 +192,6 @@ class Organization extends simple_database_1.Model {
171
192
  }
172
193
  return struct;
173
194
  }
174
- async cleanCategories(groups) {
175
- const reachable = new Map();
176
- const queue = [this.meta.rootCategoryId];
177
- reachable.set(this.meta.rootCategoryId, true);
178
- let shouldSave = false;
179
- const usedGroupIds = new Set();
180
- while (queue.length > 0) {
181
- const id = queue.shift();
182
- if (!id) {
183
- break;
184
- }
185
- const category = this.meta.categories.find(c => c.id === id);
186
- if (!category) {
187
- continue;
188
- }
189
- for (const i of category.categoryIds) {
190
- if (!reachable.get(i)) {
191
- reachable.set(i, true);
192
- queue.push(i);
193
- }
194
- }
195
- // Remove groupIds that no longer exist or are in a different category already
196
- let filtered = category.groupIds.filter(id => !!groups.find(g => g.id === id) && !usedGroupIds.has(id));
197
- // Remove duplicate groups
198
- filtered = utility_1.Formatter.uniqueArray(filtered);
199
- if (filtered.length !== category.groupIds.length) {
200
- shouldSave = true;
201
- console.log("Deleted " + (category.groupIds.length - filtered.length) + " group ids from category " + category.id + ", in organization " + this.id);
202
- category.groupIds = filtered;
203
- }
204
- for (const groupId of category.groupIds) {
205
- usedGroupIds.add(groupId);
206
- }
207
- }
208
- const reachableCategoryIds = [...reachable.keys()];
209
- // Delete all categories that are not reachable anymore
210
- const beforeCount = this.meta.categories.length;
211
- this.meta.categories = this.meta.categories.filter(c => reachableCategoryIds.includes(c.id));
212
- if (this.meta.categories.length !== beforeCount) {
213
- console.log("Deleted " + (beforeCount - this.meta.categories.length) + " categories from organization " + this.id);
214
- await this.save();
215
- }
216
- else {
217
- if (shouldSave) {
218
- await this.save();
219
- }
220
- }
221
- }
222
195
  async updateDNSRecords() {
223
196
  var _a, _b, _c, _d;
224
197
  const organization = this;
@@ -643,7 +616,7 @@ class Organization extends simple_database_1.Model {
643
616
  const User = (await Promise.resolve().then(() => tslib_1.__importStar(require('./User')))).User;
644
617
  const admins = await User.getAdmins([this.id], { verified: true });
645
618
  // Only full access
646
- return admins.filter(a => a.permissions && a.permissions.hasFullAccess(this.privateMeta.roles));
619
+ return admins.filter(a => { var _a; return a.permissions && ((_a = a.permissions.forOrganization(this)) === null || _a === void 0 ? void 0 : _a.hasFullAccess()); });
647
620
  }
648
621
  /**
649
622
  * These email addresess are private
@@ -706,7 +679,7 @@ class Organization extends simple_database_1.Model {
706
679
  // Circular reference fix
707
680
  const User = (await Promise.resolve().then(() => tslib_1.__importStar(require('./User')))).User;
708
681
  const admins = await User.where({ organizationId: this.id, permissions: { sign: "!=", value: null } });
709
- const filtered = admins.filter(a => a.permissions && (a.permissions.hasFullAccess(this.privateMeta.roles) || a.permissions.hasFinanceAccess(this.privateMeta.roles)));
682
+ const filtered = admins.filter(a => a.organizationPermissions && (a.organizationPermissions.hasFullAccess(this.privateMeta.roles) || a.organizationPermissions.hasFinanceAccess(this.privateMeta.roles)));
710
683
  if (filtered.length > 0) {
711
684
  return filtered.map(f => f.getEmailTo()).join(", ");
712
685
  }
@@ -856,6 +829,9 @@ tslib_1.__decorate([
856
829
  tslib_1.__decorate([
857
830
  (0, simple_database_1.column)({ type: "string" })
858
831
  ], Organization.prototype, "uri", void 0);
832
+ tslib_1.__decorate([
833
+ (0, simple_database_1.column)({ type: "string" })
834
+ ], Organization.prototype, "periodId", void 0);
859
835
  tslib_1.__decorate([
860
836
  (0, simple_database_1.column)({ type: "json", decoder: structures_1.OrganizationMetaData })
861
837
  ], Organization.prototype, "meta", void 0);
@@ -897,4 +873,7 @@ tslib_1.__decorate([
897
873
  skipUpdate: true
898
874
  })
899
875
  ], Organization.prototype, "updatedAt", void 0);
876
+ tslib_1.__decorate([
877
+ (0, simple_database_1.column)({ type: 'boolean' })
878
+ ], Organization.prototype, "active", void 0);
900
879
  //# sourceMappingURL=Organization.js.map