diff --git a/connect/events-config.js b/connect/events-config.js index 460cd47..dcf1128 100644 --- a/connect/events-config.js +++ b/connect/events-config.js @@ -8,8 +8,12 @@ const PROJECT_ROLE_OWNER = 'owner'; const PROJECT_ROLE_CUSTOMER = 'customer'; const PROJECT_ROLE_COPILOT = 'copilot'; const PROJECT_ROLE_MANAGER = 'manager'; +const PROJECT_ROLE_PROGRAM_MANAGER = 'program_manager'; +const PROJECT_ROLE_SOLUTION_ARCHITECT = 'solution_architect'; +const PROJECT_ROLE_PROJECT_MANAGER = 'project_manager'; const PROJECT_ROLE_MEMBER = 'member'; const PROJECT_ROLE_ACCOUNT_MANAGER = 'account_manager'; +const PROJECT_ROLE_ACCOUNT_EXECUTIVE = 'account_executive'; // project member role rules const PROJECT_ROLE_RULES = { @@ -17,17 +21,26 @@ const PROJECT_ROLE_RULES = { [PROJECT_ROLE_CUSTOMER]: { role: 'customer' }, [PROJECT_ROLE_COPILOT]: { role: 'copilot' }, [PROJECT_ROLE_MANAGER]: { role: 'manager' }, + [PROJECT_ROLE_PROGRAM_MANAGER]: { role: 'program_manager' }, + [PROJECT_ROLE_SOLUTION_ARCHITECT]: { role: 'solution_architect' }, + [PROJECT_ROLE_PROJECT_MANAGER]: { role: 'project_manager' }, [PROJECT_ROLE_ACCOUNT_MANAGER]: { role: 'account_manager' }, + [PROJECT_ROLE_ACCOUNT_EXECUTIVE]: { role: 'account_executive' }, [PROJECT_ROLE_MEMBER]: {}, }; // TopCoder roles -// eslint-disable-next-line no-unused-vars -const ROLE_CONNECT_COPILOT = 'Connect Copilot'; +const ROLE_CONNECT_COPILOT = 'Connect Copilot'; // eslint-disable-line no-unused-vars const ROLE_CONNECT_MANAGER = 'Connect Manager'; const ROLE_CONNECT_COPILOT_MANAGER = 'Connect Copilot Manager'; const ROLE_CONNECT_ACCOUNT_MANAGER = 'Connect Account Manager'; const ROLE_ADMINISTRATOR = 'administrator'; +const ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE = 'Business Development Representative'; +const ROLE_PRESALES = 'Presales'; // eslint-disable-line no-unused-vars +const ROLE_ACCOUNT_EXECUTIVE = 'Account Executive'; // eslint-disable-line no-unused-vars +const ROLE_PROGRAM_MANAGER = 'Program Manager'; // eslint-disable-line no-unused-vars +const ROLE_SOLUTION_ARCHITECT = 'Solution Architect'; // eslint-disable-line no-unused-vars +const ROLE_PROJECT_MANAGER = 'Project Manager'; // eslint-disable-line no-unused-vars /** * Supported events configuration @@ -50,29 +63,64 @@ const EVENTS = [ { type: BUS_API_EVENT.CONNECT.PROJECT.CREATED, projectRoles: [PROJECT_ROLE_OWNER], - topcoderRoles: [ROLE_CONNECT_ACCOUNT_MANAGER], + topcoderRoles: [ROLE_CONNECT_ACCOUNT_MANAGER, ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE], exclude: { topcoderRoles: [ROLE_CONNECT_MANAGER, ROLE_ADMINISTRATOR], }, }, { type: BUS_API_EVENT.CONNECT.PROJECT.SUBMITTED_FOR_REVIEW, projectRoles: [PROJECT_ROLE_OWNER], - topcoderRoles: [ROLE_CONNECT_MANAGER, ROLE_CONNECT_ACCOUNT_MANAGER, ROLE_ADMINISTRATOR], + topcoderRoles: [ + ROLE_CONNECT_MANAGER, + ROLE_CONNECT_ACCOUNT_MANAGER, + ROLE_BUSINESS_DEVELOPMENT_REPRESENTATIVE, + ROLE_ADMINISTRATOR, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT.APPROVED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], topcoderRoles: [ROLE_ADMINISTRATOR], }, { type: BUS_API_EVENT.CONNECT.PROJECT.ACTIVE, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], topcoderRoles: [ROLE_ADMINISTRATOR], }, { type: BUS_API_EVENT.CONNECT.PROJECT.PAUSED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], topcoderRoles: [ROLE_ADMINISTRATOR], - }, { + }, + { type: BUS_API_EVENT.CONNECT.PROJECT.COMPLETED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], topcoderRoles: [ROLE_ADMINISTRATOR], }, { type: BUS_API_EVENT.CONNECT.PROJECT.CANCELED, @@ -82,27 +130,64 @@ const EVENTS = [ // User management { type: BUS_API_EVENT.CONNECT.MEMBER.JOINED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.MEMBER.LEFT, version: 2, - projectRoles: [PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.MEMBER.REMOVED, version: 2, - projectRoles: [PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], toUserHandle: true, }, { type: BUS_API_EVENT.CONNECT.MEMBER.ASSIGNED_AS_OWNER, version: 2, - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], toUserHandle: true, }, { type: BUS_API_EVENT.CONNECT.MEMBER.COPILOT_JOINED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.MEMBER.MANAGER_JOINED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.MEMBER.INVITE_CREATED, projectRoles: [], @@ -124,7 +209,15 @@ const EVENTS = [ { type: BUS_API_EVENT.CONNECT.TOPIC.CREATED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], toMentionedUsers: true, exclude: { privatePostsForProjectRoles: [PROJECT_ROLE_CUSTOMER], @@ -132,7 +225,15 @@ const EVENTS = [ }, { type: BUS_API_EVENT.CONNECT.POST.CREATED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], toTopicStarter: true, toMentionedUsers: true, exclude: { @@ -142,7 +243,15 @@ const EVENTS = [ }, { type: BUS_API_EVENT.CONNECT.POST.UPDATED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], toTopicStarter: true, toMentionedUsers: true, exclude: { @@ -159,7 +268,15 @@ const EVENTS = [ { type: BUS_API_EVENT.CONNECT.TOPIC.DELETED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], toTopicStarter: false, exclude: { privatePostsForProjectRoles: [PROJECT_ROLE_CUSTOMER], @@ -168,7 +285,15 @@ const EVENTS = [ { type: BUS_API_EVENT.CONNECT.POST.DELETED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], exclude: { draftPhasesForProjectRoles: [PROJECT_ROLE_CUSTOMER], privatePostsForProjectRoles: [PROJECT_ROLE_CUSTOMER], @@ -177,62 +302,181 @@ const EVENTS = [ { type: BUS_API_EVENT.CONNECT.PROJECT.LINK_CREATED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT.FILE_UPLOADED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], includeUsers: 'allowedUsers', }, { type: BUS_API_EVENT.CONNECT.PROJECT.SPECIFICATION_MODIFIED, version: 2, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.READY, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.MODIFIED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], includeUsers: 'allowedUsers', }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PROGRESS_UPDATED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, // Phase activity { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_ACTIVATED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_COMPLETED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_PAYMENT_UPDATED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_PROGRESS_UPDATED, - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_SCOPE_UPDATED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.PHASE_PRODUCT_SPEC_UPDATED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, // Timeline/Milestone activity { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.MILESTONE_ACTIVATED, - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.MILESTONE_COMPLETED, - projectRoles: [PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER], + projectRoles: [PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.WAITING_FOR_CUSTOMER_INPUT, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], }, { type: BUS_API_EVENT.CONNECT.PROJECT_PLAN.TIMELINE_ADJUSTED, - projectRoles: [PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, PROJECT_ROLE_MEMBER], + projectRoles: [ + PROJECT_ROLE_OWNER, + PROJECT_ROLE_COPILOT, + PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, + PROJECT_ROLE_MEMBER, + ], includeUsers: 'allowedUsers', }, ]; @@ -335,5 +579,10 @@ module.exports = { PROJECT_ROLE_OWNER, PROJECT_ROLE_COPILOT, PROJECT_ROLE_MANAGER, + PROJECT_ROLE_PROGRAM_MANAGER, + PROJECT_ROLE_SOLUTION_ARCHITECT, + PROJECT_ROLE_PROJECT_MANAGER, PROJECT_ROLE_MEMBER, + PROJECT_ROLE_ACCOUNT_MANAGER, + PROJECT_ROLE_ACCOUNT_EXECUTIVE, }; diff --git a/emails/src/partials/project-team.html b/emails/src/partials/project-team.html index f5dbb21..5c3671d 100644 --- a/emails/src/partials/project-team.html +++ b/emails/src/partials/project-team.html @@ -104,25 +104,55 @@ - - + {{#if notifications.[0].[isSSO]}} + + + {{else}} - {{#if notifications.[0].[isSSO]}} - - SSO Login - - {{else}} - - View project on Connect - - {{/if}} + + + {{/if}} - - + + {{else}} + + + + {{/if}}
- {{#if notifications.[0].[connect.notification.project.member.invite.requested]}} - - Manage project team - + {{#if notifications.[0].[connect.notification.project.member.invite.created]}} + + + Join Project + + + + Decline + + + + Join Project + + + + Decline + + + {{#if notifications.[0].[connect.notification.project.member.invite.requested]}} + + Manage project team + + {{else}} + {{#if notifications.[0].[isSSO]}} + + SSO Login + + {{else}} + + View project on Connect + + {{/if}} + {{/if}} +
diff --git a/emails/src/styles/main.css b/emails/src/styles/main.css index a73295c..621406a 100644 --- a/emails/src/styles/main.css +++ b/emails/src/styles/main.css @@ -148,6 +148,9 @@ table.container, table.footer-container { height: 15px; background-color: #FFFFFF; } +.empty-width-10 { + width: 10px; } + .post-details .main-child { background-color: #FFFFFF; } .post-details .main-child .empty-child-one { @@ -207,7 +210,6 @@ table.container, table.footer-container { .button-row .main-child .second-child { border-radius: 4px; vertical-align: middle; - background-color: #0681FF; height: 30px; } .button-row .main-child .second-child a { border-radius: 4px; @@ -215,14 +217,23 @@ table.container, table.footer-container { text-decoration: none; display: block; background-color: #0681FF; - padding-top: 6px; - padding-bottom: 5px; + padding-top: 8px; + padding-bottom: 7px; text-align: center; color: #FFFFFF; font-size: 13px; } + .button-row .main-child .second-child a.second-btn { + color: #555555; + border: 1px solid #808080; + background-color: #FFFFFF; + padding-top: 7px; + padding-bottom: 6px; + width: 165px; } .button-one .main-child .empty-child-one, .button-three .main-child .empty-child-one { width: 216px; } + .button-one .main-child .empty-child-one.for-two-buttons, .button-three .main-child .empty-child-one.for-two-buttons { + width: 128px; } .button-one .main-child .second-child, .button-three .main-child .second-child { width: 167px; } diff --git a/emails/src/styles/modules/_color.scss b/emails/src/styles/modules/_color.scss index 96cbe42..f1fdc36 100644 --- a/emails/src/styles/modules/_color.scss +++ b/emails/src/styles/modules/_color.scss @@ -8,3 +8,4 @@ $grey-color: #888894; $blue-color: #006DEA; $grey-hyperlink: #808080; $button-color: #0681FF; +$tc-gray-70: #555555; diff --git a/emails/src/styles/partials/_base.scss b/emails/src/styles/partials/_base.scss index a3f28e6..77cd54e 100644 --- a/emails/src/styles/partials/_base.scss +++ b/emails/src/styles/partials/_base.scss @@ -206,6 +206,10 @@ table.container, table.footer-container { } } +.empty-width-10 { + width: 10px; +} + // emptys end // post details @@ -306,7 +310,6 @@ table.container, table.footer-container { // width: 167px; border-radius: 4px; vertical-align: middle; - background-color: $button-color; height: 30px; a { // width: 167px; @@ -315,12 +318,22 @@ table.container, table.footer-container { text-decoration: none; display: block; background-color: $button-color; - padding-top: 6px; - padding-bottom: 5px; + padding-top: 8px; + padding-bottom: 7px; text-align: center; color: $white-background; font-size: 13px; } + a { + &.second-btn { + color: $tc-gray-70; + border: 1px solid $grey-hyperlink; + background-color: $white-background; + padding-top: 7px; // minus 1px border-top + padding-bottom: 6px; // minus 1px border-bottom + width: 165px; // minus 2px borders + } + } } } } @@ -332,6 +345,12 @@ table.container, table.footer-container { .main-child { .empty-child-one { width: 216px; + + // if we have two buttons in one row with 10px spacing between: + // space=128px + button=167px + space=10px + button=167px + space=128px + &.for-two-buttons { + width: 128px; + } } .second-child { width: 167px;