@universis/accommodation 1.1.0 → 1.1.2

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 (60) hide show
  1. package/dist/config/models/AccommodationChildFinancialAttribute.json +5 -0
  2. package/dist/config/models/AccommodationGuardianFinancialAttribute.json +5 -0
  3. package/dist/config/models/AccommodationInscriptionModeTag.json +2 -2
  4. package/dist/config/models/{Accommodation.json → AccommodationPlace.json} +25 -13
  5. package/dist/config/models/{AccommodationLocale.json → AccommodationPlaceLocale.json} +8 -3
  6. package/dist/config/models/AccommodationRequestAction.json +10 -0
  7. package/dist/config/models/AccommodationRequestActionMessage.json +5 -0
  8. package/dist/config/models/AccommodationRequestActionReview.json +5 -0
  9. package/dist/config/models/AccommodationRequestAttachmentConfiguration.json +5 -0
  10. package/dist/config/models/AccommodationRequestCategory.json +19 -14
  11. package/dist/config/models/AccommodationRequestEffectiveStatusType.json +3 -3
  12. package/dist/config/models/AccommodationRequestEvent.json +19 -14
  13. package/dist/config/models/AccommodationRequestFinancialAttribute.json +5 -0
  14. package/dist/config/models/AccommodationRoom.json +7 -2
  15. package/dist/config/models/AccommodationRoomLocale.json +5 -0
  16. package/dist/config/models/AccommodationSiblingFinancialAttribute.json +1 -7
  17. package/dist/config/models/CancelAccommodationCardAction.json +10 -4
  18. package/dist/config/models/GuardianType.json +5 -0
  19. package/dist/config/models/Review.json +5 -0
  20. package/dist/config/models/RoomType.json +5 -0
  21. package/dist/config/models/RoomTypeLocale.json +19 -14
  22. package/dist/config/models/StudentAccommodationCard.json +5 -0
  23. package/dist/config/scope.access.js +265 -86
  24. package/dist/config/scope.access.js.map +1 -1
  25. package/dist/listeners/OnActionCompleteListener.js +2 -2
  26. package/dist/listeners/OnActionCompleteListener.js.map +1 -1
  27. package/dist/listeners/SendEmailAfterCardStatusChangeListener.js +8 -8
  28. package/dist/listeners/SendEmailAfterCardStatusChangeListener.js.map +1 -1
  29. package/dist/models/{Accommodation.js → AccommodationPlace.js} +1 -1
  30. package/dist/models/AccommodationPlace.js.map +1 -0
  31. package/package.json +1 -1
  32. package/src/config/models/AccommodationChildFinancialAttribute.json +5 -0
  33. package/src/config/models/AccommodationGuardianFinancialAttribute.json +5 -0
  34. package/src/config/models/AccommodationInscriptionModeTag.json +2 -2
  35. package/src/config/models/{Accommodation.json → AccommodationPlace.json} +25 -13
  36. package/src/config/models/{AccommodationLocale.json → AccommodationPlaceLocale.json} +8 -3
  37. package/src/config/models/AccommodationRequestAction.json +10 -0
  38. package/src/config/models/AccommodationRequestActionMessage.json +5 -0
  39. package/src/config/models/AccommodationRequestActionReview.json +5 -0
  40. package/src/config/models/AccommodationRequestAttachmentConfiguration.json +5 -0
  41. package/src/config/models/AccommodationRequestCategory.json +19 -14
  42. package/src/config/models/AccommodationRequestEffectiveStatusType.json +3 -3
  43. package/src/config/models/AccommodationRequestEvent.json +19 -14
  44. package/src/config/models/AccommodationRequestFinancialAttribute.json +5 -0
  45. package/src/config/models/AccommodationRoom.json +7 -2
  46. package/src/config/models/AccommodationRoomLocale.json +5 -0
  47. package/src/config/models/AccommodationSiblingFinancialAttribute.json +1 -7
  48. package/src/config/models/CancelAccommodationCardAction.json +10 -4
  49. package/src/config/models/GuardianType.json +5 -0
  50. package/src/config/models/Review.json +5 -0
  51. package/src/config/models/RoomType.json +5 -0
  52. package/src/config/models/RoomTypeLocale.json +19 -14
  53. package/src/config/models/StudentAccommodationCard.json +5 -0
  54. package/src/config/scope.access.js +265 -86
  55. package/src/listeners/OnActionCompleteListener.js +2 -2
  56. package/src/listeners/SendEmailAfterCardStatusChangeListener.js +8 -8
  57. package/dist/models/Accommodation.js.map +0 -1
  58. /package/dist/templates/{mail-after-dining-request-status-change → mail-after-accommodation-request-status-change}/html.ejs +0 -0
  59. /package/src/models/{Accommodation.js → AccommodationPlace.js} +0 -0
  60. /package/src/templates/{mail-after-dining-request-status-change → mail-after-accommodation-request-status-change}/html.ejs +0 -0
