feat: reschedule workflow added (#3996)
This commit is contained in:
1 parent
4308138170
commit
84cff3613a
10 files changed
+62
-50
No files matched your search
@@ -892,7 +892,8 @@ async function handler(req: NextApiRequest) {
|
||||
eventType.workflows,
|
||||
reqBody.smsReminderNumber as string | null,
|
||||
evt,
|
||||
evt.requiresConfirmation || false
|
||||
evt.requiresConfirmation || false,
|
||||
rescheduleUid ? true : false
|
||||
);
|
||||
// booking successful
|
||||
req.statusCode = 201;
|
||||
|
||||
@@ -943,6 +943,7 @@
|
||||
"workflows": "Workflows",
|
||||
"new_workflow_btn": "New Workflow",
|
||||
"add_new_workflow": "Add a new workflow",
|
||||
"reschedule_event_trigger": "when event is rescheduled",
|
||||
"trigger": "Trigger",
|
||||
"triggers": "Triggers",
|
||||
"action": "Action",
|
||||
|
||||
@@ -4,6 +4,7 @@ export const WORKFLOW_TRIGGER_EVENTS = [
|
||||
WorkflowTriggerEvents.BEFORE_EVENT,
|
||||
WorkflowTriggerEvents.EVENT_CANCELLED,
|
||||
WorkflowTriggerEvents.NEW_EVENT,
|
||||
WorkflowTriggerEvents.RESCHEDULE_EVENT,
|
||||
] as const;
|
||||
|
||||
export const WORKFLOW_ACTIONS = [
|
||||
|
||||
@@ -98,7 +98,8 @@ export const scheduleEmailReminder = async (
|
||||
|
||||
if (
|
||||
triggerEvent === WorkflowTriggerEvents.NEW_EVENT ||
|
||||
triggerEvent === WorkflowTriggerEvents.EVENT_CANCELLED
|
||||
triggerEvent === WorkflowTriggerEvents.EVENT_CANCELLED ||
|
||||
triggerEvent === WorkflowTriggerEvents.RESCHEDULE_EVENT
|
||||
) {
|
||||
try {
|
||||
await sgMail.send({
|
||||
|
||||
@@ -19,55 +19,57 @@ export const scheduleWorkflowReminders = async (
|
||||
})[],
|
||||
smsReminderNumber: string | null,
|
||||
evt: CalendarEvent,
|
||||
needsConfirmation: boolean
|
||||
needsConfirmation: boolean,
|
||||
isRescheduleEvent: boolean
|
||||
) => {
|
||||
if (workflows.length > 0 && !needsConfirmation) {
|
||||
workflows.forEach((workflowReference) => {
|
||||
if (workflowReference.workflow.steps.length > 0) {
|
||||
const workflow = workflowReference.workflow;
|
||||
if (
|
||||
workflow.trigger === WorkflowTriggerEvents.BEFORE_EVENT ||
|
||||
workflow.trigger === WorkflowTriggerEvents.NEW_EVENT
|
||||
) {
|
||||
workflow.steps.forEach(async (step) => {
|
||||
if (step.action === WorkflowActions.SMS_ATTENDEE || step.action === WorkflowActions.SMS_NUMBER) {
|
||||
const sendTo = step.action === WorkflowActions.SMS_ATTENDEE ? smsReminderNumber : step.sendTo;
|
||||
await scheduleSMSReminder(
|
||||
evt,
|
||||
sendTo,
|
||||
workflow.trigger,
|
||||
step.action,
|
||||
{
|
||||
time: workflow.time,
|
||||
timeUnit: workflow.timeUnit,
|
||||
},
|
||||
step.reminderBody || "",
|
||||
step.id,
|
||||
step.template
|
||||
);
|
||||
} else if (
|
||||
step.action === WorkflowActions.EMAIL_ATTENDEE ||
|
||||
step.action === WorkflowActions.EMAIL_HOST
|
||||
) {
|
||||
const sendTo =
|
||||
step.action === WorkflowActions.EMAIL_HOST ? evt.organizer.email : evt.attendees[0].email;
|
||||
scheduleEmailReminder(
|
||||
evt,
|
||||
workflow.trigger,
|
||||
step.action,
|
||||
{
|
||||
time: workflow.time,
|
||||
timeUnit: workflow.timeUnit,
|
||||
},
|
||||
sendTo,
|
||||
step.emailSubject || "",
|
||||
step.reminderBody || "",
|
||||
step.id,
|
||||
step.template
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (workflowReference.workflow.steps.length === 0) return;
|
||||
|
||||
const workflow = workflowReference.workflow;
|
||||
if (
|
||||
workflow.trigger === WorkflowTriggerEvents.BEFORE_EVENT ||
|
||||
(workflow.trigger === WorkflowTriggerEvents.NEW_EVENT && !isRescheduleEvent) ||
|
||||
(workflow.trigger === WorkflowTriggerEvents.RESCHEDULE_EVENT && isRescheduleEvent)
|
||||
) {
|
||||
workflow.steps.forEach(async (step) => {
|
||||
if (step.action === WorkflowActions.SMS_ATTENDEE || step.action === WorkflowActions.SMS_NUMBER) {
|
||||
const sendTo = step.action === WorkflowActions.SMS_ATTENDEE ? smsReminderNumber : step.sendTo;
|
||||
await scheduleSMSReminder(
|
||||
evt,
|
||||
sendTo,
|
||||
workflow.trigger,
|
||||
step.action,
|
||||
{
|
||||
time: workflow.time,
|
||||
timeUnit: workflow.timeUnit,
|
||||
},
|
||||
step.reminderBody || "",
|
||||
step.id,
|
||||
step.template
|
||||
);
|
||||
} else if (
|
||||
step.action === WorkflowActions.EMAIL_ATTENDEE ||
|
||||
step.action === WorkflowActions.EMAIL_HOST
|
||||
) {
|
||||
const sendTo =
|
||||
step.action === WorkflowActions.EMAIL_HOST ? evt.organizer.email : evt.attendees[0].email;
|
||||
scheduleEmailReminder(
|
||||
evt,
|
||||
workflow.trigger,
|
||||
step.action,
|
||||
{
|
||||
time: workflow.time,
|
||||
timeUnit: workflow.timeUnit,
|
||||
},
|
||||
sendTo,
|
||||
step.emailSubject || "",
|
||||
step.reminderBody || "",
|
||||
step.id,
|
||||
step.template
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -85,10 +85,11 @@ export const scheduleSMSReminder = async (
|
||||
}
|
||||
|
||||
if (message.length > 0 && reminderPhone) {
|
||||
//send SMS when event is booked/cancelled
|
||||
//send SMS when event is booked/cancelled/Reschdeuled
|
||||
if (
|
||||
triggerEvent === WorkflowTriggerEvents.NEW_EVENT ||
|
||||
triggerEvent === WorkflowTriggerEvents.EVENT_CANCELLED
|
||||
triggerEvent === WorkflowTriggerEvents.EVENT_CANCELLED ||
|
||||
triggerEvent === WorkflowTriggerEvents.RESCHEDULE_EVENT
|
||||
) {
|
||||
try {
|
||||
await twilio.sendSMS(reminderPhone, message);
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
-- AlterEnum
|
||||
ALTER TYPE "WorkflowTriggerEvents" ADD VALUE 'RESCHEDULE_EVENT';
|
||||
@@ -530,6 +530,7 @@ enum WorkflowTriggerEvents {
|
||||
BEFORE_EVENT
|
||||
EVENT_CANCELLED
|
||||
NEW_EVENT
|
||||
RESCHEDULE_EVENT
|
||||
}
|
||||
|
||||
enum WorkflowActions {
|
||||
|
||||
@@ -472,6 +472,7 @@ export const bookingsRouter = createProtectedRouter()
|
||||
updatedBooking.eventType.workflows,
|
||||
updatedBooking.smsReminderNumber,
|
||||
evtOfBooking,
|
||||
false,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"$CI",
|
||||
"$CLOSECOM_API_KEY",
|
||||
"$SENDGRID_API_KEY",
|
||||
"$SENDGRID_EMAIL",
|
||||
"$CRON_API_KEY",
|
||||
"$DAILY_API_KEY",
|
||||
"$DAILY_SCALE_PLAN",
|
||||
|
||||
Reference in new issue
Block a user