@universis/accommodation 1.0.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 (134) hide show
  1. package/.gitlab-ci.yml +23 -0
  2. package/LICENSE +163 -0
  3. package/README.md +3 -0
  4. package/dist/AccommodationSchemaLoader.js +35 -0
  5. package/dist/AccommodationSchemaLoader.js.map +1 -0
  6. package/dist/AccommodationService.js +68 -0
  7. package/dist/AccommodationService.js.map +1 -0
  8. package/dist/DepartmentReplacer.js +54 -0
  9. package/dist/DepartmentReplacer.js.map +1 -0
  10. package/dist/StudentReplacer.js +75 -0
  11. package/dist/StudentReplacer.js.map +1 -0
  12. package/dist/config/models/Accommodation.json +96 -0
  13. package/dist/config/models/AccommodationCardEffectiveStatusType.json +107 -0
  14. package/dist/config/models/AccommodationCardEffectiveStatusTypeLocale.json +85 -0
  15. package/dist/config/models/AccommodationChildFinancialAttribute.json +46 -0
  16. package/dist/config/models/AccommodationGuardianFinancialAttribute.json +46 -0
  17. package/dist/config/models/AccommodationInscriptionModeTag.json +100 -0
  18. package/dist/config/models/AccommodationRequestAction.json +500 -0
  19. package/dist/config/models/AccommodationRequestActionMessage.json +46 -0
  20. package/dist/config/models/AccommodationRequestActionReview.json +31 -0
  21. package/dist/config/models/AccommodationRequestAttachmentConfiguration.json +72 -0
  22. package/dist/config/models/AccommodationRequestCategory.json +50 -0
  23. package/dist/config/models/AccommodationRequestEffectiveStatusType.json +212 -0
  24. package/dist/config/models/AccommodationRequestEffectiveStatusTypeLocale.json +85 -0
  25. package/dist/config/models/AccommodationRequestEvent.json +117 -0
  26. package/dist/config/models/AccommodationRequestFinancialAttribute.json +53 -0
  27. package/dist/config/models/AccommodationRoom.json +151 -0
  28. package/dist/config/models/AccommodationSiblingFinancialAttribute.json +57 -0
  29. package/dist/config/models/CancelAccommodationCardAction.json +32 -0
  30. package/dist/config/models/GuardianType.json +78 -0
  31. package/dist/config/models/Review.json +50 -0
  32. package/dist/config/models/RoomType.json +320 -0
  33. package/dist/config/models/RoomTypeLocale.json +86 -0
  34. package/dist/config/models/StudentAccommodationCard.json +158 -0
  35. package/dist/config/models/TestAction.json +50 -0
  36. package/dist/config/scope.access.js +148 -0
  37. package/dist/config/scope.access.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +3 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/listeners/AddDefaultAttachmentConfiguration.js +44 -0
  42. package/dist/listeners/AddDefaultAttachmentConfiguration.js.map +1 -0
  43. package/dist/listeners/DefaultAttachmentConfigurations.json +277 -0
  44. package/dist/listeners/DefaultAttachmentTypes.json +523 -0
  45. package/dist/listeners/GenerateRequestNumberListener.js +87 -0
  46. package/dist/listeners/GenerateRequestNumberListener.js.map +1 -0
  47. package/dist/listeners/OnActionCompleteListener.js +96 -0
  48. package/dist/listeners/OnActionCompleteListener.js.map +1 -0
  49. package/dist/listeners/OnCancelAccommodationCardListener.js +87 -0
  50. package/dist/listeners/OnCancelAccommodationCardListener.js.map +1 -0
  51. package/dist/listeners/OnReactivateAccommodationCardListener.js +87 -0
  52. package/dist/listeners/OnReactivateAccommodationCardListener.js.map +1 -0
  53. package/dist/listeners/SendEmailAfterActionStatusChangeListener.js +98 -0
  54. package/dist/listeners/SendEmailAfterActionStatusChangeListener.js.map +1 -0
  55. package/dist/listeners/SendEmailAfterCardStatusChangeListener.js +139 -0
  56. package/dist/listeners/SendEmailAfterCardStatusChangeListener.js.map +1 -0
  57. package/dist/listeners/StudentAccommodationCardSaveListener.js +90 -0
  58. package/dist/listeners/StudentAccommodationCardSaveListener.js.map +1 -0
  59. package/dist/listeners/UpdateStudentAccommodationCardListener.js +70 -0
  60. package/dist/listeners/UpdateStudentAccommodationCardListener.js.map +1 -0
  61. package/dist/listeners/ValidateActionListener.js +348 -0
  62. package/dist/listeners/ValidateActionListener.js.map +1 -0
  63. package/dist/listeners/data-localization.js +209 -0
  64. package/dist/listeners/data-localization.js.map +1 -0
  65. package/dist/listeners/lookup-cache-listener.js +90 -0
  66. package/dist/listeners/lookup-cache-listener.js.map +1 -0
  67. package/dist/models/Accommodation.js +53 -0
  68. package/dist/models/Accommodation.js.map +1 -0
  69. package/dist/models/AccommodationRequestAction.js +214 -0
  70. package/dist/models/AccommodationRequestAction.js.map +1 -0
  71. package/dist/models/AccommodationRequestEvent.js +277 -0
  72. package/dist/models/AccommodationRequestEvent.js.map +1 -0
  73. package/dist/models/EnableAttachmentModel.js +210 -0
  74. package/dist/models/EnableAttachmentModel.js.map +1 -0
  75. package/dist/models/StudentAccommodationCard.js +93 -0
  76. package/dist/models/StudentAccommodationCard.js.map +1 -0
  77. package/dist/models/TestAction.d.ts +5 -0
  78. package/dist/models/TestAction.js +5 -0
  79. package/dist/models/TestAction.js.map +1 -0
  80. package/dist/templates/mail-after-dining-request-status-change/html.ejs +27 -0
  81. package/package.json +57 -0
  82. package/src/AccommodationSchemaLoader.js +35 -0
  83. package/src/AccommodationService.js +67 -0
  84. package/src/DepartmentReplacer.js +53 -0
  85. package/src/StudentReplacer.js +74 -0
  86. package/src/config/models/Accommodation.json +96 -0
  87. package/src/config/models/AccommodationCardEffectiveStatusType.json +107 -0
  88. package/src/config/models/AccommodationCardEffectiveStatusTypeLocale.json +85 -0
  89. package/src/config/models/AccommodationChildFinancialAttribute.json +46 -0
  90. package/src/config/models/AccommodationGuardianFinancialAttribute.json +46 -0
  91. package/src/config/models/AccommodationInscriptionModeTag.json +100 -0
  92. package/src/config/models/AccommodationRequestAction.json +500 -0
  93. package/src/config/models/AccommodationRequestActionMessage.json +46 -0
  94. package/src/config/models/AccommodationRequestActionReview.json +31 -0
  95. package/src/config/models/AccommodationRequestAttachmentConfiguration.json +72 -0
  96. package/src/config/models/AccommodationRequestCategory.json +50 -0
  97. package/src/config/models/AccommodationRequestEffectiveStatusType.json +212 -0
  98. package/src/config/models/AccommodationRequestEffectiveStatusTypeLocale.json +85 -0
  99. package/src/config/models/AccommodationRequestEvent.json +117 -0
  100. package/src/config/models/AccommodationRequestFinancialAttribute.json +53 -0
  101. package/src/config/models/AccommodationRoom.json +151 -0
  102. package/src/config/models/AccommodationSiblingFinancialAttribute.json +57 -0
  103. package/src/config/models/CancelAccommodationCardAction.json +32 -0
  104. package/src/config/models/GuardianType.json +78 -0
  105. package/src/config/models/Review.json +50 -0
  106. package/src/config/models/RoomType.json +320 -0
  107. package/src/config/models/RoomTypeLocale.json +86 -0
  108. package/src/config/models/StudentAccommodationCard.json +158 -0
  109. package/src/config/models/TestAction.json +50 -0
  110. package/src/config/scope.access.js +148 -0
  111. package/src/index.d.ts +2 -0
  112. package/src/index.js +2 -0
  113. package/src/listeners/AddDefaultAttachmentConfiguration.js +43 -0
  114. package/src/listeners/DefaultAttachmentConfigurations.json +277 -0
  115. package/src/listeners/DefaultAttachmentTypes.json +523 -0
  116. package/src/listeners/GenerateRequestNumberListener.js +86 -0
  117. package/src/listeners/OnActionCompleteListener.js +95 -0
  118. package/src/listeners/OnCancelAccommodationCardListener.js +86 -0
  119. package/src/listeners/OnReactivateAccommodationCardListener.js +86 -0
  120. package/src/listeners/SendEmailAfterActionStatusChangeListener.js +97 -0
  121. package/src/listeners/SendEmailAfterCardStatusChangeListener.js +138 -0
  122. package/src/listeners/StudentAccommodationCardSaveListener.js +89 -0
  123. package/src/listeners/UpdateStudentAccommodationCardListener.js +69 -0
  124. package/src/listeners/ValidateActionListener.js +347 -0
  125. package/src/listeners/data-localization.js +214 -0
  126. package/src/listeners/lookup-cache-listener.js +89 -0
  127. package/src/models/Accommodation.js +52 -0
  128. package/src/models/AccommodationRequestAction.js +195 -0
  129. package/src/models/AccommodationRequestEvent.js +276 -0
  130. package/src/models/EnableAttachmentModel.js +209 -0
  131. package/src/models/StudentAccommodationCard.js +92 -0
  132. package/src/models/TestAction.d.ts +5 -0
  133. package/src/models/TestAction.js +10 -0
  134. package/src/templates/mail-after-dining-request-status-change/html.ejs +27 -0
