@@ -95,98 +95,104 @@ module.exports = [
95
95
}
96
96
}
97
97
return models . ProjectMemberInvite . getPendingInvitesForProject ( projectId )
98
- . then ( ( invites ) => {
99
- const data = {
100
- projectId,
101
- role : invite . role ,
102
- status : INVITE_STATUS . PENDING ,
103
- createdBy : req . authUser . userId ,
104
- updatedBy : req . authUser . userId ,
105
- } ;
106
- const invitePromises = [ ] ;
107
- if ( invite . userIds ) {
108
- // remove invites for users that are invited already
109
- _ . remove ( invite . userIds , u => _ . some ( invites , i => i . userId === u ) ) ;
110
- invite . userIds . forEach ( ( userId ) => {
111
- const dataNew = _ . clone ( data ) ;
112
- _ . assign ( dataNew , {
113
- userId,
114
- } ) ;
115
- invitePromises . push ( models . ProjectMemberInvite . create ( dataNew ) ) ;
116
- } ) ;
117
- }
118
- data . userId = null ;
119
-
120
- if ( invite . emails ) {
121
- // remove invites for users that are invited already
122
- _ . remove ( invite . emails , u => _ . some ( invites , i => i . email === u ) ) ;
123
- invite . emails . forEach ( ( email ) => {
124
- const dataNew = _ . clone ( data ) ;
125
- _ . assign ( dataNew , {
126
- email,
127
- } ) ;
128
- invitePromises . push ( models . ProjectMemberInvite . create ( dataNew ) ) ;
98
+ . then ( ( invites ) => {
99
+ const data = {
100
+ projectId,
101
+ role : invite . role ,
102
+ status : INVITE_STATUS . PENDING ,
103
+ createdBy : req . authUser . userId ,
104
+ updatedBy : req . authUser . userId ,
105
+ } ;
106
+ const invitePromises = [ ] ;
107
+ if ( invite . userIds ) {
108
+ // remove invites for users that are invited already
109
+ _ . remove ( invite . userIds , u => _ . some ( invites , i => i . userId === u ) ) ;
110
+ invite . userIds . forEach ( ( userId ) => {
111
+ const dataNew = _ . clone ( data ) ;
112
+ _ . assign ( dataNew , {
113
+ userId,
114
+ } ) ;
115
+ invitePromises . push ( models . ProjectMemberInvite . create ( dataNew ) ) ;
116
+ } ) ;
117
+ }
118
+ data . userId = null ;
119
+
120
+ if ( invite . emails ) {
121
+ // remove invites for users that are invited already
122
+ _ . remove ( invite . emails , u => _ . some ( invites , i => i . email === u ) ) ;
123
+ invite . emails . forEach ( ( email ) => {
124
+ const dataNew = _ . clone ( data ) ;
125
+ _ . assign ( dataNew , {
126
+ email,
127
+ } ) ;
128
+ invitePromises . push ( models . ProjectMemberInvite . create ( dataNew ) ) ;
129
+ } ) ;
130
+ }
131
+
132
+ if ( invitePromises . length === 0 ) {
133
+ return [ ] ;
134
+ }
135
+
136
+ req . log . debug ( 'Creating invites' ) ;
137
+ const emailEventType = BUS_API_EVENT . PROJECT_MEMBER_EMAIL_INVITE_CREATED ;
138
+ return models . sequelize . Promise . all ( invitePromises )
139
+ . then ( ( values ) => {
140
+ values . forEach ( ( v ) => {
141
+ req . app . emit ( EVENT . ROUTING_KEY . PROJECT_MEMBER_INVITE_CREATED , {
142
+ req,
143
+ userId : v . userId ,
144
+ email : v . email ,
129
145
} ) ;
130
- }
131
-
132
- req . log . debug ( 'Creating invites' ) ;
133
- const emailEventType = BUS_API_EVENT . PROJECT_MEMBER_EMAIL_INVITE_CREATED ;
134
- return models . sequelize . Promise . all ( invitePromises )
135
- . then ( ( values ) => {
136
- values . forEach ( ( v ) => {
137
- req . app . emit ( EVENT . ROUTING_KEY . PROJECT_MEMBER_INVITE_CREATED , {
138
- req,
139
- userId : v . userId ,
140
- email : v . email ,
141
- } ) ;
142
- req . app . services . pubsub . publish (
143
- EVENT . ROUTING_KEY . PROJECT_MEMBER_INVITE_CREATED ,
144
- v ,
145
- { correlationId : req . id } ,
146
- ) ;
147
- // send email invite (async)
148
- if ( v . email ) {
149
- models . Project
150
- . find ( {
151
- where : { id : projectId } ,
152
- raw : true ,
153
- } )
154
- . then ( ( _project ) => {
155
- createEvent ( emailEventType ,
156
- {
157
- data : {
158
- connectURL : config . get ( 'connectUrl' ) ,
159
- accountsAppURL : config . get ( 'accountsAppUrl' ) ,
160
- subject : config . get ( 'inviteEmailSubject' ) ,
161
- projects : [
146
+ req . app . services . pubsub . publish (
147
+ EVENT . ROUTING_KEY . PROJECT_MEMBER_INVITE_CREATED ,
148
+ v ,
149
+ { correlationId : req . id } ,
150
+ ) ;
151
+ // send email invite (async)
152
+ if ( v . email ) {
153
+ models . Project
154
+ . find ( {
155
+ where : { id : projectId } ,
156
+ raw : true ,
157
+ } )
158
+ . then ( ( _project ) => {
159
+ createEvent ( emailEventType ,
160
+ {
161
+ data : {
162
+ connectURL : config . get ( 'connectUrl' ) ,
163
+ accountsAppURL : config . get ( 'accountsAppUrl' ) ,
164
+ subject : config . get ( 'inviteEmailSubject' ) ,
165
+ projects : [
166
+ {
167
+ name : _project . name ,
168
+ projectId,
169
+ sections : [
162
170
{
163
- name : _project . name ,
171
+ EMAIL_INVITES : true ,
172
+ title : config . get ( 'inviteEmailSectionTitle' ) ,
173
+ projectName : _project . name ,
164
174
projectId,
165
- sections : [
166
- {
167
- EMAIL_INVITES : true ,
168
- title : config . get ( 'inviteEmailSectionTitle' ) ,
169
- projectName : _project . name ,
170
- projectId,
171
- } ,
172
- ] ,
173
175
} ,
174
176
] ,
175
177
} ,
176
- recipients : [ v . email ] ,
177
- version : 'v3' ,
178
- from : {
179
- name : config . get ( 'EMAIL_INVITE_FROM_NAME' ) ,
180
- email : config . get ( 'EMAIL_INVITE_FROM_EMAIL' ) ,
181
- } ,
182
- categories : [ `${ process . env . NODE_ENV } :${ emailEventType } ` . toLowerCase ( ) ] ,
183
- } , req . log ) ;
184
- } ) ;
185
- }
186
- return res . status ( 201 ) . json ( util . wrapResponse ( req . id , values , null , 201 ) ) ;
178
+ ] ,
179
+ } ,
180
+ recipients : [ v . email ] ,
181
+ version : 'v3' ,
182
+ from : {
183
+ name : config . get ( 'EMAIL_INVITE_FROM_NAME' ) ,
184
+ email : config . get ( 'EMAIL_INVITE_FROM_EMAIL' ) ,
185
+ } ,
186
+ categories : [ `${ process . env . NODE_ENV } :${ emailEventType } ` . toLowerCase ( ) ] ,
187
+ } , req . log ) ;
187
188
} ) ;
188
- } ) ;
189
+ }
190
+ } ) ;
191
+ return values ;
189
192
} ) ;
190
- } ) . catch ( err => next ( err ) ) ;
193
+ } ) ;
194
+ } )
195
+ . then ( values => res . status ( 201 ) . json ( util . wrapResponse ( req . id , values , null , 201 ) ) )
196
+ . catch ( err => next ( err ) ) ;
191
197
} ,
192
198
] ;
0 commit comments