add: more commits

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-07-03 21:40:24 +08:00
parent 1d12f04967
commit a572c1e25f
17 changed files with 476 additions and 302 deletions
@@ -0,0 +1,59 @@
/***********************************************************************************************************************************************************************
* File Name: notification_template_enrichers.data.js
* Type of Program: Data / Registry
* Description: Admin-edited notification templates are plain text — no
* conditionals or expressions allowed. Any type that used to
* branch on data in JS (e.g. task_overdue's singular/plural
* wording) gets that branch precomputed here into flat
* placeholder keys BEFORE substitution, so the stored title/
* message only ever needs straight {{key}} swaps.
* Mirrors data/email_template_enrichers.data.js.
* Author: Kenneth Obsequio (@lash0000)
* Date Created: Jul. 3, 2026
***********************************************************************************************************************************************************************/
const { fmtDate } = require('../utils/datetime.util');
const ENRICHERS = {
task_overdue: (data) => ({
...data,
task_word: Number(data.count) === 1 ? 'task was' : 'tasks were',
}),
user_task_overdue: (data) => ({
...data,
task_label: Number(data.count) === 1 ? '1 task has' : `${data.count} tasks have`,
}),
task_reminder: (data) => ({
...data,
deadline: fmtDate(data.deadline),
}),
welcome: (data) => {
const greeting = data.accType === 'admin'
? 'Welcome, Administrator!'
: data.accType === 'staff'
? 'Welcome to the Philproperties team!'
: 'Welcome to Philproperties!';
return {
...data,
greeting,
group_suffix: data.groupName ? ` You have been added to ${data.groupName}.` : '',
};
},
assessment_updated: (data) => ({
...data,
assessmentTitle: data.assessmentTitle || 'Course Assessment',
courseTitle: data.courseTitle || 'your course',
}),
tier_expired: (data) => ({
...data,
planLabel: data.label ?? data.tier,
}),
};
const enrichNotificationData = (type, data = {}) => (ENRICHERS[type] ? ENRICHERS[type](data) : data);
module.exports = { enrichNotificationData };