@@ -0,0 +1,92 @@
1
+
2
+ import { DataObject, EdmMapping } from '@themost/data';
3
+ import { DataError, DataNotFoundError } from "@themost/common"
4
+
5
+ /**
6
+ * @class
7
+
8
+ * @property {number} id
9
+ * @property {number} serialNumber
10
+ * @property {boolean} active
11
+ * @property {string} cancelReason
12
+ * @property {string} notes
13
+ * @property {AccommodationRequestAction|any} action
14
+ * @property {AcademicYear|any} academicYear
15
+ * @property {AcademicPeriod|any} academicPeriod
16
+ * @property {Date} dateCreated
17
+ * @property {Date} dateModified
18
+ * @property {Date} validFrom
19
+ * @property {Date} validThrough
20
+ * @property {User|any} student
21
+ */
22
+ @EdmMapping.entityType('StudentAccommodationCard')
23
+ class StudentAccommodationCard extends DataObject {
24
+ /**
25
+ * @constructor
26
+ */
27
+ constructor() {
28
+ super();
29
+ }
30
+ /**
31
+ * POST StudentAccommodationCards/:id/Cancel
32
+ */
33
+ @EdmMapping.param('data', 'Object', false, true)
34
+ @EdmMapping.action('cancel', 'StudentAccommodationCard')
35
+
36
+ async cancel(data) {
37
+
38
+ if (!data.cancelReason) {
39
+ throw new DataError('E_CANCEL_REASON', 'Cancel Reason should be provided');
40
+ }
41
+
42
+ await this.context.executeInTransactionAsync(async () => {
43
+ // find StudentAccommodationCard from id
44
+ const StudentAccommodationCard = await this.context.model('StudentAccommodationCard')
45
+ .where('id')
46
+ .equal(this.getId())
47
+ .select('id', 'active', 'action', 'student', 'academicPeriod', 'academicYear')
48
+ .flatten()
49
+ .getItem();
50
+
51
+ // validate existance and permission
52
+ if (StudentAccommodationCard == null) {
53
+ throw new DataNotFoundError('The specified Student Accommodation Card cannot be found or is inaccessible');
54
+ }
55
+ // StudentAccommodationCard already cancelled throw error
56
+ if (StudentAccommodationCard.active === false) {
57
+ throw new DataError('E_ACTIVE', 'The specified Student Accommodation Card is already cancelled')
58
+ }
59
+
60
+ //validate AccommodationRequestAction
61
+ if (StudentAccommodationCard.action == null) {
62
+ throw new DataError('E_ACTION', 'The Student Accommodation Card is not linked to a Accommodation Request Action')
63
+ }
64
+
65
+ // cancel StudentAccommodationCard
66
+ StudentAccommodationCard.cardStatus = {alternateName: "CancelledActionStatus"};
67
+ StudentAccommodationCard.cancelReason = data.cancelReason;
68
+ await this.context.model('StudentAccommodationCard').save(StudentAccommodationCard);
69
+
70
+ const action = await this.context.model('AccommodationRequestAction').where('id').equal(StudentAccommodationCard.action).select('id', 'actionStatus/alternateName as requestStatus').getItem();
71
+ //validate AccommodationRequestAction
72
+ if (action == null) {
73
+ throw new DataError('E_ACTION', 'The specified AccommodationRequestAction cannot be found or is inaccessible')
74
+ }
75
+
76
+ if (action.requestStatus !== 'CompletedActionStatus') {
77
+ throw new DataError('E_ACTION', 'The specified AccommodationRequestAction is not in Completed state')
78
+ }
79
+
80
+ action.actionStatus = {
81
+ alternateName: "ActiveActionStatus"
82
+ }
83
+
84
+ delete action.requestStatus;
85
+ await this.context.model('AccommodationRequestAction').save(action);
86
+ });
87
+ }
88
+
89
+
90
+ }
91
+
92
+ module.exports = StudentAccommodationCard;
@@ -0,0 +1,5 @@
1
+ import { DataObject } from '@themost/data';
2
+
3
+ export declare class TestAction extends DataObject {
4
+
5
+ }
@@ -0,0 +1,10 @@
1
+ import { DataObject, EdmMapping } from "@themost/data";
2
+
3
+ @EdmMapping.entityType()
4
+ class TestAction extends DataObject {
5
+
6
+ }
7
+
8
+ export {
9
+ TestAction
10
+ }
@@ -0,0 +1,27 @@
1
+ <html lang="en">
2
+ <head>
3
+ <link rel="stylesheet"
4
+ href="https://unpkg.com/@universis/theme@1.0.5/css/universis.css"
5
+ integrity="sha384-GcIMWx3Jq0rHFUoV9TxtmxKkYHxwNoaXhDb/sNO7H6s6X34p02LJyfVwnH2B61sl"
6
+ crossorigin="anonymous">
7
+ </head>
8
+ <body>
9
+ <div class="container-fluid">
10
+ <div class="text-right mb-2">
11
+ <img style="height: 64px" src="https://students.universis.io/assets/img/universis_logo_128_color.png"
12
+ alt="Universis Project Logo">
13
+ </div>
14
+ <div class="page-header">
15
+ <h3>Κατάσταση Αίτησης Σίτισης</h3>
16
+ </div>
17
+ <p>Αγαπητέ/ή <%= model.student.person.givenName %> <%= model.student.person.familyName %>,</p>
18
+ <p>
19
+ Η κατάσταση της αίτησης σίτισής σου άλλαξε. Μπορείς να δεις την τρέχουσα εικόνα της αίτησης <a href="<%= application.url %>/#/<%= configuration.url %>">εδώ</a>
20
+ </p>
21
+
22
+ <br>
23
+ <p>Με εκτίμηση,</p>
24
+ <p>Universis Support</p>
25
+ </div>
26
+ </body>
27
+ </html>