1
1
import _ from 'lodash' ;
2
2
import 'config' ;
3
- import { EVENT , BUS_API_EVENT , PROJECT_STATUS , PROJECT_MEMBER_ROLE } from '../constants' ;
3
+ import { EVENT , BUS_API_EVENT , PROJECT_STATUS , PROJECT_PHASE_STATUS , PROJECT_MEMBER_ROLE } from '../constants' ;
4
4
import { createEvent } from '../services/busApi' ;
5
5
import models from '../models' ;
6
6
@@ -226,6 +226,7 @@ module.exports = (app, logger) => {
226
226
logger . debug ( 'receive PROJECT_PHASE_UPDATED event' ) ;
227
227
228
228
const projectId = _ . parseInt ( req . params . projectId ) ;
229
+ const phaseId = _ . parseInt ( req . params . phaseId ) ;
229
230
230
231
models . Project . findOne ( {
231
232
where : { id : projectId } ,
@@ -237,6 +238,29 @@ module.exports = (app, logger) => {
237
238
userId : req . authUser . userId ,
238
239
initiatorUserId : req . authUser . userId ,
239
240
} , logger ) ;
241
+
242
+ [
243
+ [ 'spentBudget' , BUS_API_EVENT . PROJECT_PHASE_UPDATE_PAYMENT ] ,
244
+ [ 'progress' , [ BUS_API_EVENT . PROJECT_PHASE_UPDATE_PROGRESS , BUS_API_EVENT . PROJECT_PROGRESS_MODIFIED ] ] ,
245
+ [ 'details' , BUS_API_EVENT . PROJECT_PHASE_UPDATE_SCOPE ] ,
246
+ [ 'status' , BUS_API_EVENT . PROJECT_PHASE_TRANSITION_ACTIVE , PROJECT_PHASE_STATUS . ACTIVE ] ,
247
+ [ 'status' , BUS_API_EVENT . PROJECT_PHASE_TRANSITION_COMPLETED , PROJECT_PHASE_STATUS . COMPLETED ] ,
248
+ ] . forEach ( ( [ key , events , sendIfEqual ] ) => {
249
+ // eslint-disable-next-line no-param-reassign
250
+ events = Array . isArray ( events ) ? events : [ events ] ;
251
+
252
+ // send event(s) only if the target field's value was updated, or when an update matches a "sendIfEqual" value
253
+ if ( ( ! sendIfEqual && ! _ . isEqual ( original [ key ] , updated [ key ] ) ) ||
254
+ ( original [ key ] !== sendIfEqual && updated [ key ] === sendIfEqual ) ) {
255
+ events . forEach ( event => createEvent ( event , {
256
+ projectId,
257
+ phaseId,
258
+ projectName : project . name ,
259
+ userId : req . authUser . userId ,
260
+ initiatorUserId : req . authUser . userId ,
261
+ } , logger ) ) ;
262
+ }
263
+ } ) ;
240
264
} ) . catch ( err => null ) ; // eslint-disable-line no-unused-vars
241
265
} ) ;
242
266
0 commit comments