placementt-core 1.400.751 → 1.400.752
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/lib/constants.js +2 -3
- package/lib/constants.js.map +1 -1
- package/lib/emailSections.d.ts +4 -1
- package/lib/emailSections.js +205 -75
- package/lib/emailSections.js.map +1 -1
- package/lib/typeDefinitions.d.ts +3 -1
- package/lib/util.d.ts +6 -3
- package/lib/util.js +19 -14
- package/lib/util.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +2 -3
- package/src/emailSections.ts +235 -75
- package/src/typeDefinitions.ts +4 -1
- package/src/util.ts +20 -14
package/lib/emailSections.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sharedOpportunitiesForSchoolSection = exports.employerDatabaseSummarySection = exports.sharedOpportunitiesSection = exports.attendingEventsSection = exports.upcomingEventsSection = void 0;
|
|
6
|
+
exports.sharedOpportunitiesForSchoolSection = exports.employerDatabaseSummarySection = exports.sharedOpportunitiesSection = exports.attendingEventsSection = exports.upcomingEventsSection = exports.emailCampaignSectionDataFetcher = void 0;
|
|
7
|
+
const firestore_1 = require("firebase/firestore");
|
|
8
|
+
const firebaseQuery_1 = __importDefault(require("./firebase/firebaseQuery"));
|
|
9
|
+
const util_1 = require("./firebase/util");
|
|
4
10
|
const PRIMARY_COLOUR = "#397DF2";
|
|
5
11
|
function activityTypeLabel(type) {
|
|
6
12
|
const labels = {
|
|
@@ -16,15 +22,98 @@ function sectionStyles(color) {
|
|
|
16
22
|
return {
|
|
17
23
|
container: `margin: 16px 0; font-family: nunito, sans-serif;`,
|
|
18
24
|
title: `font-size: 16px; font-weight: bold; color: #333; margin: 0 0 8px 0; font-family: nunito, sans-serif;`,
|
|
19
|
-
table: `width: 100%; border-collapse: collapse; margin: 8px 0; font-family: nunito, sans-serif; font-size: 13px;`,
|
|
20
|
-
th: `background-color: ${color}; color: white; text-align: left; padding: 8px 12px; font-family: nunito, sans-serif; font-size: 13px;`,
|
|
21
|
-
td: `padding: 8px 12px; border-bottom: 1px solid #f0f0f0; font-family: nunito, sans-serif; font-size: 13px; color: #333;`,
|
|
22
|
-
tdAlt: `padding: 8px 12px; border-bottom: 1px solid #f0f0f0; background-color: #fafafa; font-family: nunito, sans-serif; font-size: 13px; color: #333;`,
|
|
23
25
|
footer: `font-size: 12px; color: #666; margin: 8px 0 0 0; font-family: nunito, sans-serif;`,
|
|
24
26
|
link: `color: ${color}; text-decoration: none;`,
|
|
25
27
|
emptyText: `font-family: nunito, sans-serif; color: #666; font-size: 13px; margin: 4px 0;`,
|
|
26
28
|
};
|
|
27
29
|
}
|
|
30
|
+
const emailCampaignSectionDataFetcher = async (sectionName, data) => {
|
|
31
|
+
const firebaseQuery = new firebaseQuery_1.default();
|
|
32
|
+
const oId = data.oId;
|
|
33
|
+
const primaryColor = data.primaryColor;
|
|
34
|
+
const today = (0, util_1.convertDate)(new Date(), "dbstring");
|
|
35
|
+
switch (sectionName) {
|
|
36
|
+
case "upcomingEventsSection": {
|
|
37
|
+
const eventsRaw = await firebaseQuery.getDocsWhere(["externalEvents"], [(0, firestore_1.where)("oId", "==", oId), (0, firestore_1.where)("startDate", ">=", today)]);
|
|
38
|
+
const events = Object.entries(eventsRaw).map(([id, e]) => ({
|
|
39
|
+
id,
|
|
40
|
+
title: e.name,
|
|
41
|
+
description: e.description,
|
|
42
|
+
startDate: (0, util_1.convertDate)(e.startDate, "visual") || e.startDate || "",
|
|
43
|
+
endDate: e.endDate ? (0, util_1.convertDate)(e.endDate, "visual") : undefined,
|
|
44
|
+
activityType: e.activityType || e.activityId || "other",
|
|
45
|
+
location: e.locality,
|
|
46
|
+
image: e.image,
|
|
47
|
+
}));
|
|
48
|
+
return exports.upcomingEventsSection.render({ placeholder: false, events: events, oId, primaryColor });
|
|
49
|
+
}
|
|
50
|
+
case "attendingEventsSection": {
|
|
51
|
+
const providerContactId = data.providerContactId;
|
|
52
|
+
const attendeesRaw = await firebaseQuery.getDocsWhere(["externalEventAttendees"], [(0, firestore_1.where)("providerContactId", "==", providerContactId), (0, firestore_1.where)("oId", "==", oId)]);
|
|
53
|
+
const events = (await Promise.all(Object.values(attendeesRaw).map(async (attendee) => {
|
|
54
|
+
const event = await firebaseQuery.getDocData(["externalEvents", attendee.eventId]);
|
|
55
|
+
if (!(event === null || event === void 0 ? void 0 : event.startDate) || (event.endDate && event.endDate < today))
|
|
56
|
+
return null;
|
|
57
|
+
return {
|
|
58
|
+
title: event.name,
|
|
59
|
+
description: event.description,
|
|
60
|
+
startDate: (0, util_1.convertDate)(event.startDate, "visual") || event.startDate,
|
|
61
|
+
endDate: event.endDate ? (0, util_1.convertDate)(event.endDate, "visual") : undefined,
|
|
62
|
+
activityType: event.activityType || event.activityId || "other",
|
|
63
|
+
location: event.locality,
|
|
64
|
+
};
|
|
65
|
+
}))).filter(Boolean);
|
|
66
|
+
return exports.attendingEventsSection.render({ placeholder: false, events: events, primaryColor });
|
|
67
|
+
}
|
|
68
|
+
case "sharedOpportunitiesSection": {
|
|
69
|
+
const providerContactId = data.providerContactId;
|
|
70
|
+
const oppsRaw = await firebaseQuery.getDocsWhere(["externalEventRequests"], [(0, firestore_1.where)("providerContactId", "==", providerContactId)]);
|
|
71
|
+
const opportunities = Object.entries(oppsRaw).map(([id, r]) => ({
|
|
72
|
+
id,
|
|
73
|
+
title: r.title || "",
|
|
74
|
+
description: r.description,
|
|
75
|
+
type: r.activityType,
|
|
76
|
+
created: r.created,
|
|
77
|
+
}));
|
|
78
|
+
return exports.sharedOpportunitiesSection.render({ placeholder: false, opportunities: opportunities, oId, primaryColor });
|
|
79
|
+
}
|
|
80
|
+
case "employerDatabaseSummarySection": {
|
|
81
|
+
const contactsRaw = await firebaseQuery.getDocsWhere(["providerContacts"], [(0, firestore_1.where)(`savedBy.${oId}.exists`, "==", true)]);
|
|
82
|
+
const contacts = Object.values(contactsRaw);
|
|
83
|
+
const sectors = new Set(contacts.map((c) => c.sector).filter(Boolean));
|
|
84
|
+
const consentedActivities = {};
|
|
85
|
+
contacts.forEach((c) => {
|
|
86
|
+
var _a;
|
|
87
|
+
const saved = (_a = c.savedBy) === null || _a === void 0 ? void 0 : _a[oId];
|
|
88
|
+
if (saved === null || saved === void 0 ? void 0 : saved.activities) {
|
|
89
|
+
saved.activities.forEach((activity) => {
|
|
90
|
+
consentedActivities[activity] = (consentedActivities[activity] || 0) + 1;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
const stats = {
|
|
95
|
+
totalContacts: contacts.length,
|
|
96
|
+
sectors: sectors.size,
|
|
97
|
+
consentedActivities,
|
|
98
|
+
};
|
|
99
|
+
return exports.employerDatabaseSummarySection.render({ placeholder: false, stats, primaryColor });
|
|
100
|
+
}
|
|
101
|
+
case "sharedOpportunitiesForSchoolSection": {
|
|
102
|
+
const oppsRaw = await firebaseQuery.getDocsWhere(["externalEventRequests"], [(0, firestore_1.where)("schools", "array-contains", oId)]);
|
|
103
|
+
const opportunities = Object.entries(oppsRaw).map(([id, r]) => ({
|
|
104
|
+
id,
|
|
105
|
+
title: r.title || "",
|
|
106
|
+
description: r.description,
|
|
107
|
+
type: r.activityType,
|
|
108
|
+
created: r.created,
|
|
109
|
+
}));
|
|
110
|
+
return exports.sharedOpportunitiesForSchoolSection.render({ placeholder: false, opportunities: opportunities, primaryColor });
|
|
111
|
+
}
|
|
112
|
+
default:
|
|
113
|
+
return "";
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
exports.emailCampaignSectionDataFetcher = emailCampaignSectionDataFetcher;
|
|
28
117
|
exports.upcomingEventsSection = {
|
|
29
118
|
id: "upcomingEvents",
|
|
30
119
|
title: "Upcoming Events",
|
|
@@ -34,10 +123,11 @@ exports.upcomingEventsSection = {
|
|
|
34
123
|
render: ({ placeholder, events, oId, primaryColor: pc }) => {
|
|
35
124
|
const color = pc || PRIMARY_COLOUR;
|
|
36
125
|
const s = sectionStyles(color);
|
|
126
|
+
const eventOId = oId;
|
|
37
127
|
const displayEvents = placeholder ? [
|
|
38
|
-
{ title: "Mock Interviews Day", startDate: "15 May 2025", activityType: "mockInterviews", location: "School Main Hall" },
|
|
39
|
-
{ title: "Annual Careers Fair", startDate: "22 May 2025", endDate: "23 May 2025", activityType: "workExperience", location: "Town Hall" },
|
|
40
|
-
{ title: "Mentoring Programme", startDate: "5 June 2025", activityType: "mentoring" },
|
|
128
|
+
{ title: "Mock Interviews Day", startDate: "15 May 2025", activityType: "mockInterviews", location: "School Main Hall", description: "Join us for a day of mock interview practice with our Year 11 students." },
|
|
129
|
+
{ title: "Annual Careers Fair", startDate: "22 May 2025", endDate: "23 May 2025", activityType: "workExperience", location: "Town Hall", description: "A two-day careers fair featuring employers from across the region." },
|
|
130
|
+
{ title: "Mentoring Programme", startDate: "5 June 2025", activityType: "mentoring", description: "Support students with one-to-one mentoring sessions over the summer term." },
|
|
41
131
|
{ title: "Workplace Visit Day", startDate: "12 June 2025", activityType: "workplaceVisits", location: "City Centre" },
|
|
42
132
|
] : (events || []);
|
|
43
133
|
if (!displayEvents.length)
|
|
@@ -59,16 +149,19 @@ exports.upcomingEventsSection = {
|
|
|
59
149
|
const dateStr = event.endDate && event.endDate !== event.startDate
|
|
60
150
|
? `${event.startDate} – ${event.endDate}`
|
|
61
151
|
: event.startDate;
|
|
62
|
-
const eventLink =
|
|
152
|
+
const eventLink = eventOId ? `https://careerthread.co.uk/publicEvents/${eventOId}` : "#";
|
|
63
153
|
const imgStyle = event.image
|
|
64
|
-
? `height:
|
|
65
|
-
: `height:
|
|
154
|
+
? `height:120px;background-image:url('${event.image}');background-size:cover;background-position:center;`
|
|
155
|
+
: `height:120px;background-color:${bgColor};`;
|
|
66
156
|
return `
|
|
67
157
|
<div style="border-radius:12px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,0.12);background:#ffffff;">
|
|
68
158
|
<div style="${imgStyle}"></div>
|
|
69
159
|
<div style="padding:12px 14px 14px;">
|
|
160
|
+
<p style="font-size:11px;font-weight:bold;color:${color};text-transform:uppercase;letter-spacing:0.5px;margin:0 0 4px 0;font-family:nunito,sans-serif;">${activityTypeLabel(event.activityType)}</p>
|
|
70
161
|
<p style="font-weight:bold;font-size:14px;margin:0 0 3px 0;font-family:nunito,sans-serif;color:#333;line-height:1.3;">${event.title}</p>
|
|
71
|
-
<p style="font-size:12px;color:#888;margin:0 0
|
|
162
|
+
<p style="font-size:12px;color:#888;margin:0 0 4px 0;font-family:nunito,sans-serif;">${dateStr}</p>
|
|
163
|
+
${event.location ? `<p style="font-size:12px;color:#888;margin:0 0 4px 0;font-family:nunito,sans-serif;">${event.location}</p>` : ""}
|
|
164
|
+
${event.description ? `<p style="font-size:12px;color:#666;margin:0 0 10px 0;font-family:nunito,sans-serif;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;">${event.description}</p>` : `<div style="margin-bottom:10px;"></div>`}
|
|
72
165
|
<a href="${eventLink}" style="display:block;background-color:${color};color:#ffffff;text-align:center;padding:9px 12px;border-radius:6px;text-decoration:none;font-size:13px;font-family:nunito,sans-serif;font-weight:bold;">View Event</a>
|
|
73
166
|
</div>
|
|
74
167
|
</div>`;
|
|
@@ -93,7 +186,7 @@ exports.upcomingEventsSection = {
|
|
|
93
186
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
|
|
94
187
|
${cardRows.join("")}
|
|
95
188
|
</table>
|
|
96
|
-
${
|
|
189
|
+
${eventOId ? `<p style="${s.footer}"><a href="https://careerthread.co.uk/publicEvents/${eventOId}" style="${s.link}">View all events and sign up →</a></p>` : ""}
|
|
97
190
|
</div>`;
|
|
98
191
|
},
|
|
99
192
|
};
|
|
@@ -107,8 +200,8 @@ exports.attendingEventsSection = {
|
|
|
107
200
|
const color = pc || PRIMARY_COLOUR;
|
|
108
201
|
const s = sectionStyles(color);
|
|
109
202
|
const displayEvents = placeholder ? [
|
|
110
|
-
{ title: "Mock Interviews Day", startDate: "15 May 2025", activityType: "mockInterviews" },
|
|
111
|
-
{ title: "Annual Careers Fair", startDate: "22 May 2025", activityType: "workExperience" },
|
|
203
|
+
{ title: "Mock Interviews Day", startDate: "15 May 2025", activityType: "mockInterviews", description: "Join us for a day of mock interview practice with our Year 11 students." },
|
|
204
|
+
{ title: "Annual Careers Fair", startDate: "22 May 2025", activityType: "workExperience", description: "A two-day careers fair featuring employers from across the region." },
|
|
112
205
|
] : (events || []);
|
|
113
206
|
if (!placeholder && !displayEvents.length) {
|
|
114
207
|
return `
|
|
@@ -117,24 +210,38 @@ exports.attendingEventsSection = {
|
|
|
117
210
|
<p style="${s.emptyText}">You are not currently signed up to any upcoming events. We would love to have you involved!</p>
|
|
118
211
|
</div>`;
|
|
119
212
|
}
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
213
|
+
const makeCard = (event) => {
|
|
214
|
+
const dateStr = event.endDate && event.endDate !== event.startDate
|
|
215
|
+
? `${event.startDate} – ${event.endDate}`
|
|
216
|
+
: event.startDate;
|
|
217
|
+
return `
|
|
218
|
+
<div style="border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,0.12);background:#ffffff;padding:16px;">
|
|
219
|
+
<p style="font-size:11px;font-weight:bold;color:${color};text-transform:uppercase;letter-spacing:0.5px;margin:0 0 6px 0;font-family:nunito,sans-serif;">${activityTypeLabel(event.activityType)}</p>
|
|
220
|
+
<p style="font-weight:bold;font-size:14px;margin:0 0 4px 0;font-family:nunito,sans-serif;color:#333;line-height:1.3;">${event.title}</p>
|
|
221
|
+
<p style="font-size:12px;color:#888;margin:0 0 4px 0;font-family:nunito,sans-serif;">${dateStr}</p>
|
|
222
|
+
${event.location ? `<p style="font-size:12px;color:#888;margin:0 0 4px 0;font-family:nunito,sans-serif;">${event.location}</p>` : ""}
|
|
223
|
+
${event.description ? `<p style="font-size:12px;color:#666;margin:0;font-family:nunito,sans-serif;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;">${event.description}</p>` : ""}
|
|
224
|
+
</div>`;
|
|
225
|
+
};
|
|
226
|
+
const cardRows = [];
|
|
227
|
+
for (let i = 0; i < displayEvents.length; i += 2) {
|
|
228
|
+
const second = displayEvents[i + 1];
|
|
229
|
+
cardRows.push(`
|
|
230
|
+
<tr>
|
|
231
|
+
<td class="att-col" style="width:50%;vertical-align:top;padding:0 6px 16px 0;">
|
|
232
|
+
${makeCard(displayEvents[i])}
|
|
233
|
+
</td>
|
|
234
|
+
<td class="att-col" style="width:50%;vertical-align:top;padding:0 0 16px 6px;">
|
|
235
|
+
${second ? makeCard(second) : ""}
|
|
236
|
+
</td>
|
|
237
|
+
</tr>`);
|
|
238
|
+
}
|
|
126
239
|
return `
|
|
127
240
|
<div style="${s.container}">
|
|
241
|
+
<style>@media(max-width:600px){.att-col{width:100%!important;display:block!important;padding:0 0 12px 0!important;}}</style>
|
|
128
242
|
<p style="${s.title}">Your Upcoming Events</p>
|
|
129
|
-
<table style="
|
|
130
|
-
|
|
131
|
-
<tr>
|
|
132
|
-
<th style="${s.th}">Event</th>
|
|
133
|
-
<th style="${s.th}">Date</th>
|
|
134
|
-
<th style="${s.th}">Type</th>
|
|
135
|
-
</tr>
|
|
136
|
-
</thead>
|
|
137
|
-
<tbody>${rows}</tbody>
|
|
243
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
|
|
244
|
+
${cardRows.join("")}
|
|
138
245
|
</table>
|
|
139
246
|
</div>`;
|
|
140
247
|
},
|
|
@@ -148,6 +255,7 @@ exports.sharedOpportunitiesSection = {
|
|
|
148
255
|
render: ({ placeholder, opportunities, oId, primaryColor: pc }) => {
|
|
149
256
|
const color = pc || PRIMARY_COLOUR;
|
|
150
257
|
const s = sectionStyles(color);
|
|
258
|
+
const eventOId = oId;
|
|
151
259
|
const displayOps = placeholder ? [
|
|
152
260
|
{ title: "Mock Interview Sessions", description: "Offering 10 mock interview slots for Year 11 students", type: "mockInterviews" },
|
|
153
261
|
{ title: "Workplace Visit", description: "Office tour for up to 30 students", type: "workplaceVisits" },
|
|
@@ -158,14 +266,14 @@ exports.sharedOpportunitiesSection = {
|
|
|
158
266
|
<div style="${s.container}">
|
|
159
267
|
<p style="${s.title}">Share an Opportunity</p>
|
|
160
268
|
<p style="${s.emptyText}">We would love to hear from you! You can share work experience placements, mock interview sessions, workplace visits, and more with our students.</p>
|
|
161
|
-
${
|
|
269
|
+
${eventOId ? `<p style="font-family:nunito,sans-serif;margin:12px 0 0 0;"><a href="https://careerthread.co.uk/requestEvent/${eventOId}" style="background-color:${color};color:white;padding:8px 16px;border-radius:20px;text-decoration:none;font-size:14px;font-family:nunito,sans-serif;">Submit an Opportunity</a></p>` : ""}
|
|
162
270
|
</div>`;
|
|
163
271
|
}
|
|
164
272
|
const makeCard = (op) => `
|
|
165
273
|
<div style="border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,0.12);background:#ffffff;padding:16px;">
|
|
166
274
|
<p style="font-size:11px;font-weight:bold;color:${color};text-transform:uppercase;letter-spacing:0.5px;margin:0 0 6px 0;font-family:nunito,sans-serif;">${op.type ? activityTypeLabel(op.type) : "Opportunity"}</p>
|
|
167
275
|
<p style="font-weight:bold;font-size:14px;margin:0 0 6px 0;font-family:nunito,sans-serif;color:#333;line-height:1.3;">${op.title}</p>
|
|
168
|
-
|
|
276
|
+
${op.description ? `<p style="font-size:12px;color:#888;margin:0;font-family:nunito,sans-serif;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;">${op.description}</p>` : ""}
|
|
169
277
|
</div>`;
|
|
170
278
|
const cardRows = [];
|
|
171
279
|
for (let i = 0; i < displayOps.length; i += 2) {
|
|
@@ -188,7 +296,7 @@ exports.sharedOpportunitiesSection = {
|
|
|
188
296
|
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
|
|
189
297
|
${cardRows.join("")}
|
|
190
298
|
</table>
|
|
191
|
-
${
|
|
299
|
+
${eventOId ? `<p style="${s.footer}"><a href="https://careerthread.co.uk/requestEvent/${eventOId}" style="${s.link}">Submit another opportunity →</a></p>` : ""}
|
|
192
300
|
</div>`;
|
|
193
301
|
},
|
|
194
302
|
};
|
|
@@ -218,37 +326,52 @@ exports.employerDatabaseSummarySection = {
|
|
|
218
326
|
mentoring: "Mentoring",
|
|
219
327
|
other: "Other",
|
|
220
328
|
};
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
329
|
+
const activityEntries = Object.entries(displayStats.consentedActivities);
|
|
330
|
+
const activityCardRows = [];
|
|
331
|
+
for (let i = 0; i < activityEntries.length; i += 2) {
|
|
332
|
+
const [actA, countA] = activityEntries[i];
|
|
333
|
+
const second = activityEntries[i + 1];
|
|
334
|
+
activityCardRows.push(`
|
|
335
|
+
<tr>
|
|
336
|
+
<td class="act-col" style="width:50%;vertical-align:top;padding:0 6px 12px 0;">
|
|
337
|
+
<div style="border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.10);background:#ffffff;padding:14px 16px;text-align:center;">
|
|
338
|
+
<div style="font-size:22px;font-weight:bold;color:${color};font-family:nunito,sans-serif;">${countA}</div>
|
|
339
|
+
<div style="font-size:12px;color:#555;font-family:nunito,sans-serif;margin-top:4px;">${activityLabels[actA] || actA}</div>
|
|
340
|
+
</div>
|
|
341
|
+
</td>
|
|
342
|
+
<td class="act-col" style="width:50%;vertical-align:top;padding:0 0 12px 6px;">
|
|
343
|
+
${second ? `
|
|
344
|
+
<div style="border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,0.10);background:#ffffff;padding:14px 16px;text-align:center;">
|
|
345
|
+
<div style="font-size:22px;font-weight:bold;color:${color};font-family:nunito,sans-serif;">${second[1]}</div>
|
|
346
|
+
<div style="font-size:12px;color:#555;font-family:nunito,sans-serif;margin-top:4px;">${activityLabels[second[0]] || second[0]}</div>
|
|
347
|
+
</div>` : ""}
|
|
348
|
+
</td>
|
|
349
|
+
</tr>`);
|
|
350
|
+
}
|
|
226
351
|
return `
|
|
227
352
|
<div style="${s.container}">
|
|
353
|
+
<style>@media(max-width:600px){.act-col{width:100%!important;display:block!important;padding:0 0 8px 0!important;}}</style>
|
|
228
354
|
<p style="${s.title}">Your Employer Database</p>
|
|
229
|
-
<table
|
|
355
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;margin:8px 0;">
|
|
230
356
|
<tr>
|
|
231
|
-
<td
|
|
232
|
-
<div style="
|
|
233
|
-
|
|
357
|
+
<td class="act-col" style="width:50%;vertical-align:top;padding:0 6px 12px 0;">
|
|
358
|
+
<div style="padding:16px;background-color:${color};color:white;text-align:center;border-radius:10px;">
|
|
359
|
+
<div style="font-size:28px;font-weight:bold;font-family:nunito,sans-serif;">${displayStats.totalContacts}</div>
|
|
360
|
+
<div style="font-size:12px;font-family:nunito,sans-serif;opacity:0.9;margin-top:4px;">Total Contacts</div>
|
|
361
|
+
</div>
|
|
234
362
|
</td>
|
|
235
|
-
<td style="width:
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
363
|
+
<td class="act-col" style="width:50%;vertical-align:top;padding:0 0 12px 6px;">
|
|
364
|
+
<div style="padding:16px;background-color:${color};color:white;text-align:center;border-radius:10px;">
|
|
365
|
+
<div style="font-size:28px;font-weight:bold;font-family:nunito,sans-serif;">${displayStats.sectors}</div>
|
|
366
|
+
<div style="font-size:12px;font-family:nunito,sans-serif;opacity:0.9;margin-top:4px;">Sectors Represented</div>
|
|
367
|
+
</div>
|
|
239
368
|
</td>
|
|
240
369
|
</tr>
|
|
241
370
|
</table>
|
|
242
|
-
${
|
|
243
|
-
<p style="font-size:
|
|
244
|
-
<table style="
|
|
245
|
-
|
|
246
|
-
<tr>
|
|
247
|
-
<th style="${s.th}">Activity</th>
|
|
248
|
-
<th style="${s.th}">Consented Employers</th>
|
|
249
|
-
</tr>
|
|
250
|
-
</thead>
|
|
251
|
-
<tbody>${consentRows}</tbody>
|
|
371
|
+
${activityCardRows.length ? `
|
|
372
|
+
<p style="font-size:14px;font-weight:bold;font-family:nunito,sans-serif;margin:8px 0 4px 0;color:#333;">Consented to Activities</p>
|
|
373
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
|
|
374
|
+
${activityCardRows.join("")}
|
|
252
375
|
</table>` : ""}
|
|
253
376
|
</div>`;
|
|
254
377
|
},
|
|
@@ -256,16 +379,16 @@ exports.employerDatabaseSummarySection = {
|
|
|
256
379
|
exports.sharedOpportunitiesForSchoolSection = {
|
|
257
380
|
id: "sharedOpportunitiesForSchool",
|
|
258
381
|
title: "Opportunities Shared With Your School",
|
|
259
|
-
description: "A
|
|
382
|
+
description: "A grid of employer opportunities that have been shared with this school.",
|
|
260
383
|
emailInput: [{ type: "heading-one", children: [{ text: "Employer Opportunities" }] }, { type: "paragraph", children: [{ text: "See below the opportunities that employers have shared with your students. Click on an opportunity to see more." }] }],
|
|
261
384
|
forTemplates: ["schoolsEmailCampaign"],
|
|
262
385
|
render: ({ placeholder, opportunities, primaryColor: pc }) => {
|
|
263
386
|
const color = pc || PRIMARY_COLOUR;
|
|
264
387
|
const s = sectionStyles(color);
|
|
265
388
|
const displayOps = placeholder ? [
|
|
266
|
-
{ title: "Mock Interview Day", description: "Financial services firm offering interview practice", type: "mockInterviews" },
|
|
267
|
-
{ title: "Finance Workplace Visit", description: "Tour of a London bank for up to 25 students", type: "workplaceVisits" },
|
|
268
|
-
{ title: "Year 10 Work Experience", description: "1-week placement at a local engineering firm", type: "workExperience" },
|
|
389
|
+
{ title: "Mock Interview Day", description: "Financial services firm offering interview practice for Year 11 students ahead of their GCSEs.", type: "mockInterviews" },
|
|
390
|
+
{ title: "Finance Workplace Visit", description: "Tour of a London bank for up to 25 students, with Q&A from senior staff.", type: "workplaceVisits" },
|
|
391
|
+
{ title: "Year 10 Work Experience", description: "1-week placement at a local engineering firm working alongside qualified engineers.", type: "workExperience" },
|
|
269
392
|
] : (opportunities || []);
|
|
270
393
|
if (!placeholder && !displayOps.length) {
|
|
271
394
|
return `
|
|
@@ -274,24 +397,31 @@ exports.sharedOpportunitiesForSchoolSection = {
|
|
|
274
397
|
<p style="${s.emptyText}">No opportunities have been shared with your school yet.</p>
|
|
275
398
|
</div>`;
|
|
276
399
|
}
|
|
277
|
-
const
|
|
278
|
-
<
|
|
279
|
-
<
|
|
280
|
-
<
|
|
281
|
-
|
|
282
|
-
</
|
|
400
|
+
const makeCard = (op) => `
|
|
401
|
+
<div style="border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,0.12);background:#ffffff;padding:16px;">
|
|
402
|
+
<p style="font-size:11px;font-weight:bold;color:${color};text-transform:uppercase;letter-spacing:0.5px;margin:0 0 6px 0;font-family:nunito,sans-serif;">${op.type ? activityTypeLabel(op.type) : "Opportunity"}</p>
|
|
403
|
+
<p style="font-weight:bold;font-size:14px;margin:0 0 6px 0;font-family:nunito,sans-serif;color:#333;line-height:1.3;">${op.title}</p>
|
|
404
|
+
${op.description ? `<p style="font-size:12px;color:#888;margin:0;font-family:nunito,sans-serif;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;">${op.description}</p>` : ""}
|
|
405
|
+
</div>`;
|
|
406
|
+
const cardRows = [];
|
|
407
|
+
for (let i = 0; i < displayOps.length; i += 2) {
|
|
408
|
+
const second = displayOps[i + 1];
|
|
409
|
+
cardRows.push(`
|
|
410
|
+
<tr>
|
|
411
|
+
<td class="sch-opp-col" style="width:50%;vertical-align:top;padding:0 6px 16px 0;">
|
|
412
|
+
${makeCard(displayOps[i])}
|
|
413
|
+
</td>
|
|
414
|
+
<td class="sch-opp-col" style="width:50%;vertical-align:top;padding:0 0 16px 6px;">
|
|
415
|
+
${second ? makeCard(second) : ""}
|
|
416
|
+
</td>
|
|
417
|
+
</tr>`);
|
|
418
|
+
}
|
|
283
419
|
return `
|
|
284
420
|
<div style="${s.container}">
|
|
421
|
+
<style>@media(max-width:600px){.sch-opp-col{width:100%!important;display:block!important;padding:0 0 12px 0!important;}}</style>
|
|
285
422
|
<p style="${s.title}">Opportunities Shared With Your School</p>
|
|
286
|
-
<table style="
|
|
287
|
-
|
|
288
|
-
<tr>
|
|
289
|
-
<th style="${s.th}">Opportunity</th>
|
|
290
|
-
<th style="${s.th}">Description</th>
|
|
291
|
-
<th style="${s.th}">Type</th>
|
|
292
|
-
</tr>
|
|
293
|
-
</thead>
|
|
294
|
-
<tbody>${rows}</tbody>
|
|
423
|
+
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse:collapse;">
|
|
424
|
+
${cardRows.join("")}
|
|
295
425
|
</table>
|
|
296
426
|
</div>`;
|
|
297
427
|
},
|
package/lib/emailSections.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailSections.js","sourceRoot":"","sources":["../src/emailSections.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emailSections.js","sourceRoot":"","sources":["../src/emailSections.ts"],"names":[],"mappings":"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"}
|
package/lib/typeDefinitions.d.ts
CHANGED
|
@@ -755,6 +755,7 @@ export type InstituteData = {
|
|
|
755
755
|
publicEventPage?: boolean;
|
|
756
756
|
discount?: string;
|
|
757
757
|
package: string;
|
|
758
|
+
marketingEmails: string[];
|
|
758
759
|
careersHubLinks?: {
|
|
759
760
|
[oId: string]: {
|
|
760
761
|
exists: boolean;
|
|
@@ -1347,6 +1348,7 @@ export type EmailSectionConfig = {
|
|
|
1347
1348
|
forTemplates: string[];
|
|
1348
1349
|
render: (props: EmailSectionRenderProps) => string;
|
|
1349
1350
|
};
|
|
1351
|
+
export type EmailSectionNames = "upcomingEventsSection" | "attendingEventsSection" | "sharedOpportunitiesSection" | "employerDatabaseSummarySection" | "sharedOpportunitiesForSchoolSection";
|
|
1350
1352
|
export type EmailTemplateConfig = {
|
|
1351
1353
|
description: string;
|
|
1352
1354
|
params: string[];
|
|
@@ -1363,7 +1365,7 @@ export type EmailTemplateConfig = {
|
|
|
1363
1365
|
link: string;
|
|
1364
1366
|
}[];
|
|
1365
1367
|
type: "workflow" | "feedback" | "event" | "campaign" | "database";
|
|
1366
|
-
sections?:
|
|
1368
|
+
sections?: EmailSectionNames[];
|
|
1367
1369
|
};
|
|
1368
1370
|
export type EmailCampaign = {
|
|
1369
1371
|
id: string;
|
package/lib/util.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WhereFilterOp } from "firebase/firestore";
|
|
2
|
-
import { AlumniConversation, DataViewerSelectionBackend, DataViewerSelectionWeb, EmailTemplateConfig, ExternalEvent, ExternalEventAttendee, ExternalEventCareersSchool, ExternalEventStudent, FlagCodes, InstituteData, ProviderContactData, StudentPlacementData, UserData, WorkflowStage, YearScoreData } from "./typeDefinitions";
|
|
2
|
+
import { AlumniConversation, DataViewerSelectionBackend, DataViewerSelectionWeb, EmailSectionNames, EmailTemplateConfig, ExternalEvent, ExternalEventAttendee, ExternalEventCareersSchool, ExternalEventStudent, FlagCodes, InstituteData, ProviderContactData, StudentPlacementData, UserData, WorkflowStage, YearScoreData } from "./typeDefinitions";
|
|
3
3
|
import { Descendant } from "slate";
|
|
4
4
|
type PlacementFlagCodeParams = {
|
|
5
5
|
placement: StudentPlacementData;
|
|
@@ -25,7 +25,7 @@ export declare const getMostRecentAlumniMessage: (conversation: AlumniConversati
|
|
|
25
25
|
delivered: "blocked" | "pending" | true;
|
|
26
26
|
id: string;
|
|
27
27
|
} | null;
|
|
28
|
-
export declare function buildEmailHTML({ preheader, title, salutation, body, primaryColor, primaryButton, secondaryButton, primaryImage, designatedStaffEmail, organisationName, params, data, sectionData }: {
|
|
28
|
+
export declare function buildEmailHTML({ preheader, title, salutation, body, primaryColor, primaryButton, secondaryButton, primaryImage, designatedStaffEmail, organisationName, params, data, sectionData, emailSectionRenderer }: {
|
|
29
29
|
preheader: string;
|
|
30
30
|
title: string;
|
|
31
31
|
salutation?: string;
|
|
@@ -51,7 +51,10 @@ export declare function buildEmailHTML({ preheader, title, salutation, body, pri
|
|
|
51
51
|
[key: string]: unknown;
|
|
52
52
|
};
|
|
53
53
|
};
|
|
54
|
-
|
|
54
|
+
emailSectionRenderer?: (sectionName: EmailSectionNames, data: {
|
|
55
|
+
[key: string]: unknown;
|
|
56
|
+
}) => Promise<string>;
|
|
57
|
+
}): Promise<string>;
|
|
55
58
|
export declare const getWeightsForOES: (years: number) => {
|
|
56
59
|
weights: number[];
|
|
57
60
|
sum: number;
|
package/lib/util.js
CHANGED
|
@@ -178,7 +178,7 @@ const getMostRecentAlumniMessage = (conversation) => {
|
|
|
178
178
|
return mostRecent || null; // Return most recent or null if none found
|
|
179
179
|
};
|
|
180
180
|
exports.getMostRecentAlumniMessage = getMostRecentAlumniMessage;
|
|
181
|
-
function buildEmailHTML({ preheader, title, salutation, body, primaryColor = constants_1.PRIMARY_COLOUR, primaryButton, secondaryButton, primaryImage = "https://firebasestorage.googleapis.com/v0/b/placementt-dfa17.appspot.com/o/public%2FCareerThreadLogoForEmail.png?alt=media&token=046b5555-cd79-4fc9-bc89-90395e3fa351v", designatedStaffEmail, organisationName, params, data, sectionData }) {
|
|
181
|
+
async function buildEmailHTML({ preheader, title, salutation, body, primaryColor = constants_1.PRIMARY_COLOUR, primaryButton, secondaryButton, primaryImage = "https://firebasestorage.googleapis.com/v0/b/placementt-dfa17.appspot.com/o/public%2FCareerThreadLogoForEmail.png?alt=media&token=046b5555-cd79-4fc9-bc89-90395e3fa351v", designatedStaffEmail, organisationName, params, data, sectionData, emailSectionRenderer }) {
|
|
182
182
|
const serialiseSlate = (nodes) => {
|
|
183
183
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
184
|
return nodes.map((n) => {
|
|
@@ -222,7 +222,7 @@ function buildEmailHTML({ preheader, title, salutation, body, primaryColor = con
|
|
|
222
222
|
};
|
|
223
223
|
const makeButtonHTML = (url, title, color) => `<div style="text-align:center;padding:20px 0;"><a href="${url}" style="background-color:${color};border:1px solid #ffffff;border-radius:30px;color:#ffffff;display:inline-block;font-size:16px;font-weight:normal;padding:12px 40px;text-align:center;text-decoration:none;font-family:nunito,sans-serif;">${title}</a><div style="font-family:inherit;text-align:center;font-size:12px;color:#666;margin-top:4px;">Or go to <a href="${url}" style="color:#666;">${url}</a></div></div>`;
|
|
224
224
|
const makeSecondaryButtonHTML = (url, title) => `<div style="text-align:center;padding:10px 0;"><a href="${url}" style="display:inline-block;font-weight:normal;color:#aeaeae;text-decoration:none;font-family:nunito,sans-serif;">${title}</a></div>`;
|
|
225
|
-
const getEmailContentFromTemplate = (template, params, data) => {
|
|
225
|
+
const getEmailContentFromTemplate = async (template, params, data) => {
|
|
226
226
|
let finalBody = typeof template === "string" ? template : serialiseSlate(template);
|
|
227
227
|
const allParams = [...params.params, ...Object.keys(data)];
|
|
228
228
|
// Replace data params
|
|
@@ -261,18 +261,23 @@ function buildEmailHTML({ preheader, title, salutation, body, primaryColor = con
|
|
|
261
261
|
});
|
|
262
262
|
// Resolve sections
|
|
263
263
|
if (params.sections) {
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
};
|
|
264
|
+
const sectionIds = new Set();
|
|
265
|
+
let m;
|
|
266
|
+
const divRe = /<div[^>]*>\s*\{\{section:([^}]+)\}\}\s*<\/div>/g;
|
|
267
|
+
const inlineRe = /\{\{section:([^}]+)\}\}/g;
|
|
268
|
+
while ((m = divRe.exec(finalBody)) !== null)
|
|
269
|
+
sectionIds.add(m[1]);
|
|
270
|
+
while ((m = inlineRe.exec(finalBody)) !== null)
|
|
271
|
+
sectionIds.add(m[1]);
|
|
272
|
+
const resolvedMap = {};
|
|
273
|
+
await Promise.all([...sectionIds].map(async (id) => {
|
|
274
|
+
if (emailSectionRenderer) {
|
|
275
|
+
resolvedMap[id] = await emailSectionRenderer(id, { ...data, primaryColor });
|
|
276
|
+
}
|
|
277
|
+
}));
|
|
273
278
|
finalBody = finalBody
|
|
274
|
-
.replace(/<div[^>]*>\s*\{\{section:([^}]+)\}\}\s*<\/div>/g, (_, id) =>
|
|
275
|
-
.replace(/\{\{section:([^}]+)\}\}/g, (_, id) =>
|
|
279
|
+
.replace(/<div[^>]*>\s*\{\{section:([^}]+)\}\}\s*<\/div>/g, (_, id) => { var _a; return (_a = resolvedMap[id]) !== null && _a !== void 0 ? _a : ""; })
|
|
280
|
+
.replace(/\{\{section:([^}]+)\}\}/g, (_, id) => { var _a; return (_a = resolvedMap[id]) !== null && _a !== void 0 ? _a : ""; });
|
|
276
281
|
}
|
|
277
282
|
return finalBody;
|
|
278
283
|
};
|
|
@@ -280,7 +285,7 @@ function buildEmailHTML({ preheader, title, salutation, body, primaryColor = con
|
|
|
280
285
|
let formattedPrimaryButton = primaryButton;
|
|
281
286
|
let formattedSecondaryButton = secondaryButton;
|
|
282
287
|
if (params && data) {
|
|
283
|
-
formattedBody = getEmailContentFromTemplate(body, params, data);
|
|
288
|
+
formattedBody = await getEmailContentFromTemplate(body, params, data);
|
|
284
289
|
}
|
|
285
290
|
const emailHeadAndStylesHTML = `
|
|
286
291
|
<head>
|