@plusscommunities/pluss-maintenance-aws-feedback 2.1.15-beta.1

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.
@@ -0,0 +1,153 @@
1
+ const _ = require("lodash");
2
+ const moment = require("moment");
3
+ const getJobEmail = require("./db/maintenance/getJobEmail");
4
+ const sendEmail = require("@plusscommunities/pluss-core-aws/helper/sendEmail");
5
+ const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
6
+ const { values } = require("./values.config");
7
+
8
+ module.exports = function (job, updated) {
9
+ const whenEvs = job.isHome
10
+ ? "Yes - I would like to be present"
11
+ : "No - Work may be done while I am not home.";
12
+
13
+ getRef("sites", "Id", job.site || job.location)
14
+ .then((site) => {
15
+ const siteToUse = site ? site.siteName : job.site || job.location;
16
+ const { customFields } = job;
17
+ const hasCustomFields = customFields && customFields.length > 0;
18
+
19
+ const renderCommon = () => `
20
+ <p>
21
+ <b>${values.textJobEmailTitle} ${job.id != null ? `#${job.id}` : ""}${
22
+ updated ? "-DETAILS EDITED- " : " "
23
+ }(${job.type}):</b> ${job.room}
24
+ </p>
25
+ <div>
26
+ <b>Title: </b>${job.title}
27
+ </div>
28
+ <p>Client Details:</p>
29
+ <div>
30
+ <b>Name: </b>${job.userName}
31
+ </div>
32
+ <div>
33
+ <b>Phone: </b>${job.phone || ""}
34
+ </div>
35
+ <div>
36
+ <b>Location: </b>${siteToUse} <br /><br />
37
+ </div>
38
+ <div>
39
+ <b>Address: </b>${job.room} <br /><br />
40
+ </div>
41
+ `;
42
+ const renderImages = () => {
43
+ let inner = "";
44
+ if (!_.isNil(job.images)) {
45
+ inner = job.images.map(
46
+ (image) => `<img style="max-height: 400px" src="${image}" />`
47
+ );
48
+ } else if (!_.isNil(job.image)) {
49
+ inner = `<img style="max-height: 400px" src="${job.image}" />`;
50
+ }
51
+ return _.isEmpty(inner) ? "" : `<div>${inner}</div>`;
52
+ };
53
+ const renderNonCustom = () => `
54
+ <div>
55
+ <b>Person Present During Service: </b>${whenEvs}
56
+ <div>
57
+ ${job.isHome ? job.homeText : ""}
58
+ <br /><br />
59
+ </div>
60
+ </div>
61
+ <div>
62
+ <b>${job.type} Description: </b>
63
+ </div>
64
+ <div>
65
+ ${job.description || ""}
66
+ </div>
67
+ ${renderImages()}
68
+ `;
69
+ const renderCustom = () => {
70
+ const renderAnswer = (field) => {
71
+ switch (field.type) {
72
+ case "date":
73
+ return field.answer
74
+ ? moment(field.answer, "YYYY-MM-DD").format("DD MMM YYYY")
75
+ : "";
76
+ case "time":
77
+ return field.answer
78
+ ? moment(field.answer, "HH:mm").format("h:mm a")
79
+ : "";
80
+ case "yn":
81
+ return field.answer ? "Yes" : "No";
82
+ case "checkbox":
83
+ return field.answer && Array.isArray(field.answer)
84
+ ? field.answer.join(", ")
85
+ : "";
86
+ case "image":
87
+ return field.answer && Array.isArray(field.answer)
88
+ ? `<br>${field.answer.map(
89
+ (image) =>
90
+ `<img style="max-height: 400px" src="${image}" />`
91
+ )}`
92
+ : "";
93
+ default:
94
+ return field.answer;
95
+ }
96
+ };
97
+
98
+ return customFields
99
+ .filter((f) => !["staticTitle", "staticText"].includes(f.type))
100
+ .map((field) => {
101
+ return `
102
+ <div>
103
+ <b>${field.label}: </b>${renderAnswer(field)}
104
+ </div>
105
+ `;
106
+ })
107
+ .join("\n");
108
+ };
109
+
110
+ const htmlString = `
111
+ <div>
112
+ ${renderCommon()}
113
+ ${hasCustomFields ? renderCustom() : renderNonCustom()}
114
+ </div>
115
+ `;
116
+
117
+ getJobEmail(job.site || job.location, job.type)
118
+ .then((obj) => {
119
+ const email = obj.email;
120
+ if (_.isEmpty(email)) {
121
+ return;
122
+ }
123
+
124
+ sendEmail(
125
+ email,
126
+ `${values.textJobEmailTitle} #${job.id}${
127
+ updated ? " -DETAILS EDITED" : ""
128
+ }- (${job.type}) - ${job.room}`,
129
+ htmlString
130
+ )
131
+ .then((result) => {
132
+ console.log(
133
+ `SUCCESS - Maintenance email --> ${job.type}, ${job.userName}`
134
+ );
135
+ })
136
+ .catch((error) => {
137
+ console.log(
138
+ `FAIL - Maintenance email --> ${job.type}, ${job.userName}`
139
+ );
140
+ });
141
+ })
142
+ .catch(() => {
143
+ console.log(
144
+ `FAIL - Maintenance email - fetch email address --> ${job.type}, ${job.userName}`
145
+ );
146
+ });
147
+ })
148
+ .catch(() => {
149
+ console.log(
150
+ `FAIL - Maintenance email - fetch site --> ${job.site || job.location}`
151
+ );
152
+ });
153
+ };
package/updateData.js ADDED
@@ -0,0 +1,37 @@
1
+ const { log } = require("@plusscommunities/pluss-core-aws/helper");
2
+ const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
3
+ const { init } = require("@plusscommunities/pluss-core-aws/config");
4
+ const config = require("./config.json");
5
+ const assignRequest = require("./requests/assignRequest");
6
+ const updatePriority = require("./requests/updatePriority");
7
+
8
+ module.exports.updateData = async (event, context, callback) => {
9
+ init(config);
10
+ const action = event.pathParameters.action;
11
+ const data = JSON.parse(event.body);
12
+ const logId = log(action, "Input", data);
13
+
14
+ let response;
15
+
16
+ try {
17
+ switch (action) {
18
+ case "assign":
19
+ response = await assignRequest(event, data);
20
+ break;
21
+ case "priority":
22
+ response = await updatePriority(event, data);
23
+ break;
24
+ default:
25
+ break;
26
+ }
27
+ } catch (err) {
28
+ log(action, "InternalError", err.toString(), logId);
29
+ if (!response) {
30
+ response = { status: 500, data: { error: "Internal Error" } };
31
+ }
32
+ }
33
+
34
+ log(action, "Response", response, logId);
35
+
36
+ return callback(null, generateJsonResponse(response.status, response.data));
37
+ };
@@ -0,0 +1,27 @@
1
+ const values = {
2
+ entityKey: "maintenancerequestA",
3
+ serviceKey: "maintenanceA",
4
+ updateKey: "jobsA",
5
+ tableKeyJobTypes: "jobtypesA",
6
+ tableKeyMaintenance: "maintenanceA",
7
+ tableKeySupportTickets: "supportticketsA",
8
+ tableNameJobTypes: "jobTypesA",
9
+ tableNameMaintenance: "maintenanceA",
10
+ tableNameSupportTickets: "supportticketsA",
11
+ permissionMaintenanceTracking: "maintenanceTrackingA",
12
+ permissionMaintenanceAssignment: "maintenanceAssignmentA",
13
+ permissionMaintenanceTypes: "maintenanceTypesA",
14
+ routeEntityPath: "/requestsHubA/jobDetails/:id",
15
+ screenMaintenanceDetail: "requestDetailA",
16
+ notificationMaintenanceJobAssigned: "MaintenanceJobAssignedA",
17
+ notificationMaintenanceJobUnassigned: "MaintenanceJobUnassignedA",
18
+ activityDeleteMaintenanceJob: "DeleteMaintenanceJobA",
19
+ activityEditMaintenanceJob: "EditMaintenanceJobA",
20
+ activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChangedA",
21
+ activityAddMaintenanceNote: "AddMaintenanceNoteA",
22
+ activityDeleteMaintenanceNote: "DeleteMaintenanceNoteA",
23
+ activityEditMaintenanceNote: "EditMaintenanceNoteA",
24
+ textJobEmailTitle: "Service Request",
25
+ triggerMaintenanceStatusChanged: "MaintenanceStatusChangedA",
26
+ };
27
+ exports.values = values;
@@ -0,0 +1,30 @@
1
+ const values = {
2
+ entityKey: "maintenancerequest",
3
+ serviceKey: "maintenance",
4
+ updateKey: "jobs",
5
+ tableKeyJobTypes: "jobtypes",
6
+ tableKeyMaintenance: "maintenance",
7
+ tableKeySupportTickets: "supporttickets",
8
+ tableNameJobTypes: "jobTypes",
9
+ tableNameMaintenance: "maintenance",
10
+ tableNameSupportTickets: "supporttickets",
11
+ permissionMaintenanceTracking: "maintenanceTracking",
12
+ permissionMaintenanceAssignment: "maintenanceAssignment",
13
+ permissionMaintenanceTypes: "maintenanceTypes",
14
+ routeEntityPath: "/requestsHub/jobDetails/:id",
15
+ screenMaintenanceDetail: "requestDetail",
16
+ notificationMaintenanceJobAssigned: "MaintenanceJobAssigned",
17
+ notificationMaintenanceJobUnassigned: "MaintenanceJobUnassigned",
18
+ activityAddMaintenanceJob: "AddMaintenanceJob",
19
+ activityDeleteMaintenanceJob: "DeleteMaintenanceJob",
20
+ activityEditMaintenanceJob: "EditMaintenanceJob",
21
+ activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChanged",
22
+ activityAddMaintenanceNote: "AddMaintenanceNote",
23
+ activityDeleteMaintenanceNote: "DeleteMaintenanceNote",
24
+ activityEditMaintenanceNote: "EditMaintenanceNote",
25
+ textJobEmailTitle: "Service Request",
26
+ allowGeneralType: true,
27
+ defaultJobTypes: [],
28
+ triggerMaintenanceStatusChanged: "MaintenanceStatusChanged",
29
+ };
30
+ exports.values = values;
@@ -0,0 +1,223 @@
1
+ const values = {
2
+ entityKey: "maintenancerequestEnquiry",
3
+ serviceKey: "maintenanceEnquiry",
4
+ updateKey: "jobsEnquiry",
5
+ tableKeyJobTypes: "jobtypesEnquiry",
6
+ tableKeyMaintenance: "maintenanceEnquiry",
7
+ tableKeySupportTickets: "supportticketsEnquiry",
8
+ tableNameJobTypes: "jobTypesEnquiry",
9
+ tableNameMaintenance: "maintenanceEnquiry",
10
+ tableNameSupportTickets: "supportticketsEnquiry",
11
+ permissionMaintenanceTracking: "maintenanceTrackingEnquiry",
12
+ permissionMaintenanceAssignment: "maintenanceAssignmentEnquiry",
13
+ permissionMaintenanceTypes: "maintenanceTypesEnquiry",
14
+ routeEntityPath: "/requestsHubEnquiry/jobDetails/:id",
15
+ screenMaintenanceDetail: "requestDetailEnquiry",
16
+ notificationMaintenanceJobAssigned: "MaintenanceJobAssignedEnquiry",
17
+ notificationMaintenanceJobUnassigned: "MaintenanceJobUnassignedEnquiry",
18
+ activityAddMaintenanceJob: "AddMaintenanceJobEnquiry",
19
+ activityDeleteMaintenanceJob: "DeleteMaintenanceJobEnquiry",
20
+ activityEditMaintenanceJob: "EditMaintenanceJobEnquiry",
21
+ activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChangedEnquiry",
22
+ activityAddMaintenanceNote: "AddMaintenanceNoteEnquiry",
23
+ activityDeleteMaintenanceNote: "DeleteMaintenanceNoteEnquiry",
24
+ activityEditMaintenanceNote: "EditMaintenanceNoteEnquiry",
25
+ textJobEmailTitle: "Enquiry Submission",
26
+ allowGeneralType: false,
27
+ defaultJobTypes: [
28
+ {
29
+ customFields: [
30
+ {
31
+ isTitle: false,
32
+ label: "Subject of your enquiry",
33
+ mandatory: true,
34
+ type: "text",
35
+ },
36
+ {
37
+ isTitle: false,
38
+ label: "Details of your enquiry",
39
+ mandatory: true,
40
+ type: "text",
41
+ },
42
+ {
43
+ isTitle: false,
44
+ label: "Do you need a response by a specific date?",
45
+ mandatory: false,
46
+ type: "date",
47
+ },
48
+ ],
49
+ description:
50
+ "Use this form to submit any general questions to our community team. We'll get back to you as soon as possible",
51
+ email: "enquiry@pluss.com",
52
+ hasCustomFields: true,
53
+ level: 1,
54
+ typeName: "General Enquiry",
55
+ },
56
+ {
57
+ customFields: [
58
+ {
59
+ isTitle: false,
60
+ label:
61
+ "Are you or someone you know interested in buying a property? ",
62
+ mandatory: true,
63
+ type: "multichoice",
64
+ values: ["Myself", "Family member", "Friend", "Other"],
65
+ },
66
+ {
67
+ isTitle: false,
68
+ label:
69
+ "If this enquiry is not for yourself then please record the other person's name, email and phone number so that we can get in touch with them.",
70
+ mandatory: false,
71
+ placeHolder:
72
+ "First name, last name, email address, mobile phone number.",
73
+ type: "text",
74
+ },
75
+ {
76
+ isTitle: false,
77
+ label: "What would you like to know more about?",
78
+ mandatory: true,
79
+ type: "checkbox",
80
+ values: [
81
+ "Availability",
82
+ "Pricing",
83
+ "Services",
84
+ "Eligibility",
85
+ "Something else",
86
+ "Arranging a tour of the property",
87
+ ],
88
+ },
89
+ {
90
+ isTitle: false,
91
+ label: "Message details",
92
+ mandatory: true,
93
+ placeHolder:
94
+ "Record any details or message you would like to pass on regarding this sales enquiry",
95
+ type: "text",
96
+ },
97
+ ],
98
+ description: "Enquire about living in our community",
99
+ email: "sales@pluss.com",
100
+ hasCustomFields: true,
101
+ level: 1,
102
+ typeName: "Sales Enquiry",
103
+ },
104
+ {
105
+ customFields: [
106
+ {
107
+ isTitle: false,
108
+ label: "How would you like to help?",
109
+ mandatory: true,
110
+ type: "checkbox",
111
+ values: [
112
+ "Social Activities",
113
+ "Transport",
114
+ "Tech Support",
115
+ "Gardening",
116
+ "Companionship",
117
+ "Other",
118
+ ],
119
+ },
120
+ {
121
+ isTitle: false,
122
+ label: "If other please describe here",
123
+ mandatory: false,
124
+ type: "text",
125
+ },
126
+ {
127
+ isTitle: false,
128
+ label: "Availability",
129
+ mandatory: false,
130
+ type: "checkbox",
131
+ values: [
132
+ "Weekdays",
133
+ "Weekends",
134
+ "Specific days",
135
+ "Flexible",
136
+ "I'm not sure yet but would like to discuss further",
137
+ ],
138
+ },
139
+ {
140
+ isTitle: false,
141
+ label: "Relevant experience",
142
+ mandatory: false,
143
+ placeHolder:
144
+ "Please provide a brief description of any relevant experience ",
145
+ type: "text",
146
+ },
147
+ {
148
+ isTitle: false,
149
+ label: "How soon can you start?",
150
+ mandatory: true,
151
+ type: "multichoice",
152
+ values: [
153
+ "This week",
154
+ "Next week",
155
+ "Next month",
156
+ "Not sure yet",
157
+ "Other",
158
+ ],
159
+ },
160
+ {
161
+ isTitle: false,
162
+ label:
163
+ "Thanks for submitting your enquiry to volunteer in our community. Someone will be in touch with you soon.",
164
+ mandatory: false,
165
+ type: "staticText",
166
+ },
167
+ ],
168
+ description:
169
+ "If you're interested in volunteering your time, skills or companionship, we'd love to hear from you.",
170
+ email: "volunteer@pluss.com",
171
+ hasCustomFields: true,
172
+ level: 1,
173
+ typeName: "Volunteer Enquiry",
174
+ },
175
+ {
176
+ customFields: [
177
+ {
178
+ isTitle: false,
179
+ label: "Topic",
180
+ mandatory: true,
181
+ placeHolder:
182
+ "What is the topic of your enquiry for the resident committee?",
183
+ type: "text",
184
+ },
185
+ {
186
+ isTitle: false,
187
+ label: "Details",
188
+ mandatory: true,
189
+ placeHolder: "Add the details of your enquiry here",
190
+ type: "text",
191
+ },
192
+ {
193
+ isTitle: false,
194
+ label: "Would you like a response",
195
+ mandatory: true,
196
+ type: "yn",
197
+ },
198
+ {
199
+ isTitle: false,
200
+ label: "If yes, how should we contact you?",
201
+ mandatory: true,
202
+ type: "multichoice",
203
+ values: [
204
+ "Send a message through the app",
205
+ "Email",
206
+ "Phone",
207
+ "In person",
208
+ "Through the committee meeting report",
209
+ "Other",
210
+ ],
211
+ },
212
+ ],
213
+ description:
214
+ "This form lets you raise a question, share a suggestion, or request something for discussion with your resident committee or leadership team.",
215
+ email: "council@pluss.com",
216
+ hasCustomFields: true,
217
+ level: 1,
218
+ typeName: "Resident Council / Committee Enquiry",
219
+ },
220
+ ],
221
+ triggerMaintenanceStatusChanged: "MaintenanceStatusChangedEnquiry",
222
+ };
223
+ exports.values = values;
@@ -0,0 +1,195 @@
1
+ const values = {
2
+ entityKey: "maintenancerequestFeedback",
3
+ serviceKey: "maintenanceFeedback",
4
+ updateKey: "jobsFeedback",
5
+ tableKeyJobTypes: "jobtypesFeedback",
6
+ tableKeyMaintenance: "maintenanceFeedback",
7
+ tableKeySupportTickets: "supportticketsFeedback",
8
+ tableNameJobTypes: "jobTypesFeedback",
9
+ tableNameMaintenance: "maintenanceFeedback",
10
+ tableNameSupportTickets: "supportticketsFeedback",
11
+ permissionMaintenanceTracking: "maintenanceTrackingFeedback",
12
+ permissionMaintenanceAssignment: "maintenanceAssignmentFeedback",
13
+ permissionMaintenanceTypes: "maintenanceTypesFeedback",
14
+ routeEntityPath: "/requestsHubFeedback/jobDetails/:id",
15
+ screenMaintenanceDetail: "requestDetailFeedback",
16
+ notificationMaintenanceJobAssigned: "MaintenanceJobAssignedFeedback",
17
+ notificationMaintenanceJobUnassigned: "MaintenanceJobUnassignedFeedback",
18
+ activityAddMaintenanceJob: "AddMaintenanceJobFeedback",
19
+ activityDeleteMaintenanceJob: "DeleteMaintenanceJobFeedback",
20
+ activityEditMaintenanceJob: "EditMaintenanceJobFeedback",
21
+ activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChangedFeedback",
22
+ activityAddMaintenanceNote: "AddMaintenanceNoteFeedback",
23
+ activityDeleteMaintenanceNote: "DeleteMaintenanceNoteFeedback",
24
+ activityEditMaintenanceNote: "EditMaintenanceNoteFeedback",
25
+ textJobEmailTitle: "Feedback Submission",
26
+ allowGeneralType: false,
27
+ defaultJobTypes: [
28
+ {
29
+ customFields: [
30
+ {
31
+ isTitle: false,
32
+ label: "What is the feedback about?",
33
+ mandatory: true,
34
+ type: "text",
35
+ },
36
+ {
37
+ isTitle: false,
38
+ label: "Feedback details",
39
+ mandatory: true,
40
+ placeHolder:
41
+ "Record specific details related to your feedback. Include dates, names, other relevant information in the order they happened",
42
+ type: "text",
43
+ },
44
+ {
45
+ isTitle: false,
46
+ label: "Desired outcome",
47
+ mandatory: false,
48
+ placeHolder:
49
+ "Describe the outcome you would like to see achieved as a result of the feedback you have provided.",
50
+ type: "text",
51
+ },
52
+ {
53
+ isTitle: false,
54
+ label: "Thanks for taking the time to share your feedback with us.",
55
+ mandatory: false,
56
+ type: "staticText",
57
+ },
58
+ ],
59
+ description:
60
+ "Use this form to provide general feedback that is not a specific complaint or compliment",
61
+ email: "feedback@plusscommunities.com",
62
+ hasCustomFields: true,
63
+ level: 1,
64
+ typeName: "General Feedback",
65
+ },
66
+ {
67
+ customFields: [
68
+ {
69
+ isTitle: false,
70
+ label: "What is the complaint about?",
71
+ mandatory: true,
72
+ type: "checkbox",
73
+ values: [
74
+ "An employee",
75
+ "Another community member",
76
+ "A specific incident",
77
+ "Service delivery",
78
+ "A facility",
79
+ "An Activity",
80
+ "Other",
81
+ ],
82
+ },
83
+ {
84
+ isTitle: false,
85
+ label: "Complaint details",
86
+ mandatory: true,
87
+ placeHolder:
88
+ "Please provide the details of your complaint in this section. Include dates, names, other relevant information in the order they happened",
89
+ type: "text",
90
+ },
91
+ {
92
+ isTitle: false,
93
+ label: "Action required",
94
+ mandatory: true,
95
+ placeHolder:
96
+ "Please describe what action, if any, you would like the organisation to take in relation to this matter",
97
+ type: "text",
98
+ },
99
+ {
100
+ isTitle: false,
101
+ label: "Have you raised this complaint previously",
102
+ mandatory: true,
103
+ type: "yn",
104
+ },
105
+ {
106
+ isTitle: false,
107
+ label:
108
+ "If yes, please provide details of who you complained to, when and how (phone, email, form)",
109
+ mandatory: false,
110
+ type: "text",
111
+ },
112
+ {
113
+ isTitle: false,
114
+ label:
115
+ "If you have any supporting documentation (e.g. emails, letters, receipts) for your complaint, please attach the files below. If you do not have the documentation right now, you can email us.",
116
+ mandatory: false,
117
+ type: "document",
118
+ },
119
+ {
120
+ isTitle: false,
121
+ label:
122
+ "Declaration . I declare that the information supplied by me is, to the best of my knowledge, true and correct. ",
123
+ mandatory: true,
124
+ type: "yn",
125
+ },
126
+ {
127
+ isTitle: false,
128
+ label:
129
+ "I agree that the information provided (except for demographic data) may, if necessary, be revealed to the organisation in correspondence or investigations concerning this complaint or referred to another authority for their appropriate action should the matter fall outside this department's jurisdiction",
130
+ mandatory: true,
131
+ type: "yn",
132
+ },
133
+ {
134
+ isTitle: false,
135
+ label:
136
+ "If your complaint is resolved after lodgement of this form, please advise us at as soon as possible.",
137
+ mandatory: false,
138
+ type: "staticText",
139
+ },
140
+ ],
141
+ description: "Use this form to provide a complaint to the organisation",
142
+ email: "example@plusscommunities.com",
143
+ hasCustomFields: true,
144
+ level: 1,
145
+ typeName: "Complaint",
146
+ },
147
+ {
148
+ customFields: [
149
+ {
150
+ isTitle: false,
151
+ label: "What is this compliment about?",
152
+ mandatory: true,
153
+ type: "multichoice",
154
+ values: [
155
+ "An employee",
156
+ "A facility",
157
+ "Another community member",
158
+ "A facility",
159
+ "A service",
160
+ "An activity",
161
+ "Other",
162
+ ],
163
+ },
164
+ {
165
+ isTitle: false,
166
+ label: "Compliment details",
167
+ mandatory: true,
168
+ placeHolder: "Please explain your compliment in detail",
169
+ type: "text",
170
+ },
171
+ {
172
+ isTitle: false,
173
+ label:
174
+ "Please describe what action, if any, you would like us to take in relation to this compliment",
175
+ mandatory: false,
176
+ type: "text",
177
+ },
178
+ {
179
+ isTitle: false,
180
+ label:
181
+ "Thanks for taking the time to record your compliment. It is always appreciated.",
182
+ mandatory: false,
183
+ type: "staticText",
184
+ },
185
+ ],
186
+ description: "Use this form to record a compliment",
187
+ email: "example@pluss.com",
188
+ hasCustomFields: true,
189
+ level: 1,
190
+ typeName: "Compliment",
191
+ },
192
+ ],
193
+ triggerMaintenanceStatusChanged: "MaintenanceStatusChangedFeedback",
194
+ };
195
+ exports.values = values;