@@ -99,6 +99,52 @@ const buildCreateInvitePromises = (req, invite, invites, data) => {
99
99
return Promise . resolve ( invitePromises ) ;
100
100
} ;
101
101
102
+ const sendInviteEmail = ( req , invite ) => {
103
+ const emailEventType = BUS_API_EVENT . PROJECT_MEMBER_EMAIL_INVITE_CREATED ;
104
+ const promises = [
105
+ models . Project . find ( {
106
+ where : { id : projectId } ,
107
+ raw : true ,
108
+ } ) ,
109
+ util . getMemberDetailsByUserIds ( req . authUser . userId , req . logger , req . id ) ,
110
+ ] ;
111
+ return Promise . all ( promises ) . then ( ( responses ) => {
112
+ const _project = responses [ 0 ] ;
113
+ const initiator = responses [ 1 ] && responses [ 1 ] . length ? responses [ 1 ] [ 0 ] : null ;
114
+ createEvent ( emailEventType , {
115
+ data : {
116
+ connectURL : config . get ( 'connectUrl' ) ,
117
+ accountsAppURL : config . get ( 'accountsAppUrl' ) ,
118
+ subject : config . get ( 'inviteEmailSubject' ) ,
119
+ projects : [ {
120
+ name : _project . name ,
121
+ projectId,
122
+ sections : [
123
+ {
124
+ EMAIL_INVITES : true ,
125
+ title : config . get ( 'inviteEmailSectionTitle' ) ,
126
+ projectName : _project . name ,
127
+ projectId,
128
+ initiator : initiator ? initiator : {
129
+ userId : req . authUser . userId ,
130
+ firstName : 'Connect' ,
131
+ lastName : 'User' ,
132
+ }
133
+ } ,
134
+ ] ,
135
+ } ] ,
136
+ } ,
137
+ recipients : [ invite . email ] ,
138
+ version : 'v3' ,
139
+ from : {
140
+ name : config . get ( 'EMAIL_INVITE_FROM_NAME' ) ,
141
+ email : config . get ( 'EMAIL_INVITE_FROM_EMAIL' ) ,
142
+ } ,
143
+ categories : [ `${ process . env . NODE_ENV } :${ emailEventType } ` . toLowerCase ( ) ] ,
144
+ } , req . log ) ;
145
+ } ) ;
146
+ }
147
+
102
148
module . exports = [
103
149
// handles request validations
104
150
validate ( addMemberValidations ) ,
@@ -182,7 +228,6 @@ module.exports = [
182
228
}
183
229
184
230
req . log . debug ( 'Creating invites' ) ;
185
- const emailEventType = BUS_API_EVENT . PROJECT_MEMBER_EMAIL_INVITE_CREATED ;
186
231
return models . sequelize . Promise . all ( invitePromises )
187
232
. then ( ( values ) => {
188
233
values . forEach ( ( v ) => {
@@ -198,42 +243,7 @@ module.exports = [
198
243
) ;
199
244
// send email invite (async)
200
245
if ( v . email && ! v . userId ) {
201
- models . Project
202
- . find ( {
203
- where : { id : projectId } ,
204
- raw : true ,
205
- } )
206
- . then ( ( _project ) => {
207
- createEvent ( emailEventType ,
208
- {
209
- data : {
210
- connectURL : config . get ( 'connectUrl' ) ,
211
- accountsAppURL : config . get ( 'accountsAppUrl' ) ,
212
- subject : config . get ( 'inviteEmailSubject' ) ,
213
- projects : [
214
- {
215
- name : _project . name ,
216
- projectId,
217
- sections : [
218
- {
219
- EMAIL_INVITES : true ,
220
- title : config . get ( 'inviteEmailSectionTitle' ) ,
221
- projectName : _project . name ,
222
- projectId,
223
- } ,
224
- ] ,
225
- } ,
226
- ] ,
227
- } ,
228
- recipients : [ v . email ] ,
229
- version : 'v3' ,
230
- from : {
231
- name : config . get ( 'EMAIL_INVITE_FROM_NAME' ) ,
232
- email : config . get ( 'EMAIL_INVITE_FROM_EMAIL' ) ,
233
- } ,
234
- categories : [ `${ process . env . NODE_ENV } :${ emailEventType } ` . toLowerCase ( ) ] ,
235
- } , req . log ) ;
236
- } ) ;
246
+ sendInviteEmail ( req , v ) ;
237
247
}
238
248
} ) ;
239
249
return values ;
0 commit comments