@@ -34,6 +34,28 @@ const projectUpdatedSchema = Joi.object().keys({
3434 } ) . required ( )
3535} ) . unknown ( true ) ;
3636
37+ function getUpdatedLeadFieldData ( projectUpdated ) {
38+ const updatedLead = { } ;
39+
40+ if ( projectUpdated . status ) {
41+ updatedLead . TC_Connect_Project_Status__c = projectUpdated . status ;
42+ }
43+
44+ if ( projectUpdated . cancelReason ) {
45+ updatedLead . TC_Connect_Cancel_Reason__c = projectUpdated . cancelReason ;
46+ }
47+
48+ if ( projectUpdated . details ) {
49+ updatedLead . Ref_Code__c = _ . get ( projectUpdated , "details.utm.code" , "" ) ;
50+ }
51+ if ( projectUpdated . directProjectId ) {
52+ updatedLead . TC_Connect_Direct_Project_Id__c = _ . get ( projectUpdated , "directProjectId" , "" ) ;
53+ }
54+
55+ return updatedLead ;
56+ }
57+
58+
3759class ConsumerService {
3860
3961 /**
@@ -65,6 +87,10 @@ class ConsumerService {
6587 Company : company ,
6688 OwnerId : config . ownerId ,
6789 TC_Connect_Project_Id__c : project . id ,
90+ TC_Connect_Project_Status__c : _ . get ( project , "status" , "" ) ,
91+ Ref_Code__c : _ . get ( project , "details.utm.code" , "" ) ,
92+ TC_Connect_Direct_Project_Id__c : _ . get ( project , "directProjectId" , "" ) ,
93+ TC_Connect_Cancel_Reason__c : _ . get ( project , "cancelReason" , "" )
6894 } ;
6995 return SalesforceService . createObject ( 'Lead' , lead , accessToken , instanceUrl )
7096 . then ( ( leadId ) => {
@@ -84,6 +110,7 @@ class ConsumerService {
84110 } ) ;
85111 }
86112
113+
87114 /**
88115 * Handle created/launched project
89116 * @param {Object } projectEvent the project
@@ -92,29 +119,40 @@ class ConsumerService {
92119 processProjectUpdated ( logger , projectEvent ) {
93120 logger . debug ( projectEvent )
94121 var project = projectEvent . original ;
122+ var projectUpdated = projectEvent . updated ;
123+
124+
95125 return Promise . all ( [
96126 ConfigurationService . getSalesforceCampaignId ( ) ,
97127 SalesforceService . authenticate ( ) ,
98128 ] ) . then ( ( responses ) => {
99129 const campaignId = responses [ 0 ] ;
100130 const { accessToken, instanceUrl } = responses [ 1 ] ;
131+
101132 // queries existing lead for the project
102- let sql = `SELECT id FROM Lead WHERE TC_Connect_Project_Id__c = '${ project . id } '` ;
133+ let sql = `SELECT id,IsConverted FROM Lead WHERE TC_Connect_Project_Id__c = '${ project . id } '` ;
103134 return SalesforceService . query ( sql , accessToken , instanceUrl )
104135 . then ( ( response ) => {
105136 const { records : [ lead ] } = response ;
106137 if ( ! lead ) {
107- throw new UnprocessableError ( `Cannot find Lead with TC_Connect_Project_Id__c = '${ project . id } '` ) ;
138+ throw new UnprocessableError ( `Cannot find Lead with TC_Connect_Project_Id__c = '${ project . id } '` ) ;
139+ }
140+
141+ const leadUpdate = getUpdatedLeadFieldData ( projectUpdated ) ;
142+
143+ if ( lead . IsConverted != true && ! _ . isEmpty ( leadUpdate ) ) {
144+ return SalesforceService . updateObject ( lead . Id , 'Lead' , leadUpdate , accessToken , instanceUrl ) ;
108145 }
109- sql = `SELECT id FROM CampaignMember WHERE LeadId = '${ lead . Id } ' AND CampaignId ='${ campaignId } '` ;
110- return SalesforceService . query ( sql , accessToken , instanceUrl )
111- . then ( ( response ) => {
112- const { records : [ member ] } = response ;
113- if ( ! member ) {
114- throw new UnprocessableError ( `Cannot find CampaignMember for Lead.TC_Connect_Project_Id__c = '${ project . id } '` ) ;
115- }
116- return SalesforceService . deleteObject ( 'CampaignMember' , member . Id , accessToken , instanceUrl ) ;
117- } )
146+
147+ // sql = `SELECT id FROM CampaignMember WHERE LeadId = '${lead.Id}' AND CampaignId ='${campaignId}'`;
148+ // return SalesforceService.query(sql, accessToken, instanceUrl)
149+ // .then((response) => {
150+ // const {records: [member]} = response;
151+ // if (!member) {
152+ // throw new UnprocessableError(`Cannot find CampaignMember for Lead.TC_Connect_Project_Id__c = '${project.id}'`);
153+ // }
154+ // return SalesforceService.deleteObject('CampaignMember', member.Id, accessToken, instanceUrl);
155+ // })
118156 } )
119157 } ) ;
120158 }
0 commit comments