@@ -80,21 +80,41 @@ public ProfileDraftResponse saveDraft(Long userId, ProfileDraftRequest request)
8080 throw new GeneralException (ErrorStatus .PROFILE_ALREADY_COMPLETED );
8181 }
8282
83- List <JobCategory > jobCategories = resolveJobCategories (
84- request .jobCategoryIds (),
85- request .primaryJobCategoryId ()
86- );
87- Region region = resolveRegion (request .regionId ());
83+ List <UserJobCategory > currentSelections = findJobCategories (userId );
8884 profile .updateDraft (
89- request .careerLevel (),
85+ request .careerLevel () != null ? request . careerLevel () : profile . getCareerLevel () ,
9086 request .onboardingStep (),
91- valueCodec .encode (request .preferenceNotes ()),
92- valueCodec .encode (request .excludeKeywords ()),
93- valueCodec .encode (request .techStacks ())
87+ request .preferenceNotes () != null
88+ ? valueCodec .encode (request .preferenceNotes ())
89+ : profile .getPreferenceNote (),
90+ request .excludeKeywords () != null
91+ ? valueCodec .encode (request .excludeKeywords ())
92+ : profile .getExcludeKeywords (),
93+ request .techStacks () != null
94+ ? valueCodec .encode (request .techStacks ())
95+ : profile .getTechStack ()
9496 );
9597 userProfileRepository .save (profile );
96- replaceJobCategories (user , jobCategories , request .primaryJobCategoryId ());
97- replaceRegion (user , region );
98+
99+ if (request .jobCategoryIds () != null || request .primaryJobCategoryId () != null ) {
100+ List <Long > categoryIds = request .jobCategoryIds () != null
101+ ? request .jobCategoryIds ()
102+ : currentSelections .stream ()
103+ .map (selection -> selection .getJobCategory ().getId ())
104+ .toList ();
105+ Long primaryId = request .primaryJobCategoryId () != null
106+ ? request .primaryJobCategoryId ()
107+ : currentSelections .stream ()
108+ .filter (UserJobCategory ::isPrimary )
109+ .map (selection -> selection .getJobCategory ().getId ())
110+ .findFirst ()
111+ .orElse (null );
112+ replaceJobCategories (user , resolveJobCategories (categoryIds , primaryId ), primaryId );
113+ }
114+
115+ if (request .regionId () != null ) {
116+ replaceRegion (user , resolveRegion (request .regionId ()));
117+ }
98118
99119 return toDraftResponse (profile , findJobCategories (userId ), findRegion (userId ));
100120 }
0 commit comments