@@ -4,7 +4,7 @@ import Joi from 'joi';
4
4
import { middleware as tcMiddleware } from 'tc-core-library-js' ;
5
5
import models from '../../models' ;
6
6
import util from '../../util' ;
7
- import { INVITE_STATUS , EVENT , RESOURCES , COPILOT_APPLICATION_STATUS , COPILOT_OPPORTUNITY_STATUS , COPILOT_REQUEST_STATUS } from '../../constants' ;
7
+ import { INVITE_STATUS , EVENT , RESOURCES , COPILOT_APPLICATION_STATUS , COPILOT_OPPORTUNITY_STATUS , COPILOT_REQUEST_STATUS , INVITE_SOURCE } from '../../constants' ;
8
8
import { PERMISSION } from '../../permissions/constants' ;
9
9
10
10
/**
@@ -19,6 +19,9 @@ const updateMemberValidations = {
19
19
status : Joi . any ( )
20
20
. valid ( _ . values ( INVITE_STATUS ) )
21
21
. required ( ) ,
22
+ source : Joi . any ( )
23
+ . valid ( _ . values ( INVITE_SOURCE ) )
24
+ . default ( INVITE_SOURCE . WORK_MANAGER ) ,
22
25
} )
23
26
. required ( ) ,
24
27
} ;
@@ -29,6 +32,7 @@ module.exports = [
29
32
permissions ( 'projectMemberInvite.edit' ) ,
30
33
( req , res , next ) => {
31
34
const newStatus = req . body . status ;
35
+ const source = req . body . source ;
32
36
if ( newStatus === INVITE_STATUS . CANCELED ) {
33
37
const err = new Error ( 'Cannot change invite status to “canceled”. Please, delete the invite instead.' ) ;
34
38
err . status = 400 ;
@@ -121,14 +125,23 @@ module.exports = [
121
125
try {
122
126
await util . addUserToProject ( req , member , t ) ;
123
127
if ( invite . applicationId ) {
128
+ let nextApplicationStatus = COPILOT_APPLICATION_STATUS . CANCELED ;
129
+ let nextOpportunityStatus = COPILOT_OPPORTUNITY_STATUS . CANCELED ;
130
+ let nextOpportunityRequestStatus = COPILOT_REQUEST_STATUS . CANCELED ;
131
+ if ( source === 'copilot_portal' ) {
132
+ nextApplicationStatus = COPILOT_APPLICATION_STATUS . ACCEPTED ;
133
+ nextOpportunityStatus = COPILOT_OPPORTUNITY_STATUS . COMPLETED ;
134
+ nextOpportunityRequestStatus = COPILOT_REQUEST_STATUS . FULFILLED ;
135
+ }
136
+
124
137
const application = await models . CopilotApplication . findOne ( {
125
138
where : {
126
139
id : invite . applicationId ,
127
140
} ,
128
141
transaction : t ,
129
142
} ) ;
130
143
131
- await application . update ( { status : COPILOT_APPLICATION_STATUS . ACCEPTED } , {
144
+ await application . update ( { status : nextApplicationStatus } , {
132
145
transaction : t
133
146
} ) ;
134
147
@@ -140,7 +153,7 @@ module.exports = [
140
153
} ) ;
141
154
142
155
await opportunity . update ( {
143
- status : COPILOT_OPPORTUNITY_STATUS . COMPLETED
156
+ status : nextOpportunityStatus ,
144
157
} , {
145
158
transaction : t ,
146
159
} ) ;
@@ -153,7 +166,7 @@ module.exports = [
153
166
} ) ;
154
167
155
168
await request . update ( {
156
- status : COPILOT_REQUEST_STATUS . FULFILLED
169
+ status : nextOpportunityRequestStatus ,
157
170
} , {
158
171
transaction : t ,
159
172
} ) ;
0 commit comments