feat: reschedule workflow added (#3996)
This commit is contained in:
parent
4308138170
commit
84cff3613a
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue
Block a user