@@ -31,9 +31,10 @@ async function getMyProfile(currentUser) {
3131 email : _ . get ( member , "email" , null ) ,
3232 city : _ . get ( member , "addresses[0].city" , null ) ,
3333 country : _ . get ( member , "competitionCountryCode" , null ) ,
34+ hasProfile : _ . get ( recruitProfile , "hasProfile" , false ) ,
3435 phone : _ . get ( recruitProfile , "phone" , null ) ,
3536 resume : _ . get ( recruitProfile , "resume" , null ) ,
36- availability : _ . get ( recruitProfile , "availibility " , true ) ,
37+ availability : _ . get ( recruitProfile , "availability " , true ) ,
3738 } ;
3839}
3940
@@ -48,13 +49,13 @@ getMyProfile.schema = Joi.object()
4849 * @param {object } currentUser the user who perform this operation.
4950 * @param {object } data the data to be updated
5051 */
51- async function updateMyProfile ( currentUser , files , data ) {
52+ async function updateMyProfile ( currentUser , data , files ) {
5253 // we expect logged-in users
5354 if ( currentUser . isMachine ) {
5455 return ;
5556 }
5657 // check if file was truncated
57- if ( files . resume . truncated ) {
58+ if ( files && files . resume . truncated ) {
5859 throw new errors . BadRequestError (
5960 `Maximum allowed file size is ${ config . MAX_ALLOWED_FILE_SIZE_MB } MB`
6061 ) ;
@@ -64,7 +65,7 @@ async function updateMyProfile(currentUser, files, data) {
6465 `^.*\.(${ _ . join ( config . ALLOWED_FILE_TYPES , "|" ) } )$` ,
6566 "i"
6667 ) ;
67- if ( ! regex . test ( files . resume . name ) ) {
68+ if ( files && ! regex . test ( files . resume . name ) ) {
6869 throw new errors . BadRequestError (
6970 `Allowed file types are: ${ _ . join ( config . ALLOWED_FILE_TYPES , "," ) } `
7071 ) ;
@@ -75,56 +76,96 @@ async function updateMyProfile(currentUser, files, data) {
7576 "fields=addresses,competitionCountryCode,homeCountryCode"
7677 ) ;
7778 const update = { } ;
79+ let shouldUpdateTrait = false ;
7880 // update member data if city is different from existing one
7981 if ( _ . get ( member , "addresses[0].city" ) !== data . city ) {
8082 update . addresses = _ . cloneDeep ( member . addresses ) ;
8183 if ( ! _ . isEmpty ( update . addresses ) ) {
8284 update . addresses [ 0 ] . city = data . city ;
8385 delete update . addresses [ 0 ] . createdAt ;
8486 delete update . addresses [ 0 ] . updatedAt ;
87+ delete update . addresses [ 0 ] . createdBy ;
88+ delete update . addresses [ 0 ] . updatedBy ;
89+ update . addresses [ 0 ] . streetAddr1 = update . addresses [ 0 ] . streetAddr1
90+ ? update . addresses [ 0 ] . streetAddr1
91+ : " " ;
92+ update . addresses [ 0 ] . streetAddr2 = update . addresses [ 0 ] . streetAddr2
93+ ? update . addresses [ 0 ] . streetAddr2
94+ : " " ;
95+ update . addresses [ 0 ] . type = update . addresses [ 0 ] . type
96+ ? update . addresses [ 0 ] . type
97+ : "HOME" ;
98+ update . addresses [ 0 ] . stateCode = update . addresses [ 0 ] . stateCode
99+ ? update . addresses [ 0 ] . stateCode
100+ : " " ;
101+ update . addresses [ 0 ] . zip = update . addresses [ 0 ] . zip
102+ ? update . addresses [ 0 ] . zip
103+ : " " ;
85104 } else {
86105 update . addresses = [
87106 {
88107 city : data . city ,
108+ type : "HOME" ,
109+ stateCode : " " ,
110+ zip : " " ,
111+ streetAddr1 : " " ,
112+ streetAddr2 : " " ,
89113 } ,
90114 ] ;
91115 }
92116 }
93117 // update member data if competitionCountryCode is different from existing one
94118 if ( _ . get ( member , "competitionCountryCode" ) !== data . country ) {
95119 update . competitionCountryCode = data . country ;
120+ shouldUpdateTrait = true ;
96121 }
97122 if ( _ . get ( member , "homeCountryCode" ) !== data . country ) {
98123 update . homeCountryCode = data . country ;
124+ shouldUpdateTrait = true ;
99125 }
100126 // avoid unnecessary api calls
101127 if ( ! _ . isEmpty ( update ) ) {
102128 await helper . updateMember ( currentUser , update ) ;
103129 }
104- await helper . updateRCRMProfile ( currentUser , files . resume , {
105- phone : data . phone ,
106- availability : data . availability ,
107- } ) ;
130+ if ( shouldUpdateTrait ) {
131+ const memberTraits = await helper . getMemberTraits (
132+ currentUser . handle ,
133+ `traitIds=basic_info`
134+ ) ;
135+ if ( memberTraits && memberTraits . length ) {
136+ memberTraits [ 0 ] [ "traits" ] . data [ 0 ] . country = data . countryName ;
137+ delete memberTraits [ 0 ] . createdAt ;
138+ delete memberTraits [ 0 ] . createdBy ;
139+ delete memberTraits [ 0 ] . updatedAt ;
140+ delete memberTraits [ 0 ] . updatedBy ;
141+ delete memberTraits [ 0 ] . userId ;
142+ await helper . updateMemberTraits ( currentUser , memberTraits ) ;
143+ }
144+ }
145+ await helper . updateRCRMProfile (
146+ currentUser ,
147+ {
148+ phone : data . phone ,
149+ availability : data . availability ,
150+ city : data . city ,
151+ countryName : data . countryName ,
152+ } ,
153+ files && files . resume
154+ ) ;
108155}
109156
110- updateMyProfile . schema = Joi . object ( )
111- . keys ( {
112- currentUser : Joi . object ( ) . required ( ) ,
113- files : Joi . object ( )
114- . keys ( {
115- resume : Joi . object ( ) . required ( ) ,
116- } )
117- . required ( ) ,
118- data : Joi . object ( )
119- . keys ( {
120- city : Joi . string ( ) . required ( ) ,
121- country : Joi . string ( ) . required ( ) ,
122- phone : Joi . string ( ) . required ( ) ,
123- availability : Joi . boolean ( ) . required ( ) ,
124- } )
125- . required ( ) ,
126- } )
127- . required ( ) ;
157+ updateMyProfile . schema = Joi . object ( {
158+ currentUser : Joi . object ( ) . required ( ) ,
159+ data : Joi . object ( )
160+ . keys ( {
161+ city : Joi . string ( ) . required ( ) ,
162+ country : Joi . string ( ) . required ( ) ,
163+ countryName : Joi . string ( ) . required ( ) ,
164+ phone : Joi . string ( ) . required ( ) ,
165+ availability : Joi . boolean ( ) . required ( ) ,
166+ } )
167+ . required ( ) ,
168+ } ) . unknown ( ) ;
128169
129170module . exports = {
130171 getMyProfile,
0 commit comments