1
1
import _ from 'lodash' ;
2
+ import { Op } from 'sequelize' ;
2
3
3
4
import models from '../../models' ;
4
5
import util from '../../util' ;
5
- import { COPILOT_APPLICATION_STATUS , COPILOT_OPPORTUNITY_STATUS , COPILOT_REQUEST_STATUS } from '../../constants' ;
6
+ import { COPILOT_APPLICATION_STATUS , COPILOT_OPPORTUNITY_STATUS , COPILOT_REQUEST_STATUS , EVENT , INVITE_STATUS , RESOURCES } from '../../constants' ;
6
7
import { PERMISSION } from '../../permissions/constants' ;
7
8
9
+
8
10
module . exports = [
9
11
( req , res , next ) => {
10
12
if ( ! util . hasPermissionByReq ( PERMISSION . CANCEL_COPILOT_OPPORTUNITY , req ) ) {
@@ -54,6 +56,14 @@ module.exports = [
54
56
} ) ) ;
55
57
} ) ;
56
58
59
+ const allInvites = await models . ProjectMemberInvite . findAll ( {
60
+ where : {
61
+ applicationId : {
62
+ [ Op . in ] : applications . map ( item => item . id ) ,
63
+ } ,
64
+ } ,
65
+ } ) ;
66
+
57
67
await Promise . all ( promises ) ;
58
68
59
69
await copilotRequest . update ( {
@@ -68,6 +78,21 @@ module.exports = [
68
78
transaction,
69
79
} ) ;
70
80
81
+ // update all the existing invites which are
82
+ // associated to the copilot opportunity
83
+ // with cancel status
84
+ for ( const invite of allInvites ) {
85
+ await invite . update ( {
86
+ status : INVITE_STATUS . CANCELED ,
87
+ } ) ;
88
+ await invite . reload ( ) ;
89
+ util . sendResourceToKafkaBus (
90
+ req ,
91
+ EVENT . ROUTING_KEY . PROJECT_MEMBER_INVITE_UPDATED ,
92
+ RESOURCES . PROJECT_MEMBER_INVITE ,
93
+ invite . toJSON ( ) ) ;
94
+ }
95
+
71
96
res . status ( 200 ) . send ( { id : opportunity . id } ) ;
72
97
} )
73
98
0 commit comments