feat: reschedule workflow added (#3996)

This commit is contained in:
Udit Takkar 2022-09-01 04:39:34 +05:30 committed by GitHub
parent 4308138170
commit 84cff3613a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 62 additions and 50 deletions

View File

@ -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;

View File

@ -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",

View File

@ -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 = [

View File

@ -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({

View File

@ -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
);
}
});
}
});
}

View File

@ -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);

View File

@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "WorkflowTriggerEvents" ADD VALUE 'RESCHEDULE_EVENT';

View File

@ -530,6 +530,7 @@ enum WorkflowTriggerEvents {
BEFORE_EVENT
EVENT_CANCELLED
NEW_EVENT
RESCHEDULE_EVENT
}
enum WorkflowActions {

View File

@ -472,6 +472,7 @@ export const bookingsRouter = createProtectedRouter()
updatedBooking.eventType.workflows,
updatedBooking.smsReminderNumber,
evtOfBooking,
false,
false
);
}

View File

@ -196,6 +196,7 @@
"$CI",
"$CLOSECOM_API_KEY",
"$SENDGRID_API_KEY",
"$SENDGRID_EMAIL",
"$CRON_API_KEY",
"$DAILY_API_KEY",
"$DAILY_SCALE_PLAN",