@@ -31,9 +31,10 @@ async function getMyProfile(currentUser) {
31
31
email : _ . get ( member , "email" , null ) ,
32
32
city : _ . get ( member , "addresses[0].city" , null ) ,
33
33
country : _ . get ( member , "competitionCountryCode" , null ) ,
34
+ hasProfile : _ . get ( recruitProfile , "hasProfile" , false ) ,
34
35
phone : _ . get ( recruitProfile , "phone" , null ) ,
35
36
resume : _ . get ( recruitProfile , "resume" , null ) ,
36
- availability : _ . get ( recruitProfile , "availibility " , true ) ,
37
+ availability : _ . get ( recruitProfile , "availability " , true ) ,
37
38
} ;
38
39
}
39
40
@@ -48,13 +49,13 @@ getMyProfile.schema = Joi.object()
48
49
* @param {object } currentUser the user who perform this operation.
49
50
* @param {object } data the data to be updated
50
51
*/
51
- async function updateMyProfile ( currentUser , files , data ) {
52
+ async function updateMyProfile ( currentUser , data , files ) {
52
53
// we expect logged-in users
53
54
if ( currentUser . isMachine ) {
54
55
return ;
55
56
}
56
57
// check if file was truncated
57
- if ( files . resume . truncated ) {
58
+ if ( files && files . resume . truncated ) {
58
59
throw new errors . BadRequestError (
59
60
`Maximum allowed file size is ${ config . MAX_ALLOWED_FILE_SIZE_MB } MB`
60
61
) ;
@@ -64,7 +65,7 @@ async function updateMyProfile(currentUser, files, data) {
64
65
`^.*\.(${ _ . join ( config . ALLOWED_FILE_TYPES , "|" ) } )$` ,
65
66
"i"
66
67
) ;
67
- if ( ! regex . test ( files . resume . name ) ) {
68
+ if ( files && ! regex . test ( files . resume . name ) ) {
68
69
throw new errors . BadRequestError (
69
70
`Allowed file types are: ${ _ . join ( config . ALLOWED_FILE_TYPES , "," ) } `
70
71
) ;
@@ -75,56 +76,96 @@ async function updateMyProfile(currentUser, files, data) {
75
76
"fields=addresses,competitionCountryCode,homeCountryCode"
76
77
) ;
77
78
const update = { } ;
79
+ let shouldUpdateTrait = false ;
78
80
// update member data if city is different from existing one
79
81
if ( _ . get ( member , "addresses[0].city" ) !== data . city ) {
80
82
update . addresses = _ . cloneDeep ( member . addresses ) ;
81
83
if ( ! _ . isEmpty ( update . addresses ) ) {
82
84
update . addresses [ 0 ] . city = data . city ;
83
85
delete update . addresses [ 0 ] . createdAt ;
84
86
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
+ : " " ;
85
104
} else {
86
105
update . addresses = [
87
106
{
88
107
city : data . city ,
108
+ type : "HOME" ,
109
+ stateCode : " " ,
110
+ zip : " " ,
111
+ streetAddr1 : " " ,
112
+ streetAddr2 : " " ,
89
113
} ,
90
114
] ;
91
115
}
92
116
}
93
117
// update member data if competitionCountryCode is different from existing one
94
118
if ( _ . get ( member , "competitionCountryCode" ) !== data . country ) {
95
119
update . competitionCountryCode = data . country ;
120
+ shouldUpdateTrait = true ;
96
121
}
97
122
if ( _ . get ( member , "homeCountryCode" ) !== data . country ) {
98
123
update . homeCountryCode = data . country ;
124
+ shouldUpdateTrait = true ;
99
125
}
100
126
// avoid unnecessary api calls
101
127
if ( ! _ . isEmpty ( update ) ) {
102
128
await helper . updateMember ( currentUser , update ) ;
103
129
}
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
+ ) ;
108
155
}
109
156
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 ( ) ;
128
169
129
170
module . exports = {
130
171
getMyProfile,
0 commit comments