@@ -1,148 +1,327 @@
1
1
  export default [
2
2
  {
3
- "scope": [
4
- "registrar"
3
+ 'scope': [
4
+ 'accommodation'
5
5
  ],
6
- "resource": "/api/TestActions/?$",
7
- "access": [
8
- "read",
9
- "write"
6
+ 'resource': '/api/users/me',
7
+ 'access': [
8
+ 'read'
10
9
  ]
11
10
  },
12
11
  {
13
- "scope": [
14
- "registrar"
12
+ 'scope': [
13
+ 'accommodation'
15
14
  ],
16
- "resource": "/api/Accommodations/?$",
17
- "access": [
18
- "read",
19
- "write"
15
+ 'resource': '/api/content/private',
16
+ 'access': [
17
+ 'read'
20
18
  ]
21
19
  },
22
20
  {
23
- "scope": [
24
- "registrar"
21
+ 'scope': [
22
+ 'accommodation'
25
23
  ],
26
- "resource": "/api/AccommodationPlaces/?$",
27
- "access": [
28
- "read",
29
- "write"
24
+ 'resource': '/api/ActionStatusTypes',
25
+ 'access': [
26
+ 'read'
30
27
  ]
31
28
  },
32
29
  {
33
- "scope": [
34
- "students"
30
+ 'scope': [
31
+ 'accommodation'
35
32
  ],
36
- "resource": "/api/TestActions/?$",
37
- "access": [
38
- "read",
39
- "write"
33
+ 'resource': '/api/StudentStatuses',
34
+ 'access': [
35
+ 'read'
40
36
  ]
41
37
  },
42
38
  {
43
- "scope": [
44
- "students"
39
+ 'scope': [
40
+ 'accommodation'
45
41
  ],
46
- "resource": "/api/Accommodations/?$",
47
- "access": [
48
- "read"
42
+ 'resource': '/api/StudentCategories',
43
+ 'access': [
44
+ 'read'
49
45
  ]
50
46
  },
51
47
  {
52
- "scope": [
53
- "students"
48
+ 'scope': [
49
+ 'accommodation'
54
50
  ],
55
- "resource": "/api/AccommodationRequestActions",
56
- "access": [
57
- "read",
58
- "write"
51
+ 'resource': '/api/FamilyStatuses',
52
+ 'access': [
53
+ 'read'
59
54
  ]
60
55
  },
61
56
  {
62
- "scope": [
63
- "students"
57
+ 'scope': [
58
+ 'accommodation'
64
59
  ],
65
- "resource": "/api/AccommodationRequestEvents",
66
- "access": [
67
- "read"
60
+ 'resource': '/api/LocalDepartments',
61
+ 'access': [
62
+ 'read'
68
63
  ]
69
64
  },
70
65
  {
71
- "scope": [
72
- "students"
66
+ 'scope': [
67
+ 'accommodation'
73
68
  ],
74
- "resource": "/api/AccommodationRequestCategories",
75
- "access": [
76
- "read"
69
+ 'resource': '/api/EventStatusTypes',
70
+ 'access': [
71
+ 'read'
77
72
  ]
78
73
  },
79
74
  {
80
- "scope": [
81
- "students"
75
+ 'scope': [
76
+ 'accommodation'
82
77
  ],
83
- "resource": "/api/StudentAccommodationCards",
84
- "access": [
85
- "read"
78
+ 'resource': '/api/JsonAttachments',
79
+ 'access': [
80
+ 'read'
86
81
  ]
87
82
  },
88
83
  {
89
- "scope": [
90
- "registrar"
84
+ 'scope': [
85
+ 'registrar',
86
+ 'accommodation'
91
87
  ],
92
- "resource": "/api/AccommodationRequestActions",
93
- "access": [
94
- "read",
95
- "write"
88
+ 'resource': '/api/AccommodationInscriptionModeTags',
89
+ 'access': [
90
+ 'read',
91
+ 'write'
96
92
  ]
97
93
  },
98
94
  {
99
- "scope": [
100
- "registrar"
95
+ 'scope': [
96
+ 'accommodation'
101
97
  ],
102
- "resource": "/api/AccommodationRequestEvents",
103
- "access": [
104
- "read",
105
- "write"
98
+ 'resource': '/api/AccommodationRequestActions',
99
+ 'access': [
100
+ 'read',
101
+ 'write'
106
102
  ]
107
103
  },
108
104
  {
109
- "scope": [
110
- "registrar"
105
+ 'scope': [
106
+ 'accommodation'
111
107
  ],
112
- "resource": "/api/AccommodationRequestEffectiveStatusTypes",
113
- "access": [
114
- "read",
115
- "write"
108
+ 'resource': '/api/SpecialAccommodationRequestActions',
109
+ 'access': [
110
+ 'read',
111
+ 'write'
116
112
  ]
117
113
  },
118
114
  {
119
- "scope": [
120
- "registrar"
115
+ 'scope': [
116
+ 'accommodation'
121
117
  ],
122
- "resource": "/api/AccommodationCardEffectiveStatusTypes",
123
- "access": [
124
- "read",
125
- "write"
118
+ 'resource': '/api/AccommodationRequestActionMessages',
119
+ 'access': [
120
+ 'read',
121
+ 'write'
126
122
  ]
127
123
  },
128
124
  {
129
- "scope": [
130
- "registrar"
125
+ 'scope': [
126
+ 'accommodation'
131
127
  ],
132
- "resource": "/api/AccommodationRequestCategories",
133
- "access": [
134
- "read",
135
- "write"
128
+ 'resource': '/api/AccommodationRequestActionReviews',
129
+ 'access': [
130
+ 'read',
131
+ 'write'
136
132
  ]
137
133
  },
138
134
  {
139
- "scope": [
140
- "registrar"
135
+ 'scope': [
136
+ 'accommodation'
141
137
  ],
142
- "resource": "/api/StudentAccommodationCards/?$",
143
- "access": [
144
- "read",
145
- "write"
138
+ 'resource': '/api/AccommodationRequestAttachmentConfigurations',
139
+ 'access': [
140
+ 'read',
141
+ 'write'
142
+ ]
143
+ },
144
+ {
145
+ 'scope': [
146
+ 'registrar',
147
+ 'accommodation'
148
+ ],
149
+ 'resource': '/api/AccommodationRequestEffectiveStatusTypes',
150
+ 'access': [
151
+ 'read',
152
+ 'write'
153
+ ]
154
+ },
155
+ {
156
+ 'scope': [
157
+ 'accommodation'
158
+ ],
159
+ 'resource': '/api/AccommodationRequestEvents',
160
+ 'access': [
161
+ 'read',
162
+ 'write'
163
+ ]
164
+ },
165
+ {
166
+ 'scope': [
167
+ 'accommodation'
168
+ ],
169
+ 'resource': '/api/AcademicYears',
170
+ 'access': [
171
+ 'read'
172
+ ]
173
+ },
174
+ {
175
+ 'scope': [
176
+ 'accommodation'
177
+ ],
178
+ 'resource': '/api/AcademicPeriods',
179
+ 'access': [
180
+ 'read'
181
+ ]
182
+ },
183
+ {
184
+ 'scope': [
185
+ 'accommodation'
186
+ ],
187
+ 'resource': '/api/StudentAccommodationCards',
188
+ 'access': [
189
+ 'read',
190
+ 'write'
191
+ ]
192
+ },
193
+ {
194
+ 'scope': [
195
+ 'accommodation'
196
+ ],
197
+ 'resource': '/api/AccommodationPlaces',
198
+ 'access': [
199
+ 'read',
200
+ 'write'
201
+ ]
202
+ },
203
+ {
204
+ 'scope': [
205
+ 'accommodation'
206
+ ],
207
+ 'resource': '/api/AccommodationRooms',
208
+ 'access': [
209
+ 'read',
210
+ 'write'
211
+ ]
212
+ },
213
+ {
214
+ 'scope': [
215
+ 'accommodation'
216
+ ],
217
+ 'resource': '/api/AccommodationConfigurations',
218
+ 'access': [
219
+ 'read',
220
+ 'write'
221
+ ]
222
+ },
223
+ {
224
+ 'scope': [
225
+ 'accommodation'
226
+ ],
227
+ 'resource': '/api/ReportTemplates',
228
+ 'access': [
229
+ 'read',
230
+ 'write'
231
+ ]
232
+ },
233
+ {
234
+ 'scope': [
235
+ 'accommodation'
236
+ ],
237
+ 'resource': '/api/AccommodationRequestCategories',
238
+ 'access': [
239
+ 'read',
240
+ 'write'
241
+ ]
242
+ },
243
+ {
244
+ 'scope': [
245
+ 'accommodation'
246
+ ],
247
+ 'resource': '/api/AccommodationRequestPreferences',
248
+ 'access': [
249
+ 'read'
250
+ ]
251
+ },
252
+ {
253
+ 'scope': [
254
+ 'accommodation'
255
+ ],
256
+ 'resource': '/api/UpdateAccommodationRequestEventActions',
257
+ 'access': [
258
+ 'read',
259
+ 'write'
260
+ ]
261
+ },
262
+ {
263
+ 'scope': [
264
+ 'accommodation'
265
+ ],
266
+ 'resource': '/api/Institutes',
267
+ 'access': [
268
+ 'read'
269
+ ]
270
+ },
271
+ {
272
+ 'scope': [
273
+ 'students'
274
+ ],
275
+ 'resource': '/api/TestActions/?$',
276
+ 'access': [
277
+ 'read',
278
+ 'write'
279
+ ]
280
+ },
281
+ {
282
+ 'scope': [
283
+ 'students'
284
+ ],
285
+ 'resource': '/api/Accommodations/?$',
286
+ 'access': [
287
+ 'read'
288
+ ]
289
+ },
290
+ {
291
+ 'scope': [
292
+ 'students'
293
+ ],
294
+ 'resource': '/api/AccommodationRequestActions',
295
+ 'access': [
296
+ 'read',
297
+ 'write'
298
+ ]
299
+ },
300
+ {
301
+ 'scope': [
302
+ 'students'
303
+ ],
304
+ 'resource': '/api/AccommodationRequestEvents',
305
+ 'access': [
306
+ 'read'
307
+ ]
308
+ },
309
+ {
310
+ 'scope': [
311
+ 'students'
312
+ ],
313
+ 'resource': '/api/AccommodationRequestCategories',
314
+ 'access': [
315
+ 'read'
316
+ ]
317
+ },
318
+ {
319
+ 'scope': [
320
+ 'students'
321
+ ],
322
+ 'resource': '/api/StudentAccommodationCards',
323
+ 'access': [
324
+ 'read'
146
325
  ]
147
326
  }
148
327
  ]
@@ -47,9 +47,9 @@ async function afterSaveAsync(event) {
47
47
  academicPeriod = student && student.department && student.department.currentPeriod ? student.department.currentPeriod : null;
48
48
  }
49
49
  let cardActionStatus = {};
50
- if (event.target.accommodation && (Object.keys(event.target.accommodation).length === 0 || event.target.accommodation === '')) {
50
+ if (!event.target.accommodation ){
51
51
  // get accommodation valid through date
52
- cardActionStatus = { alternateName: 'PotentialActionStatus' }
52
+ cardActionStatus = { alternateName: 'ActiveActionStatus' }
53
53
 
54
54
  } else {
55
55
  cardActionStatus = { alternateName: 'CompletedActionStatus' }
@@ -13,16 +13,16 @@ async function afterSaveAsync(event) {
13
13
  const mailer = getMailer(context);
14
14
 
15
15
  const currentCardStatus = await context
16
- .model('StudentDiningCard')
16
+ .model('StudentAccommodationCard')
17
17
  .where('id')
18
18
  .equal(event.target.id)
19
- .select('active')
19
+ .select('cardStatus')
20
20
  .value();
21
21
  let previousCardStatus = 'UnknownStatus';
22
22
  if (event.previous) {
23
- previousCardStatus = event.previous.active;
23
+ previousCardStatus = event.previous.cardStatus;
24
24
  } else {
25
- throw new DataError('E_STATE', 'The previous state of an object cannot be determined', null, 'StudentDiningCard');
25
+ throw new DataError('E_STATE', 'The previous state of an object cannot be determined', null, 'StudentAccommodationCard');
26
26
  }
27
27
  if (currentCardStatus === previousCardStatus) {
28
28
  return;
@@ -32,7 +32,7 @@ async function afterSaveAsync(event) {
32
32
  const mailTemplate = await context
33
33
  .model('MailConfigurations')
34
34
  .where('target')
35
- .equal('DiningCardActiveStatusChange')
35
+ .equal('AccommodationCardActiveStatusChange')
36
36
  .silent()
37
37
  .getItem();
38
38
  if (mailTemplate == null) {
@@ -44,7 +44,7 @@ async function afterSaveAsync(event) {
44
44
  let item;
45
45
  if (typeof event.target.action === 'object' && typeof event.target.action.id === 'number' && Number.isInteger(event.target.action.id) && event.target.action.id > 0) {
46
46
  item = await context
47
- .model('DiningRequestAction')
47
+ .model('AccommodationRequestAction')
48
48
  .where('id')
49
49
  .equal(event.target.action.id)
50
50
  .expand({
@@ -58,7 +58,7 @@ async function afterSaveAsync(event) {
58
58
 
59
59
  } else if (typeof event.target.action === 'number' && Number.isInteger(event.target.action) && event.target.action > 0) {
60
60
  item = await context
61
- .model('DiningRequestAction')
61
+ .model('AccommodationRequestAction')
62
62
  .where('id')
63
63
  .equal(event.target.action)
64
64
  .expand({
@@ -83,7 +83,7 @@ async function afterSaveAsync(event) {
83
83
  const config = await context
84
84
  .model('StudentRequestConfiguration')
85
85
  .where('additionalType')
86
- .equal('DiningRequestAction')
86
+ .equal('AccommodationRequestAction')
87
87
  .and('inLanguage')
88
88
  .equal(event.target.inLanguage || context.locale)
89
89
  .silent()
@@ -1 +0,0 @@
1
- {"version":3,"file":"Accommodation.js","names":["_common","require","_data","_dec","_dec2","_dec3","_class","_class2","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","Object","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","AccommodationRequestEvent","EdmMapping","entityType","param","action","DataObject","constructor","remove","data","model","getModel","item","where","equal","getId","getItem","translateService","application","getStrategy","TranslateService","DataError","translate","hasRooms","id","count","silent","prototype","getOwnPropertyDescriptor","module","exports"],"sources":["../../src/models/Accommodation.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport { DataError } from \"@themost/common\";\nimport { DataObject, EdmMapping } from \"@themost/data\";\n\n\n@EdmMapping.entityType('Accommodation')\nclass AccommodationRequestEvent extends DataObject {\n /**\n * @constructor\n */\n constructor() {\n super();\n }\n\n /**\n * POST AccommodationRequestEvents/:id/Remove\n */\n\n //remove accommodation request event\n @EdmMapping.param('data', 'Object', false, true)\n @EdmMapping.action('remove', 'Accommodation')\n async remove(data) {\n /**\n * @type {import('@themost/data').DataModel}\n */\n\n const model = this.getModel();\n\n const item = await model.where('id')\n .equal(this.getId())\n .getItem();\n const translateService = this.context.application.getStrategy(function TranslateService() { });\n\n if (item == null) {\n throw new DataError('E_ACCOMMODATION', translateService.translate('The specified Accommodation cannot be found or is inaccessible.'));\n }\n\n const hasRooms = await this.context.model('AccommodationRooms')\n .where('containedInPlace').equal(item.id).count();\n\n if (hasRooms) {\n throw new DataError('E_ACCOMMODATION_ROOM', translateService.translate('Cannot remove accommodation. Accommodation is related to rooms.'), null, 'Accommodation');\n }\n\n return model.silent().remove(item);\n }\n\n\n \n}\n\nmodule.exports = AccommodationRequestEvent;\n"],"mappings":"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"}