@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.
- package/.gitlab-ci.yml +23 -0
- package/LICENSE +163 -0
- package/README.md +3 -0
- package/dist/AccommodationSchemaLoader.js +35 -0
- package/dist/AccommodationSchemaLoader.js.map +1 -0
- package/dist/AccommodationService.js +68 -0
- package/dist/AccommodationService.js.map +1 -0
- package/dist/DepartmentReplacer.js +54 -0
- package/dist/DepartmentReplacer.js.map +1 -0
- package/dist/StudentReplacer.js +75 -0
- package/dist/StudentReplacer.js.map +1 -0
- package/dist/config/models/Accommodation.json +96 -0
- package/dist/config/models/AccommodationCardEffectiveStatusType.json +107 -0
- package/dist/config/models/AccommodationCardEffectiveStatusTypeLocale.json +85 -0
- package/dist/config/models/AccommodationChildFinancialAttribute.json +46 -0
- package/dist/config/models/AccommodationGuardianFinancialAttribute.json +46 -0
- package/dist/config/models/AccommodationInscriptionModeTag.json +100 -0
- package/dist/config/models/AccommodationRequestAction.json +500 -0
- package/dist/config/models/AccommodationRequestActionMessage.json +46 -0
- package/dist/config/models/AccommodationRequestActionReview.json +31 -0
- package/dist/config/models/AccommodationRequestAttachmentConfiguration.json +72 -0
- package/dist/config/models/AccommodationRequestCategory.json +50 -0
- package/dist/config/models/AccommodationRequestEffectiveStatusType.json +212 -0
- package/dist/config/models/AccommodationRequestEffectiveStatusTypeLocale.json +85 -0
- package/dist/config/models/AccommodationRequestEvent.json +117 -0
- package/dist/config/models/AccommodationRequestFinancialAttribute.json +53 -0
- package/dist/config/models/AccommodationRoom.json +151 -0
- package/dist/config/models/AccommodationSiblingFinancialAttribute.json +57 -0
- package/dist/config/models/CancelAccommodationCardAction.json +32 -0
- package/dist/config/models/GuardianType.json +78 -0
- package/dist/config/models/Review.json +50 -0
- package/dist/config/models/RoomType.json +320 -0
- package/dist/config/models/RoomTypeLocale.json +86 -0
- package/dist/config/models/StudentAccommodationCard.json +158 -0
- package/dist/config/models/TestAction.json +50 -0
- package/dist/config/scope.access.js +148 -0
- package/dist/config/scope.access.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/listeners/AddDefaultAttachmentConfiguration.js +44 -0
- package/dist/listeners/AddDefaultAttachmentConfiguration.js.map +1 -0
- package/dist/listeners/DefaultAttachmentConfigurations.json +277 -0
- package/dist/listeners/DefaultAttachmentTypes.json +523 -0
- package/dist/listeners/GenerateRequestNumberListener.js +87 -0
- package/dist/listeners/GenerateRequestNumberListener.js.map +1 -0
- package/dist/listeners/OnActionCompleteListener.js +96 -0
- package/dist/listeners/OnActionCompleteListener.js.map +1 -0
- package/dist/listeners/OnCancelAccommodationCardListener.js +87 -0
- package/dist/listeners/OnCancelAccommodationCardListener.js.map +1 -0
- package/dist/listeners/OnReactivateAccommodationCardListener.js +87 -0
- package/dist/listeners/OnReactivateAccommodationCardListener.js.map +1 -0
- package/dist/listeners/SendEmailAfterActionStatusChangeListener.js +98 -0
- package/dist/listeners/SendEmailAfterActionStatusChangeListener.js.map +1 -0
- package/dist/listeners/SendEmailAfterCardStatusChangeListener.js +139 -0
- package/dist/listeners/SendEmailAfterCardStatusChangeListener.js.map +1 -0
- package/dist/listeners/StudentAccommodationCardSaveListener.js +90 -0
- package/dist/listeners/StudentAccommodationCardSaveListener.js.map +1 -0
- package/dist/listeners/UpdateStudentAccommodationCardListener.js +70 -0
- package/dist/listeners/UpdateStudentAccommodationCardListener.js.map +1 -0
- package/dist/listeners/ValidateActionListener.js +348 -0
- package/dist/listeners/ValidateActionListener.js.map +1 -0
- package/dist/listeners/data-localization.js +209 -0
- package/dist/listeners/data-localization.js.map +1 -0
- package/dist/listeners/lookup-cache-listener.js +90 -0
- package/dist/listeners/lookup-cache-listener.js.map +1 -0
- package/dist/models/Accommodation.js +53 -0
- package/dist/models/Accommodation.js.map +1 -0
- package/dist/models/AccommodationRequestAction.js +214 -0
- package/dist/models/AccommodationRequestAction.js.map +1 -0
- package/dist/models/AccommodationRequestEvent.js +277 -0
- package/dist/models/AccommodationRequestEvent.js.map +1 -0
- package/dist/models/EnableAttachmentModel.js +210 -0
- package/dist/models/EnableAttachmentModel.js.map +1 -0
- package/dist/models/StudentAccommodationCard.js +93 -0
- package/dist/models/StudentAccommodationCard.js.map +1 -0
- package/dist/models/TestAction.d.ts +5 -0
- package/dist/models/TestAction.js +5 -0
- package/dist/models/TestAction.js.map +1 -0
- package/dist/templates/mail-after-dining-request-status-change/html.ejs +27 -0
- package/package.json +57 -0
- package/src/AccommodationSchemaLoader.js +35 -0
- package/src/AccommodationService.js +67 -0
- package/src/DepartmentReplacer.js +53 -0
- package/src/StudentReplacer.js +74 -0
- package/src/config/models/Accommodation.json +96 -0
- package/src/config/models/AccommodationCardEffectiveStatusType.json +107 -0
- package/src/config/models/AccommodationCardEffectiveStatusTypeLocale.json +85 -0
- package/src/config/models/AccommodationChildFinancialAttribute.json +46 -0
- package/src/config/models/AccommodationGuardianFinancialAttribute.json +46 -0
- package/src/config/models/AccommodationInscriptionModeTag.json +100 -0
- package/src/config/models/AccommodationRequestAction.json +500 -0
- package/src/config/models/AccommodationRequestActionMessage.json +46 -0
- package/src/config/models/AccommodationRequestActionReview.json +31 -0
- package/src/config/models/AccommodationRequestAttachmentConfiguration.json +72 -0
- package/src/config/models/AccommodationRequestCategory.json +50 -0
- package/src/config/models/AccommodationRequestEffectiveStatusType.json +212 -0
- package/src/config/models/AccommodationRequestEffectiveStatusTypeLocale.json +85 -0
- package/src/config/models/AccommodationRequestEvent.json +117 -0
- package/src/config/models/AccommodationRequestFinancialAttribute.json +53 -0
- package/src/config/models/AccommodationRoom.json +151 -0
- package/src/config/models/AccommodationSiblingFinancialAttribute.json +57 -0
- package/src/config/models/CancelAccommodationCardAction.json +32 -0
- package/src/config/models/GuardianType.json +78 -0
- package/src/config/models/Review.json +50 -0
- package/src/config/models/RoomType.json +320 -0
- package/src/config/models/RoomTypeLocale.json +86 -0
- package/src/config/models/StudentAccommodationCard.json +158 -0
- package/src/config/models/TestAction.json +50 -0
- package/src/config/scope.access.js +148 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
- package/src/listeners/AddDefaultAttachmentConfiguration.js +43 -0
- package/src/listeners/DefaultAttachmentConfigurations.json +277 -0
- package/src/listeners/DefaultAttachmentTypes.json +523 -0
- package/src/listeners/GenerateRequestNumberListener.js +86 -0
- package/src/listeners/OnActionCompleteListener.js +95 -0
- package/src/listeners/OnCancelAccommodationCardListener.js +86 -0
- package/src/listeners/OnReactivateAccommodationCardListener.js +86 -0
- package/src/listeners/SendEmailAfterActionStatusChangeListener.js +97 -0
- package/src/listeners/SendEmailAfterCardStatusChangeListener.js +138 -0
- package/src/listeners/StudentAccommodationCardSaveListener.js +89 -0
- package/src/listeners/UpdateStudentAccommodationCardListener.js +69 -0
- package/src/listeners/ValidateActionListener.js +347 -0
- package/src/listeners/data-localization.js +214 -0
- package/src/listeners/lookup-cache-listener.js +89 -0
- package/src/models/Accommodation.js +52 -0
- package/src/models/AccommodationRequestAction.js +195 -0
- package/src/models/AccommodationRequestEvent.js +276 -0
- package/src/models/EnableAttachmentModel.js +209 -0
- package/src/models/StudentAccommodationCard.js +92 -0
- package/src/models/TestAction.d.ts +5 -0
- package/src/models/TestAction.js +10 -0
- 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,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>
|