diff --git a/config/default.js b/config/default.js
index e3dc3cf8..53f2d5f0 100644
--- a/config/default.js
+++ b/config/default.js
@@ -179,6 +179,8 @@ module.exports = {
INTERVIEW_INVITATION_SENDER_EMAIL: process.env.INTERVIEW_INVITATION_SENDER_EMAIL || 'talent@topcoder.com',
// the URL where TaaS App is hosted
TAAS_APP_URL: process.env.TAAS_APP_URL || 'https://platform.topcoder-dev.com/taas/myteams',
+ // the URL where TaaS App Earn is hosted
+ TAAS_APP_EARN_URL: process.env.TAAS_APP_EARN_URL || 'https://platform.topcoder-dev.com/earn/my-gigs',
// environment variables for Payment Service
ROLE_ID_SUBMITTER: process.env.ROLE_ID_SUBMITTER || '732339e7-8e30-49d7-9198-cccf9451e221',
TYPE_ID_TASK: process.env.TYPE_ID_TASK || 'ecd58c69-238f-43a4-a4bb-d172719b9f31',
@@ -253,6 +255,30 @@ module.exports = {
NOTIFICATION_SENDER_EMAIL: process.env.NOTIFICATION_SENDER_EMAIL || 'noreply@topcoder.com',
// the email notification sendgrid template id
NOTIFICATION_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of candidate was viewed by client
+ NOTIFICATION_CLIENT_VIEWED_PROFILE_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_CLIENT_VIEWED_PROFILE_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of candidates are available for review
+ NOTIFICATION_REVIEW_CANDIDATES_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_REVIEW_CANDIDATES_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of interview coming up for customer
+ NOTIFICATION_CUSTOMER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_CUSTOMER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of interview coming up for member
+ NOTIFICATION_MEMBER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_MEMBER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of interview completed
+ NOTIFICATION_INTERVIEW_COMPLETE_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_INTERVIEW_COMPLETE_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of post interview action reminder
+ NOTIFICATION_POST_INTERVIEW_ACTION_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_POST_INTERVIEW_ACTION_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of upcoming resource booking expiration
+ NOTIFICATION_UPCOMING_RESOURCE_BOOKING_EXPIRATION_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_UPCOMING_RESOURCE_BOOKING_EXPIRATION_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of new team created
+ NOTIFICATION_NEW_TEAM_CREATED_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_NEW_TEAM_CREATED_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of new job added to existing project
+ NOTIFICATION_NEW_JOB_ADDED_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_NEW_JOB_ADDED_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of resource placed
+ NOTIFICATION_RESOURCE_BOOKING_PLACED_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_RESOURCE_BOOKING_PLACED_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of interviews overlapping
+ NOTIFICATION_INTERVIEWS_OVERLAPPING_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_INTERVIEWS_OVERLAPPING_SENDGRID_TEMPLATE_ID,
+ // the email notification sendgrid template id of job candidate selected
+ NOTIFICATION_JOB_CANDIDATE_SELECTED_SENDGRID_TEMPLATE_ID: process.env.NOTIFICATION_JOB_CANDIDATE_SELECTED_SENDGRID_TEMPLATE_ID,
// frequency of cron checking for available candidates for review
CRON_CANDIDATE_REVIEW: process.env.CRON_CANDIDATE_REVIEW || '00 00 13 * * 0-6',
// frequency of cron checking for coming up interviews
diff --git a/config/email_template.config.js b/config/email_template.config.js
index 524d54f1..fc5d4118 100644
--- a/config/email_template.config.js
+++ b/config/email_template.config.js
@@ -112,88 +112,88 @@ module.exports = {
*/
notificationEmailTemplates: {
'taas.notification.job-candidate-resume-viewed': {
- subject: 'Topcoder - Client View Resume for Job {{jobName}}',
+ subject: 'Client has viewed your Topcoder profile',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_CLIENT_VIEWED_PROFILE_SENDGRID_TEMPLATE_ID
},
'taas.notification.candidates-available-for-review': {
- subject: 'Topcoder - {{teamName}} has job candidates available for review',
+ subject: 'You have candidates to review',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_REVIEW_CANDIDATES_SENDGRID_TEMPLATE_ID
},
'taas.notification.interview-coming-up-host': {
- subject: 'Topcoder - Interview Coming Up: {{jobTitle}} with {{guestFullName}}',
+ subject: 'Interview reminder: Your Topcoder interview is coming up',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_CUSTOMER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID
},
'taas.notification.interview-coming-up-guest': {
- subject: 'Topcoder - Interview Coming Up: {{jobTitle}} with {{hostFullName}}',
+ subject: 'Reminder: Interview coming up',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_MEMBER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID
},
'taas.notification.interview-awaits-resolution': {
- subject: 'Topcoder - Interview Awaits Resolution: {{jobTitle}} for {{guestFullName}}',
+ subject: 'Interview complete - here’s what to do next',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_INTERVIEW_COMPLETE_SENDGRID_TEMPLATE_ID
},
'taas.notification.post-interview-action-required': {
- subject: 'Topcoder - Candidate Action Required in {{teamName}} for {{numCandidates}} candidates',
+ subject: 'Reminder: Take action to reserve your talent',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_POST_INTERVIEW_ACTION_SENDGRID_TEMPLATE_ID
},
'taas.notification.resource-booking-expiration': {
- subject: 'Topcoder - Resource Booking Expiring in {{teamName}} for {{numResourceBookings}} resource bookings',
+ subject: 'Reminder: 3 weeks left in your Angular Developer’s gig',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_UPCOMING_RESOURCE_BOOKING_EXPIRATION_SENDGRID_TEMPLATE_ID
},
'taas.notification.team-created': {
- subject: 'Topcoder - New Team {{teamName}} Created',
+ subject: 'Your Topcoder talent request confirmation',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_NEW_TEAM_CREATED_SENDGRID_TEMPLATE_ID
},
'taas.notification.job-created': {
- subject: 'Topcoder - New Job {{jobTitle}} Created in Team {{teamName}}',
+ subject: 'New job added to your Topcoder team',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_NEW_JOB_ADDED_SENDGRID_TEMPLATE_ID
},
'taas.notification.interviews-overlapping': {
subject: 'Topcoder - Interviews overlapping',
body: '',
recipients: config.NOTIFICATION_OPS_EMAILS,
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_INTERVIEWS_OVERLAPPING_SENDGRID_TEMPLATE_ID
},
'taas.notification.job-candidate-selected': {
subject: 'Topcoder - Job Candidate {{userHandle}} Selected for {{jobTitle}} in Team {{teamName}}',
body: '',
recipients: config.NOTIFICATION_OPS_EMAILS,
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_JOB_CANDIDATE_SELECTED_SENDGRID_TEMPLATE_ID
},
'taas.notification.resource-booking-placed': {
- subject: 'Topcoder - Resource Booking {{userHandle}} Placed for Job {{jobTitle}} in Team {{teamName}}',
+ subject: 'Your Topcoder talent is confirmed! How to start working with them.',
body: '',
recipients: [],
from: config.NOTIFICATION_SENDER_EMAIL,
- sendgridTemplateId: config.NOTIFICATION_SENDGRID_TEMPLATE_ID
+ sendgridTemplateId: config.NOTIFICATION_RESOURCE_BOOKING_PLACED_SENDGRID_TEMPLATE_ID
}
}
}
diff --git a/data/candidate-was-viewed-by-client-email-template.html b/data/candidate-was-viewed-by-client-email-template.html
new file mode 100644
index 00000000..e99d2fb7
--- /dev/null
+++ b/data/candidate-was-viewed-by-client-email-template.html
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Update on Your Application |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Client Has Viewed Your Profile
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Thanks for applying for a Topcoder Gig. This is an update to let you know that the client has viewed your profile. We will notify you about next steps.
+
+
+
+ To check the status of all your Gig Work applications, log in to your Topcoder account and head to My Gigs → Open Applications.
+
+
+
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/candidates-are-available-for-review-email-template.html b/data/candidates-are-available-for-review-email-template.html
new file mode 100644
index 00000000..64fd2478
--- /dev/null
+++ b/data/candidates-are-available-for-review-email-template.html
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Your Candidates |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Here are Your Candidates Awaiting Review
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ You’ve matched with talent! Use the link below to review your candidates. You can schedule an interview if you want to move forward, or decline if they’re not a match.
+
+
+
+
+ Job title |
+ No of resource bookings |
+ Candidates |
+ Review |
+
+ {{#each teamJobs}}
+
+
+ {{this.title}}
+ |
+ {{this.nResourceBookings}} |
+
+
+ {{#each this.jobCandidates}}
+ - {{this.handle}}
+ {{/each}}
+
+ |
+
+ Link
+ |
+
+ {{/each}}
+
+
+
+ Review Your Candidates
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/customer-interview-coming-up-email-template.html b/data/customer-interview-coming-up-email-template.html
new file mode 100644
index 00000000..440462c1
--- /dev/null
+++ b/data/customer-interview-coming-up-email-template.html
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Interview Coming Up |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Reminder: You Have an Upcoming Interview
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Ohhh the butterflies before a first date. Just kidding, this is totally professional. But meeting someone who could potentially make your life a lot easier is very exciting.
+
+
+ This is your reminder that you have an interview coming up with an awesome Topcoder freelance candidate. Click the link below to review their resume and profile before the big event.
+
+
+
+
+ Job title |
+ Candidate Handle |
+ Interviews |
+ Attendees |
+ Date and Time |
+
+
+
+ {{this.jobTitle}}
+ |
+ {{this.handle}} |
+
+ Link |
+
+
+ {{#each this.attendees}}
+ - {{this}}
+ {{/each}}
+
+ |
+ {{this.startTime}} |
+
+
+
+
+ Candidate resume and profile
+ Can’t wait to hear how it goes,
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/interview-completed-email-template.html b/data/interview-completed-email-template.html
new file mode 100644
index 00000000..5b4e0b97
--- /dev/null
+++ b/data/interview-completed-email-template.html
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Next Steps with Your Candidate |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Interview Complete, What To Do Next
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Thanks for taking the time to interview your candidate. We hope it went well and that they are a perfect fit. Now it’s time to take action:
+
+
+ Use the link below to Accept, Decline, or schedule another interview. Don’t wait—Topcoder talent is in high-demand:
+
+
+
+
+ Job title |
+ Candidate Handle |
+ Date and Time |
+ Attendees |
+ Interviews |
+
+
+
+ {{this.jobTitle}}
+ |
+ {{this.handle}} |
+ {{this.startTime}} |
+
+
+ {{#each this.attendees}}
+ - {{this}}
+ {{/each}}
+
+ |
+
+ Link |
+
+
+
+
+ Take action on your candidates
+
+
+ Any issues with this interview? Please contact us here.
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/interviews-overlapping-email-template.html b/data/interviews-overlapping-email-template.html
new file mode 100644
index 00000000..14d9ec44
--- /dev/null
+++ b/data/interviews-overlapping-email-template.html
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Topcoder Gig Work |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ {{description}}
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ Team Name |
+ Job Title |
+ Job Candidate |
+ Interview Start Date |
+ Interview End Date |
+
+ {{#each interviews}}
+
+ {{this.teamName}} |
+ {{this.jobTitle}} |
+ {{this.candidateUserHandle}} |
+ {{this.startTime}} |
+ {{this.endTime}} |
+
+ {{/each}}
+
+
+
+ If you have any questions about this process or if you encounter any issues coordinating your availability, you may reply to this email or send a separate email to our Gig Work operations team.
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/job-candidate-selected-email-template.html b/data/job-candidate-selected-email-template.html
new file mode 100644
index 00000000..86dc733c
--- /dev/null
+++ b/data/job-candidate-selected-email-template.html
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Topcoder Gig Work |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ {{description}}
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ Team Name |
+ Job Title |
+ Job Start Date |
+ Job Duration |
+ Job Candidate |
+
+
+ {{teamName}} |
+ {{jobTitle}} |
+ {{jobStartDate}} |
+ {{jobDuration}} |
+ {{userHandle}} |
+
+
+
+
+ If you have any questions about this process or if you encounter any issues coordinating your availability, you may reply to this email or send a separate email to our Gig Work operations team.
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/members-interview-coming-up-email-template.html b/data/members-interview-coming-up-email-template.html
new file mode 100644
index 00000000..d24ab4f5
--- /dev/null
+++ b/data/members-interview-coming-up-email-template.html
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Reminder: Interview with Client |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ You Have an Upcoming Interview
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ You have an interview coming up for a Topcoder gig! See the job and get the meeting link here.
+
+
+ If you’re signed in to your Topcoder account, you can also find this information on the My Gigs Applications page.
+
+
+
+ Good luck at the interview!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/new-job-added-to-existing-project-email-template.html b/data/new-job-added-to-existing-project-email-template.html
new file mode 100644
index 00000000..d72610f2
--- /dev/null
+++ b/data/new-job-added-to-existing-project-email-template.html
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ New Job Added to Your Team
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ We’ve received your request for a new role on your team. We’ll notify you when you have a new candidate to review. You can add more roles to your team any time.
+
+
+
+
+ Team Name |
+ Job Title |
+ Job Start Date |
+ Job Duration |
+
+
+ {{teamName}} |
+ {{jobTitle}} |
+ {{jobStartDate}} |
+ {{jobDuration}} |
+
+
+
+
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/new-team-created-email-template.html b/data/new-team-created-email-template.html
new file mode 100644
index 00000000..8ecfd7b1
--- /dev/null
+++ b/data/new-team-created-email-template.html
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Your Request is Confirmed |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Talent Request Confirmed
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Congratulations! You’ve successfully submitted your talent request to Topcoder. We’ll notify you when you have a new candidate to review. You can add more roles to your team at any time.
+
+
+
+
+ Job Title |
+ Job Start Date |
+ Job Duration |
+
+ {{#each jobList}}
+
+ {{this.title}} |
+ {{this.startDate}} |
+ {{this.duration}} |
+
+ {{/each}}
+
+
+
+ Thanks for your request. We look forward to bringing you awesome freelance talent.
+
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/notifications-email-template.html b/data/notifications-email-template.html
deleted file mode 100644
index f0da558d..00000000
--- a/data/notifications-email-template.html
+++ /dev/null
@@ -1,492 +0,0 @@
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-  |
-
- |
- |
-
-
-
- |
-
-
-
- |
- |
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
- Topcoder Gig Work |
-
-
-
- |
-
-
-
-
-
-
-
- |
-  |
- |
-
- {{description}}
- |
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
- {{#if notificationType.candidatesAvailableForReview}}
-
-
- Job title |
- No of resource bookings |
- Candidates |
- Review |
-
- {{#each teamJobs}}
-
-
- {{this.title}}
- |
- {{this.nResourceBookings}} |
-
-
- {{#each this.jobCandidates}}
- - {{this.handle}}
- {{/each}}
-
- |
-
- Link
- |
-
- {{/each}}
-
- {{/if}}
-
- {{#if notificationType.interviewComingUpForHost}}
-
-
- Job title |
- Candidate Handle |
- Interviews |
- Attendees |
- Date and Time |
-
-
-
- {{this.jobTitle}}
- |
- {{this.handle}} |
-
- Link |
-
-
- {{#each this.attendees}}
- - {{this}}
- {{/each}}
-
- |
- {{this.startTime}} |
-
-
- {{/if}}
-
- {{#if notificationType.interviewComingUpForGuest}}
-
- {{/if}}
-
- {{#if notificationType.interviewCompleted}}
-
-
- Job title |
- Candidate Handle |
- Date and Time |
- Attendees |
- Interviews |
-
-
-
- {{this.jobTitle}}
- |
- {{this.handle}} |
- {{this.startTime}} |
-
-
- {{#each this.attendees}}
- - {{this}}
- {{/each}}
-
- |
-
- Link |
-
-
- {{/if}}
-
- {{#if notificationType.postInterviewCandidateAction}}
-
-
- Job title |
- Handle |
- Date and Time |
- Attendees |
- Interviews |
-
- {{#each teamInterviews}}
-
-
- {{this.jobTitle}}
- |
- {{this.handle}} |
- {{this.startTime}} |
-
-
- {{#each this.attendees}}
- - {{this}}
- {{/each}}
-
- |
-
- Link |
-
- {{/each}}
-
- {{/if}}
-
- {{#if notificationType.upcomingResourceBookingExpiration}}
- Team Name:
- {{teamName}}
-
-
- Job title |
- Resource Bookings Handle |
- End Date |
-
- {{#each teamResourceBookings}}
-
-
- {{this.jobTitle}}
- |
-
- {{this.handle}}
- |
- {{this.endDate}} |
-
- {{/each}}
-
- {{/if}}
-
- {{#if notificationType.jobCandidateResumeViewed}}
- Hi {{jobCandidateUserHandle}}.
-
- Your resume for the job "{{jobName}}" has been viewed by the client.
- {{/if}}
-
- {{#if notificationType.newTeamCreated}}
- Team:
- {{teamName}}
-
-
- Job Title |
- Job Start Date |
- Job Duration |
-
- {{#each jobList}}
-
- {{this.title}} |
- {{this.startDate}} |
- {{this.duration}} |
-
- {{/each}}
-
- {{/if}}
- {{#if notificationType.newJobCreated}}
-
-
- Team Name |
- Job Title |
- Job Start Date |
- Job Duration |
-
-
- {{teamName}} |
- {{jobTitle}} |
- {{jobStartDate}} |
- {{jobDuration}} |
-
-
- {{/if}}
- {{#if notificationType.overlappingInterview}}
-
-
- Team Name |
- Job Title |
- Job Candidate |
- Interview Start Date |
- Interview End Date |
-
- {{#each interviews}}
-
- {{this.teamName}} |
- {{this.jobTitle}} |
- {{this.candidateUserHandle}} |
- {{this.startTime}} |
- {{this.endTime}} |
-
- {{/each}}
-
- {{/if}}
- {{#if notificationType.candidateSelected}}
-
-
- Team Name |
- Job Title |
- Job Start Date |
- Job Duration |
- Job Candidate |
-
-
- {{teamName}} |
- {{jobTitle}} |
- {{jobStartDate}} |
- {{jobDuration}} |
- {{userHandle}} |
-
-
- {{/if}}
- {{#if notificationType.resourceBookingPlaced}}
-
-
- Team Name |
- Job Title |
- Resource Booking Handle |
- Resource Booking Start Date |
- Resource Booking End Date |
-
-
- {{teamName}} |
- {{jobTitle}} |
- {{userHandle}} |
- {{startDate}} |
- {{endDate}} |
-
-
- {{/if}}
-
-
- If you have any questions about this process or if you encounter any issues coordinating your availability, you may reply to this email or send a separate email to our Gig Work operations team.
-
- Thanks!
- The Topcoder Team
-
- |
-
-
-
-
- |
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
- |
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
- |
-
-
-
- |
-
-
-
-
-
-
- |
-
-
-
- 201 S Capitol Ave #1100 |
-
-
-
- Indianapolis, IN 46225 United States |
-
-
-
- |
-
-
-
- ●●● |
-
-
-
- |
-
-
-
-
-
- Topcoder System Information:
-
- InterviewType: {{xai_template}} |
-
-
-
- |
- |
-
-
-
-
-
- |
-
-
-
-
diff --git a/data/post-interview-action-reminder-email-template.html b/data/post-interview-action-reminder-email-template.html
new file mode 100644
index 00000000..7165f5f4
--- /dev/null
+++ b/data/post-interview-action-reminder-email-template.html
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Reminder: Ghosting Is Not Cool |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Take Action on This Candidate
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Use the link below to Accept, Decline, or schedule another interview with your candidate. This person might have an offer on another gig, and is awaiting your response to make a decision. Please do this now:
+
+
+
+
+ Job title |
+ Handle |
+ Date and Time |
+ Attendees |
+ Interviews |
+
+ {{#each teamInterviews}}
+
+
+ {{this.jobTitle}}
+ |
+ {{this.handle}} |
+ {{this.startTime}} |
+
+
+ {{#each this.attendees}}
+ - {{this}}
+ {{/each}}
+
+ |
+
+ Link |
+
+ {{/each}}
+
+
+
+ Take action on your candidates
+
+
+ Any issues? Please contact us here.
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/resource-placed-email-template.html b/data/resource-placed-email-template.html
new file mode 100644
index 00000000..4137f41b
--- /dev/null
+++ b/data/resource-placed-email-template.html
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ Get Excited |
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Your Topcoder Talent is Confirmed
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Pop the metaphorical champagne. Your Topcoder talent is officially confirmed! This person is super excited to work with you. Here are the details.
+
+
+
+
+ Team Name |
+ Job Title |
+ Resource Booking Handle |
+ Resource Booking Start Date |
+ Resource Booking End Date |
+
+
+ {{teamName}} |
+ {{jobTitle}} |
+ {{userHandle}} |
+ {{startDate}} |
+ {{endDate}} |
+
+
+
+
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/data/upcoming-resource-booking-expiration-email-template.html b/data/upcoming-resource-booking-expiration-email-template.html
new file mode 100644
index 00000000..46b3ae37
--- /dev/null
+++ b/data/upcoming-resource-booking-expiration-email-template.html
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+ |
+
+
+
+ |
+
+
+
+ |
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+ |
+  |
+ |
+
+ Work End Date Approaching
+ |
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ Good things can’t last forever, and your freelancer’s work End Date is approaching. Want to continue working with them? Request an extension here by clicking on the Actions menu and selecting “Request an Extension”.
+
+
+ To check the end date for any talent on your team, log in to your account and head to your Teams page.
+
+
+
+
+ Job title |
+ Resource Bookings Handle |
+ End Date |
+
+ {{#each teamResourceBookings}}
+
+
+ {{this.jobTitle}}
+ |
+
+ {{this.handle}}
+ |
+ {{this.endDate}} |
+
+ {{/each}}
+
+
+
+
+ Thanks!
+ The Topcoder Team
+
+ |
+
+ |
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+ 201 S Capitol Ave #1100 |
+
+
+
+ Indianapolis, IN 46225 United States |
+
+
+
+ |
+
+
+
+ ●●● |
+
+
+
+ |
+
+
+
+
+
+ Topcoder System Information:
+
+ InterviewType: {{xai_template}} |
+
+
+
+ |
+ |
+
+
+
+
+
+ |
+
+
+
+
diff --git a/scripts/demo-email-notifications/README.md b/scripts/demo-email-notifications/README.md
index e55e275d..3284b1fa 100644
--- a/scripts/demo-email-notifications/README.md
+++ b/scripts/demo-email-notifications/README.md
@@ -10,13 +10,25 @@ This script does 2 things:
1. Config scheduler to run more often so we don't have to wait to long for triggering notification, like every minute:
```sh
- CRON_CANDIDATE_REVIEW=0 */1 * * * *
+2CRON_CANDIDATE_REVIEW=0 */1 * * * *
CRON_INTERVIEW_COMING_UP=0 */1 * * * *
CRON_INTERVIEW_COMPLETED=0 */1 * * * *
CRON_POST_INTERVIEW=0 */1 * * * *
CRON_UPCOMING_RESOURCE_BOOKING=0 */1 * * * *
INTERVIEW_COMING_UP_MATCH_WINDOW=PT1M
INTERVIEW_COMPLETED_MATCH_WINDOW=PT1M
+ NOTIFICATION_CLIENT_VIEWED_PROFILE_SENDGRID_TEMPLATE_ID=1
+ NOTIFICATION_REVIEW_CANDIDATES_SENDGRID_TEMPLATE_ID=2
+ NOTIFICATION_CUSTOMER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID=3
+ NOTIFICATION_MEMBER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID=4
+ NOTIFICATION_INTERVIEW_COMPLETE_SENDGRID_TEMPLATE_ID=5
+ NOTIFICATION_POST_INTERVIEW_ACTION_SENDGRID_TEMPLATE_ID=6
+ NOTIFICATION_UPCOMING_RESOURCE_BOOKING_EXPIRATION_SENDGRID_TEMPLATE_ID=7
+ NOTIFICATION_NEW_TEAM_CREATED_SENDGRID_TEMPLATE_ID=8
+ NOTIFICATION_NEW_JOB_ADDED_SENDGRID_TEMPLATE_ID=9
+ NOTIFICATION_RESOURCE_BOOKING_PLACED_SENDGRID_TEMPLATE_ID=10
+ NOTIFICATION_INTERVIEWS_OVERLAPPING_SENDGRID_TEMPLATE_ID=11
+ NOTIFICATION_JOB_CANDIDATE_SELECTED_SENDGRID_TEMPLATE_ID=12
```
2. Config `SLACK_WEBHOOK_URL` env, if you want to send slack notifications
diff --git a/scripts/demo-email-notifications/index.js b/scripts/demo-email-notifications/index.js
index 7e5b19c0..6c5021e6 100644
--- a/scripts/demo-email-notifications/index.js
+++ b/scripts/demo-email-notifications/index.js
@@ -16,7 +16,20 @@ const localLogger = {
info: message => logger.info({ component: 'render email content', context: 'test', message })
}
-const template = handlebars.compile(fs.readFileSync('./data/notifications-email-template.html', 'utf8'))
+const templateFileMap = {
+ [config.NOTIFICATION_CLIENT_VIEWED_PROFILE_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/candidate-was-viewed-by-client-email-template.html', 'utf8')),
+ [config.NOTIFICATION_REVIEW_CANDIDATES_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/candidates-are-available-for-review-email-template.html', 'utf8')),
+ [config.NOTIFICATION_CUSTOMER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/customer-interview-coming-up-email-template.html', 'utf8')),
+ [config.NOTIFICATION_MEMBER_INTERVIEW_COMING_UP_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/members-interview-coming-up-email-template.html', 'utf8')),
+ [config.NOTIFICATION_INTERVIEW_COMPLETE_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/interview-completed-email-template.html', 'utf8')),
+ [config.NOTIFICATION_POST_INTERVIEW_ACTION_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/post-interview-action-reminder-email-template.html', 'utf8')),
+ [config.NOTIFICATION_UPCOMING_RESOURCE_BOOKING_EXPIRATION_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/upcoming-resource-booking-expiration-email-template.html', 'utf8')),
+ [config.NOTIFICATION_NEW_TEAM_CREATED_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/new-team-created-email-template.html', 'utf8')),
+ [config.NOTIFICATION_NEW_JOB_ADDED_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/new-job-added-to-existing-project-email-template.html', 'utf8')),
+ [config.NOTIFICATION_INTERVIEWS_OVERLAPPING_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/interviews-overlapping-email-template.html', 'utf8')),
+ [config.NOTIFICATION_JOB_CANDIDATE_SELECTED_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/job-candidate-selected-email-template.html', 'utf8')),
+ [config.NOTIFICATION_RESOURCE_BOOKING_PLACED_SENDGRID_TEMPLATE_ID]: handlebars.compile(fs.readFileSync('./data/resource-placed-email-template.html', 'utf8'))
+}
/**
* Reset notification records
@@ -71,7 +84,7 @@ async function initConsumer () {
}
if (message.payload.notifications) {
_.forEach(_.filter(message.payload.notifications, ['serviceId', 'email']), (notification) => {
- const email = template(notification.details.data)
+ const email = templateFileMap[notification.details.sendgridTemplateId](notification.details.data)
fs.writeFileSync(`./out/${notification.details.data.subject}-${Date.now()}.html`, email)
})
for (const notification of _.filter(message.payload.notifications, ['serviceId', 'slack'])) {
diff --git a/src/eventHandlers/InterviewEventHandler.js b/src/eventHandlers/InterviewEventHandler.js
index 034c1a8f..22b0d44e 100644
--- a/src/eventHandlers/InterviewEventHandler.js
+++ b/src/eventHandlers/InterviewEventHandler.js
@@ -108,11 +108,7 @@ async function checkOverlapping (payload) {
recipients: (template.recipients || []).map(email => ({ email })),
data: {
subject: template.subject,
- interviews,
- notificationType: {
- overlappingInterview: true
- },
- description: 'Overlapping Job Candidate Interviews'
+ interviews
},
sendgridTemplateId: template.sendgridTemplateId,
version: 'v3'
diff --git a/src/eventHandlers/JobCandidateEventHandler.js b/src/eventHandlers/JobCandidateEventHandler.js
index 2e389879..6ea679d3 100644
--- a/src/eventHandlers/JobCandidateEventHandler.js
+++ b/src/eventHandlers/JobCandidateEventHandler.js
@@ -165,11 +165,7 @@ async function sendJobCandidateSelectedNotification (payload) {
jobStartDate: helper.formatDateEDT(job.startDate),
userHandle: user.handle,
jobUrl,
- rcrmJobUrl,
- notificationType: {
- candidateSelected: true
- },
- description: 'Job Candidate Selected'
+ rcrmJobUrl
}
data.subject = helper.substituteStringByObject(data.subject, data)
const emailData = {
diff --git a/src/eventHandlers/JobEventHandler.js b/src/eventHandlers/JobEventHandler.js
index f736502c..c92c1920 100644
--- a/src/eventHandlers/JobEventHandler.js
+++ b/src/eventHandlers/JobEventHandler.js
@@ -91,11 +91,7 @@ async function sendNotifications (payload) {
jobTitle: payload.value.title,
jobURL: `${config.TAAS_APP_URL}/${project.id}/positions/${payload.value.id}`,
jobDuration: payload.value.duration,
- jobStartDate: helper.formatDateEDT(payload.value.startDate),
- notificationType: {
- newJobCreated: true
- },
- description: 'New Job Created'
+ jobStartDate: helper.formatDateEDT(payload.value.startDate)
}
data.subject = helper.substituteStringByObject(data.subject, data)
diff --git a/src/eventHandlers/ResourceBookingEventHandler.js b/src/eventHandlers/ResourceBookingEventHandler.js
index de4f125e..7b20427a 100644
--- a/src/eventHandlers/ResourceBookingEventHandler.js
+++ b/src/eventHandlers/ResourceBookingEventHandler.js
@@ -97,11 +97,7 @@ async function sendPlacedNotifications (payload) {
jobUrl,
userHandle: user.handle,
startDate: resourceBooking.startDate,
- endDate: resourceBooking.endDate,
- notificationType: {
- resourceBookingPlaced: true
- },
- description: 'Resource Booking is Placed'
+ endDate: resourceBooking.endDate
}
data.subject = helper.substituteStringByObject(data.subject, data)
const emailData = {
diff --git a/src/eventHandlers/TeamEventHandler.js b/src/eventHandlers/TeamEventHandler.js
index 985ffc61..3fd0a775 100644
--- a/src/eventHandlers/TeamEventHandler.js
+++ b/src/eventHandlers/TeamEventHandler.js
@@ -24,11 +24,7 @@ async function sendNotificationEmail (payload) {
duration: j.duration,
startDate: helper.formatDateEDT(j.startDate),
jobUrl: `${config.TAAS_APP_URL}/${payload.project.id}/positions/${j.id}`
- })),
- notificationType: {
- newTeamCreated: true
- },
- description: 'New Team Created'
+ }))
}
data.subject = helper.substituteStringByObject(data.subject, data)
diff --git a/src/services/JobCandidateService.js b/src/services/JobCandidateService.js
index 29f28d88..724fc368 100644
--- a/src/services/JobCandidateService.js
+++ b/src/services/JobCandidateService.js
@@ -381,10 +381,7 @@ async function downloadJobCandidateResume (currentUser, id) {
data: {
jobCandidateUserHandle: handle,
jobName: job.title,
- description: 'Client Viewed Resume',
- notificationType: {
- jobCandidateResumeViewed: true
- }
+ applicationUrl: `${config.TAAS_APP_EARN_URL}?status=Active%20Gigs`
}
})
diff --git a/src/services/NotificationsSchedulerService.js b/src/services/NotificationsSchedulerService.js
index 133553d1..4bdc92dc 100644
--- a/src/services/NotificationsSchedulerService.js
+++ b/src/services/NotificationsSchedulerService.js
@@ -90,6 +90,7 @@ async function getDataForInterview (interview, jobCandidate, job) {
const guestName = _.isEmpty(interview.guestNames) ? '' : interview.guestNames[0]
const startTime = interview.startTimestamp ? helper.formatDateTimeEDT(interview.startTimestamp) : ''
const jobUrl = `${config.TAAS_APP_URL}/${job.projectId}/positions/${job.id}`
+ const applicationUrl = `${config.TAAS_APP_EARN_URL}?status=Active%20Gigs`
return {
jobTitle: job.title,
@@ -101,6 +102,7 @@ async function getDataForInterview (interview, jobCandidate, job) {
startTime: startTime,
duration: interview.duration,
interviewLink,
+ applicationUrl,
jobUrl
}
}
@@ -174,11 +176,7 @@ async function sendCandidatesAvailableNotifications () {
recipients: projectTeamRecipients,
data: {
teamName: project.name,
- teamJobs,
- notificationType: {
- candidatesAvailableForReview: true
- },
- description: 'Candidates are available for review'
+ teamJobs
}
})
@@ -242,13 +240,7 @@ async function sendInterviewComingUpNotifications () {
sendNotification({}, {
template: 'taas.notification.interview-coming-up-host',
recipients: [{ email: interview.hostEmail }],
- data: {
- ...data,
- notificationType: {
- interviewComingUpForHost: true
- },
- description: 'Interview Coming Up'
- }
+ data
})
sentHostCount++
@@ -261,13 +253,7 @@ async function sendInterviewComingUpNotifications () {
sendNotification({}, {
template: 'taas.notification.interview-coming-up-guest',
recipients: interview.guestEmails.map((email) => ({ email })),
- data: {
- ...data,
- notificationType: {
- interviewComingUpForGuest: true
- },
- description: 'Interview Coming Up'
- }
+ data
})
sentGuestCount++
@@ -327,13 +313,7 @@ async function sendInterviewCompletedNotifications () {
sendNotification({}, {
template: 'taas.notification.interview-awaits-resolution',
recipients: [{ email: interview.hostEmail }],
- data: {
- ...data,
- notificationType: {
- interviewCompleted: true
- },
- description: 'Interview Completed'
- }
+ data
})
sentCount++
@@ -425,11 +405,7 @@ async function sendPostInterviewActionNotifications () {
data: {
teamName: project.name,
numCandidates,
- teamInterviews,
- notificationType: {
- postInterviewCandidateAction: true
- },
- description: 'Post Interview Candidate Action Reminder'
+ teamInterviews
}
}, webNotifications)
@@ -528,11 +504,7 @@ async function sendResourceBookingExpirationNotifications () {
teamName: project.name,
numResourceBookings,
teamResourceBookings,
- notificationType: {
- upcomingResourceBookingExpiration: true
- },
- teamUrl,
- description: 'Upcoming Resource Booking Expiration'
+ teamUrl
}
}, [webData])