@stamhoofd/models 2.1.1 → 2.1.3
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/LICENSE +661 -0
- package/dist/src/factories/GroupFactory.d.ts.map +1 -1
- package/dist/src/factories/GroupFactory.js +1 -0
- package/dist/src/factories/GroupFactory.js.map +1 -1
- package/dist/src/factories/MemberFactory.d.ts.map +1 -1
- package/dist/src/factories/MemberFactory.js +0 -2
- package/dist/src/factories/MemberFactory.js.map +1 -1
- package/dist/src/factories/RegistrationFactory.d.ts.map +1 -1
- package/dist/src/factories/RegistrationFactory.js +2 -0
- package/dist/src/factories/RegistrationFactory.js.map +1 -1
- package/dist/src/factories/UserFactory.d.ts +1 -0
- package/dist/src/factories/UserFactory.d.ts.map +1 -1
- package/dist/src/factories/UserFactory.js +14 -4
- package/dist/src/factories/UserFactory.js.map +1 -1
- package/dist/src/helpers/GroupBuilder.d.ts.map +1 -1
- package/dist/src/helpers/GroupBuilder.js +25 -2
- package/dist/src/helpers/GroupBuilder.js.map +1 -1
- package/dist/src/migrations/1605262046-import-postcodes-nl.js +1 -1
- package/dist/src/migrations/1605262046-import-postcodes-nl.js.map +1 -1
- package/dist/src/migrations/1714985451-user-nullable-organization-id.sql +2 -0
- package/dist/src/migrations/1714985452-email-verification-code-nullable-organization-id.sql +2 -0
- package/dist/src/migrations/1714985453-user-organization-permissions.sql +2 -0
- package/dist/src/migrations/1714985454-user-organization-permissions.sql +2 -0
- package/dist/src/migrations/1715079362-platform.sql +6 -0
- package/dist/src/migrations/1715181649-registrations-organization-id.sql +2 -0
- package/dist/src/migrations/1715181650-registrations-organization-id-fill.sql +1 -0
- package/dist/src/migrations/1715181651-registrations-organization-id-drop-null.sql +2 -0
- package/dist/src/migrations/1716117067-members-nullable-organization-id.sql +2 -0
- package/dist/src/migrations/1719567581-registration-periods.sql +13 -0
- package/dist/src/migrations/1719567582-organization-registration-periods.sql +13 -0
- package/dist/src/migrations/1719567881-organization-periodId.sql +2 -0
- package/dist/src/migrations/1719567882-groups-periodId.sql +2 -0
- package/dist/src/migrations/1719567883-platform-periodId.sql +2 -0
- package/dist/src/migrations/1719568079-default-period.sql +2 -0
- package/dist/src/migrations/1719568080-set-default-period-platform.sql +1 -0
- package/dist/src/migrations/1719568081-set-default-period-organizations.sql +1 -0
- package/dist/src/migrations/1719568082-set-default-period-groups.sql +1 -0
- package/dist/src/migrations/1719580828-registrations-periodId.sql +2 -0
- package/dist/src/migrations/1719580829-set-default-period-registrations.sql +1 -0
- package/dist/src/migrations/1719931362-groups-default-age-group-id.sql +2 -0
- package/dist/src/models/BalanceItem.d.ts +1 -1
- package/dist/src/models/BalanceItem.d.ts.map +1 -1
- package/dist/src/models/BalanceItem.js +15 -5
- package/dist/src/models/BalanceItem.js.map +1 -1
- package/dist/src/models/Document.d.ts.map +1 -1
- package/dist/src/models/Document.js +6 -2
- package/dist/src/models/Document.js.map +1 -1
- package/dist/src/models/DocumentTemplate.d.ts +3 -3
- package/dist/src/models/DocumentTemplate.d.ts.map +1 -1
- package/dist/src/models/DocumentTemplate.js +23 -24
- package/dist/src/models/DocumentTemplate.js.map +1 -1
- package/dist/src/models/EmailVerificationCode.d.ts +6 -7
- package/dist/src/models/EmailVerificationCode.d.ts.map +1 -1
- package/dist/src/models/EmailVerificationCode.js +37 -30
- package/dist/src/models/EmailVerificationCode.js.map +1 -1
- package/dist/src/models/Group.d.ts +6 -4
- package/dist/src/models/Group.d.ts.map +1 -1
- package/dist/src/models/Group.js +28 -9
- package/dist/src/models/Group.js.map +1 -1
- package/dist/src/models/Member.d.ts +9 -9
- package/dist/src/models/Member.d.ts.map +1 -1
- package/dist/src/models/Member.js +28 -15
- package/dist/src/models/Member.js.map +1 -1
- package/dist/src/models/Organization.d.ts +6 -5
- package/dist/src/models/Organization.d.ts.map +1 -1
- package/dist/src/models/Organization.js +34 -59
- package/dist/src/models/Organization.js.map +1 -1
- package/dist/src/models/OrganizationRegistrationPeriod.d.ts +3 -0
- package/dist/src/models/OrganizationRegistrationPeriod.d.ts.map +1 -1
- package/dist/src/models/OrganizationRegistrationPeriod.js +49 -0
- package/dist/src/models/OrganizationRegistrationPeriod.js.map +1 -1
- package/dist/src/models/PasswordToken.d.ts +1 -1
- package/dist/src/models/PasswordToken.d.ts.map +1 -1
- package/dist/src/models/PasswordToken.js +9 -10
- package/dist/src/models/PasswordToken.js.map +1 -1
- package/dist/src/models/Payment.d.ts +5 -3
- package/dist/src/models/Payment.d.ts.map +1 -1
- package/dist/src/models/Payment.js +13 -5
- package/dist/src/models/Payment.js.map +1 -1
- package/dist/src/models/Platform.d.ts +1 -0
- package/dist/src/models/Platform.d.ts.map +1 -1
- package/dist/src/models/Platform.js +3 -0
- package/dist/src/models/Platform.js.map +1 -1
- package/dist/src/models/Registration.d.ts +7 -2
- package/dist/src/models/Registration.d.ts.map +1 -1
- package/dist/src/models/Registration.js +7 -0
- package/dist/src/models/Registration.js.map +1 -1
- package/dist/src/models/Token.d.ts.map +1 -1
- package/dist/src/models/Token.js +1 -0
- package/dist/src/models/Token.js.map +1 -1
- package/dist/src/models/User.d.ts +20 -11
- package/dist/src/models/User.d.ts.map +1 -1
- package/dist/src/models/User.js +84 -26
- package/dist/src/models/User.js.map +1 -1
- package/dist/src/models/index.d.ts +4 -0
- package/dist/src/models/index.d.ts.map +1 -1
- package/dist/src/models/index.js +4 -0
- package/dist/src/models/index.js.map +1 -1
- package/package.json +3 -2
- package/src/migrations/1719931362-groups-default-age-group-id.sql +2 -0
- package/src/models/Group.ts +3 -0
- package/src/models/Organization.ts +0 -59
- package/src/models/OrganizationRegistrationPeriod.ts +60 -0
- package/src/models/Payment.ts +4 -4
- package/src/models/Platform.ts +4 -0
|
@@ -34,4 +34,8 @@ export * from "./StripeCheckoutSession";
|
|
|
34
34
|
export * from "./Document";
|
|
35
35
|
export * from "./DocumentTemplate";
|
|
36
36
|
export * from "./WebshopDiscountCode";
|
|
37
|
+
export * from "./Platform";
|
|
38
|
+
export * from "./MemberResponsibilityRecord";
|
|
39
|
+
export * from "./OrganizationRegistrationPeriod";
|
|
40
|
+
export * from "./RegistrationPeriod";
|
|
37
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,MAAM,EAAE,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAA;AAEhF,cAAc,yBAAyB,CAAA;AAEvC,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAC5C,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAE7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAElC,cAAc,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,MAAM,EAAE,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,UAAU,CAAA;AAEhF,cAAc,yBAAyB,CAAA;AAEvC,cAAc,SAAS,CAAA;AACvB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAC5C,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AACzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAE7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAElC,cAAc,uBAAuB,CAAA;AAErC,cAAc,YAAY,CAAA;AAC1B,cAAc,8BAA8B,CAAA;AAE5C,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA"}
|
package/dist/src/models/index.js
CHANGED
|
@@ -50,4 +50,8 @@ tslib_1.__exportStar(require("./StripeCheckoutSession"), exports);
|
|
|
50
50
|
tslib_1.__exportStar(require("./Document"), exports);
|
|
51
51
|
tslib_1.__exportStar(require("./DocumentTemplate"), exports);
|
|
52
52
|
tslib_1.__exportStar(require("./WebshopDiscountCode"), exports);
|
|
53
|
+
tslib_1.__exportStar(require("./Platform"), exports);
|
|
54
|
+
tslib_1.__exportStar(require("./MemberResponsibilityRecord"), exports);
|
|
55
|
+
tslib_1.__exportStar(require("./OrganizationRegistrationPeriod"), exports);
|
|
56
|
+
tslib_1.__exportStar(require("./RegistrationPeriod"), exports);
|
|
53
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;;;AAAA,+CAA+C;AAC/C,+CAA2C;AAAnC,4GAAA,YAAY,OAAA;AACpB,+BAA2B;AAAnB,4FAAA,IAAI,OAAA;AACZ,qCAAiC;AAAzB,kGAAA,OAAO,OAAA;AACf,+CAA2C;AAAnC,4GAAA,YAAY,OAAA;AACpB,mCAAgF;AAAxE,gGAAA,MAAM,OAAA;AAEd,kEAAuC;AAEvC,kDAAuB;AACvB,0DAA+B;AAC/B,wDAA6B;AAC7B,iCAA6B;AAArB,8FAAA,KAAK,OAAA;AACb,0DAA+B;AAC/B,4DAAiC;AACjC,yDAA8B;AAC9B,sDAA2B;AAC3B,sDAA2B;AAC3B,uDAAmD;AAA3C,oHAAA,gBAAgB,OAAA;AACxB,iCAA4C;AAApC,8FAAA,KAAK,OAAA;AACb,oDAAyB;AACzB,qDAA0B;AAC1B,6DAAkC;AAClC,mDAAwB;AACxB,0DAA+B;AAC/B,4DAAiC;AACjC,6CAAyC;AAAjC,0GAAA,WAAW,OAAA;AACnB,2DAAuD;AAA/C,wHAAA,kBAAkB,OAAA;AAC1B,iCAA6B;AAArB,8FAAA,KAAK,OAAA;AAEb,6DAAkC;AAClC,2DAAgC;AAChC,iEAAsC;AACtC,+DAAoC;AAEpC,0DAA+B;AAC/B,gEAAqC;AACrC,kEAAuC;AAEvC,qDAA0B;AAC1B,6DAAkC;AAElC,gEAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/index.ts"],"names":[],"mappings":";;;;AAAA,+CAA+C;AAC/C,+CAA2C;AAAnC,4GAAA,YAAY,OAAA;AACpB,+BAA2B;AAAnB,4FAAA,IAAI,OAAA;AACZ,qCAAiC;AAAzB,kGAAA,OAAO,OAAA;AACf,+CAA2C;AAAnC,4GAAA,YAAY,OAAA;AACpB,mCAAgF;AAAxE,gGAAA,MAAM,OAAA;AAEd,kEAAuC;AAEvC,kDAAuB;AACvB,0DAA+B;AAC/B,wDAA6B;AAC7B,iCAA6B;AAArB,8FAAA,KAAK,OAAA;AACb,0DAA+B;AAC/B,4DAAiC;AACjC,yDAA8B;AAC9B,sDAA2B;AAC3B,sDAA2B;AAC3B,uDAAmD;AAA3C,oHAAA,gBAAgB,OAAA;AACxB,iCAA4C;AAApC,8FAAA,KAAK,OAAA;AACb,oDAAyB;AACzB,qDAA0B;AAC1B,6DAAkC;AAClC,mDAAwB;AACxB,0DAA+B;AAC/B,4DAAiC;AACjC,6CAAyC;AAAjC,0GAAA,WAAW,OAAA;AACnB,2DAAuD;AAA/C,wHAAA,kBAAkB,OAAA;AAC1B,iCAA6B;AAArB,8FAAA,KAAK,OAAA;AAEb,6DAAkC;AAClC,2DAAgC;AAChC,iEAAsC;AACtC,+DAAoC;AAEpC,0DAA+B;AAC/B,gEAAqC;AACrC,kEAAuC;AAEvC,qDAA0B;AAC1B,6DAAkC;AAElC,gEAAqC;AAErC,qDAA0B;AAC1B,uEAA4C;AAE5C,2EAAgD;AAChD,+DAAoC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/models",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3",
|
|
4
4
|
"main": "./dist/src/index.js",
|
|
5
5
|
"types": "./dist/src/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -26,5 +26,6 @@
|
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@simonbackx/simple-database": "1.24.0"
|
|
29
|
-
}
|
|
29
|
+
},
|
|
30
|
+
"gitHead": "b5773c547dceaae52b9c2a098b222417fcd42e4f"
|
|
30
31
|
}
|
package/src/models/Group.ts
CHANGED
|
@@ -42,6 +42,9 @@ export class Group extends Model {
|
|
|
42
42
|
@column({ type: "string" })
|
|
43
43
|
periodId: string;
|
|
44
44
|
|
|
45
|
+
@column({ type: "string", nullable: true })
|
|
46
|
+
defaultAgeGroupId: string | null = null
|
|
47
|
+
|
|
45
48
|
/**
|
|
46
49
|
* Every time a new registration period starts, this number increases. This is used to mark all older registrations as 'out of date' automatically
|
|
47
50
|
*/
|
|
@@ -299,65 +299,6 @@ export class Organization extends Model {
|
|
|
299
299
|
return struct
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
-
async cleanCategories(groups: {id: string}[]) {
|
|
303
|
-
const reachable = new Map<string, boolean>()
|
|
304
|
-
const queue = [this.meta.rootCategoryId]
|
|
305
|
-
reachable.set(this.meta.rootCategoryId, true)
|
|
306
|
-
let shouldSave = false;
|
|
307
|
-
|
|
308
|
-
const usedGroupIds = new Set<string>()
|
|
309
|
-
|
|
310
|
-
while (queue.length > 0) {
|
|
311
|
-
const id = queue.shift()
|
|
312
|
-
if (!id) {
|
|
313
|
-
break
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const category = this.meta.categories.find(c => c.id === id)
|
|
317
|
-
if (!category) {
|
|
318
|
-
continue
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
for (const i of category.categoryIds) {
|
|
322
|
-
if (!reachable.get(i)) {
|
|
323
|
-
reachable.set(i, true)
|
|
324
|
-
queue.push(i)
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
// Remove groupIds that no longer exist or are in a different category already
|
|
329
|
-
let filtered = category.groupIds.filter(id => !!groups.find(g => g.id === id) && !usedGroupIds.has(id))
|
|
330
|
-
|
|
331
|
-
// Remove duplicate groups
|
|
332
|
-
filtered = Formatter.uniqueArray(filtered)
|
|
333
|
-
|
|
334
|
-
if (filtered.length !== category.groupIds.length) {
|
|
335
|
-
shouldSave = true;
|
|
336
|
-
console.log("Deleted "+ (category.groupIds.length - filtered.length) +" group ids from category " + category.id + ", in organization "+this.id)
|
|
337
|
-
category.groupIds = filtered
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
for (const groupId of category.groupIds) {
|
|
341
|
-
usedGroupIds.add(groupId)
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
const reachableCategoryIds = [...reachable.keys()]
|
|
346
|
-
|
|
347
|
-
// Delete all categories that are not reachable anymore
|
|
348
|
-
const beforeCount = this.meta.categories.length;
|
|
349
|
-
this.meta.categories = this.meta.categories.filter(c => reachableCategoryIds.includes(c.id))
|
|
350
|
-
|
|
351
|
-
if (this.meta.categories.length !== beforeCount) {
|
|
352
|
-
console.log("Deleted "+ (beforeCount - this.meta.categories.length) +" categories from organization "+this.id)
|
|
353
|
-
await this.save()
|
|
354
|
-
} else {
|
|
355
|
-
if (shouldSave) {
|
|
356
|
-
await this.save()
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
|
|
361
302
|
async updateDNSRecords() {
|
|
362
303
|
const organization = this;
|
|
363
304
|
|
|
@@ -2,6 +2,7 @@ import { column, Model } from '@simonbackx/simple-database';
|
|
|
2
2
|
import { Group as GroupStruct, OrganizationRegistrationPeriodSettings, OrganizationRegistrationPeriod as OrganizationRegistrationPeriodStruct } from '@stamhoofd/structures';
|
|
3
3
|
import { v4 as uuidv4 } from "uuid";
|
|
4
4
|
import { Group, RegistrationPeriod } from '.';
|
|
5
|
+
import { Formatter } from '@stamhoofd/utility';
|
|
5
6
|
|
|
6
7
|
export class OrganizationRegistrationPeriod extends Model {
|
|
7
8
|
static table = "organization_registration_periods";
|
|
@@ -51,4 +52,63 @@ export class OrganizationRegistrationPeriod extends Model {
|
|
|
51
52
|
groups: groups.map(g => g.getStructure()).sort(GroupStruct.defaultSort)
|
|
52
53
|
})
|
|
53
54
|
}
|
|
55
|
+
|
|
56
|
+
async cleanCategories(groups: {id: string}[]) {
|
|
57
|
+
const reachable = new Map<string, boolean>()
|
|
58
|
+
const queue = [this.settings.rootCategoryId]
|
|
59
|
+
reachable.set(this.settings.rootCategoryId, true)
|
|
60
|
+
let shouldSave = false;
|
|
61
|
+
|
|
62
|
+
const usedGroupIds = new Set<string>()
|
|
63
|
+
|
|
64
|
+
while (queue.length > 0) {
|
|
65
|
+
const id = queue.shift()
|
|
66
|
+
if (!id) {
|
|
67
|
+
break
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const category = this.settings.categories.find(c => c.id === id)
|
|
71
|
+
if (!category) {
|
|
72
|
+
continue
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
for (const i of category.categoryIds) {
|
|
76
|
+
if (!reachable.get(i)) {
|
|
77
|
+
reachable.set(i, true)
|
|
78
|
+
queue.push(i)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Remove groupIds that no longer exist or are in a different category already
|
|
83
|
+
let filtered = category.groupIds.filter(id => !!groups.find(g => g.id === id) && !usedGroupIds.has(id))
|
|
84
|
+
|
|
85
|
+
// Remove duplicate groups
|
|
86
|
+
filtered = Formatter.uniqueArray(filtered)
|
|
87
|
+
|
|
88
|
+
if (filtered.length !== category.groupIds.length) {
|
|
89
|
+
shouldSave = true;
|
|
90
|
+
console.log("Deleted "+ (category.groupIds.length - filtered.length) +" group ids from category " + category.id + ", in organization period "+this.id)
|
|
91
|
+
category.groupIds = filtered
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
for (const groupId of category.groupIds) {
|
|
95
|
+
usedGroupIds.add(groupId)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const reachableCategoryIds = [...reachable.keys()]
|
|
100
|
+
|
|
101
|
+
// Delete all categories that are not reachable anymore
|
|
102
|
+
const beforeCount = this.settings.categories.length;
|
|
103
|
+
this.settings.categories = this.settings.categories.filter(c => reachableCategoryIds.includes(c.id))
|
|
104
|
+
|
|
105
|
+
if (this.settings.categories.length !== beforeCount) {
|
|
106
|
+
console.log("Deleted "+ (beforeCount - this.settings.categories.length) +" categories from organizaton period "+this.id)
|
|
107
|
+
await this.save()
|
|
108
|
+
} else {
|
|
109
|
+
if (shouldSave) {
|
|
110
|
+
await this.save()
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
54
114
|
}
|
package/src/models/Payment.ts
CHANGED
|
@@ -144,17 +144,17 @@ export class Payment extends Model {
|
|
|
144
144
|
const registration = balanceItem?.registrationId && registrations.find(r => r.id === balanceItem.registrationId)
|
|
145
145
|
const member = balanceItem?.memberId ? members.find(r => r.id === balanceItem.memberId) : undefined
|
|
146
146
|
const order = balanceItem?.orderId && orders.find(r => r.id === balanceItem.orderId)
|
|
147
|
-
const group = registration
|
|
147
|
+
const group = registration ? groups.find(g => g.id === registration.groupId) : null
|
|
148
148
|
|
|
149
|
-
if (!group) {
|
|
150
|
-
throw new Error("Group not found")
|
|
149
|
+
if (registration && !group) {
|
|
150
|
+
throw new Error("Group "+registration.groupId+" not found")
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
return BalanceItemPaymentDetailed.create({
|
|
154
154
|
...item,
|
|
155
155
|
balanceItem: BalanceItemDetailed.create({
|
|
156
156
|
...balanceItem,
|
|
157
|
-
registration: registration ? registration.setRelation(Registration.group, group).getStructure() : null,
|
|
157
|
+
registration: registration ? registration.setRelation(Registration.group, group!).getStructure() : null,
|
|
158
158
|
member: member ? MemberStruct.create(member) : null,
|
|
159
159
|
order: order ? OrderStruct.create({...order, payment: null}) : null
|
|
160
160
|
})
|