33import com .objectcomputing .checkins .exceptions .BadArgException ;
44import com .objectcomputing .checkins .security .ImpersonationController ;
55import com .objectcomputing .checkins .services .feedback_external_recipient .FeedbackExternalRecipientServices ;
6+ import com .objectcomputing .checkins .services .memberprofile .*;
67import io .micronaut .core .annotation .Nullable ;
78import io .micronaut .core .convert .format .Format ;
89import io .micronaut .http .HttpResponse ;
@@ -39,10 +40,12 @@ public class FeedbackRequestExternalRecipientController {
3940 private final FeedbackExternalRecipientServices feedbackExternalRecipientServices ;
4041 private static final Logger LOG = LoggerFactory .getLogger (FeedbackRequestExternalRecipientController .class );
4142 private static final Base64 .Encoder base64Encoder = Base64 .getUrlEncoder ();
43+ private final MemberProfileServices memberProfileServices ;
4244
43- public FeedbackRequestExternalRecipientController (FeedbackRequestServices feedbackRequestServices , FeedbackExternalRecipientServices feedbackExternalRecipientServices ) {
45+ public FeedbackRequestExternalRecipientController (FeedbackRequestServices feedbackRequestServices , FeedbackExternalRecipientServices feedbackExternalRecipientServices , MemberProfileServices memberProfileServices ) {
4446 this .feedbackReqServices = feedbackRequestServices ;
4547 this .feedbackExternalRecipientServices = feedbackExternalRecipientServices ;
48+ this .memberProfileServices = memberProfileServices ;
4649 }
4750
4851 /**
@@ -126,7 +129,45 @@ private FeedbackRequestResponseDTO feedbackRequestFromEntity(FeedbackRequest fee
126129 return dto ;
127130 }
128131
132+ private MemberProfile fromDTO (MemberProfileUpdateDTO dto ) {
133+ return new MemberProfile (dto .getId (), dto .getFirstName (), dto .getMiddleName (), dto .getLastName (),
134+ dto .getSuffix (), dto .getTitle (), dto .getPdlId (), dto .getLocation (), dto .getWorkEmail (),
135+ dto .getEmployeeId (), dto .getStartDate (), dto .getBioText (), dto .getSupervisorid (),
136+ dto .getTerminationDate (), dto .getBirthDay (), dto .getVoluntary (), dto .getExcluded (), dto .getLastSeen ());
137+ }
138+
139+ private MemberProfile fromDTO (MemberProfileCreateDTO dto ) {
140+ return new MemberProfile (dto .getFirstName (), dto .getMiddleName (), dto .getLastName (), dto .getSuffix (),
141+ dto .getTitle (), dto .getPdlId (), dto .getLocation (), dto .getWorkEmail (), dto .getEmployeeId (),
142+ dto .getStartDate (), dto .getBioText (), dto .getSupervisorid (), dto .getTerminationDate (), dto .getBirthDay (),
143+ dto .getVoluntary (), dto .getExcluded (), dto .getLastSeen ());
144+ }
129145
146+ private MemberProfileResponseDTO fromEntity (MemberProfile entity ) {
147+ MemberProfileResponseDTO dto = new MemberProfileResponseDTO ();
148+ dto .setId (entity .getId ());
149+ dto .setFirstName (entity .getFirstName ());
150+ dto .setMiddleName (entity .getMiddleName ());
151+ dto .setLastName (entity .getLastName ());
152+ dto .setSuffix (entity .getSuffix ());
153+ dto .setName (MemberProfileUtils .getFullName (entity ));
154+ dto .setTitle (entity .getTitle ());
155+ dto .setPdlId (entity .getPdlId ());
156+ dto .setLocation (entity .getLocation ());
157+ dto .setWorkEmail (entity .getWorkEmail ());
158+ dto .setEmployeeId (entity .getEmployeeId ());
159+ dto .setStartDate (entity .getStartDate ());
160+ dto .setBioText (entity .getBioText ());
161+ dto .setSupervisorid (entity .getSupervisorid ());
162+ dto .setTerminationDate (entity .getTerminationDate ());
163+ dto .setBirthDay (entity .getBirthDate ());
164+ dto .setLastSeen (entity .getLastSeen ());
165+ return dto ;
166+ }
167+
168+ protected URI location (UUID id ) {
169+ return URI .create ("/member-profiles/" + id );
170+ }
130171
131172 @ Get ("/csrf/cookie" )
132173 public HttpResponse <?> getCsrfToken () {
@@ -142,4 +183,40 @@ public HttpResponse <?> getCsrfToken() {
142183 ;
143184 }
144185
186+ /**
187+ * Find requestee's member profile for the given FeedbackRequest ID
188+ *
189+ * @param id {@link UUID} ID of the feedback-reqeust record
190+ * @return {@link MemberProfileResponseDTO} Returned member profile
191+ */
192+ @ Get ("/getRequesteeForFeedbackRequest/{id}" )
193+ public HttpResponse <MemberProfileResponseDTO > getRequesteeForFeedbackRequest (UUID id ) {
194+ FeedbackRequest feedbackRequest = feedbackReqServices .getById (id );
195+ if (feedbackRequest .getExternalRecipientId () == null ) {
196+ throw new BadArgException ("This feedback request is not for an external recipient" );
197+ }
198+
199+ MemberProfile memberProfile = memberProfileServices .getById (feedbackRequest .getRequesteeId ());
200+ return HttpResponse .ok (fromEntity (memberProfile ))
201+ .headers (headers -> headers .location (location (memberProfile .getId ())));
202+ }
203+
204+ /**
205+ * Find requester's member profile for the given FeedbackRequest ID
206+ *
207+ * @param id {@link UUID} ID of the feedback-reqeust record
208+ * @return {@link MemberProfileResponseDTO} Returned member profile
209+ */
210+ @ Get ("/getRequesterForFeedbackRequest/{id}" )
211+ public HttpResponse <MemberProfileResponseDTO > getRequesterForFeedbackRequest (UUID id ) {
212+ FeedbackRequest feedbackRequest = feedbackReqServices .getById (id );
213+ if (feedbackRequest .getExternalRecipientId () == null ) {
214+ throw new BadArgException ("This feedback request is not for an external recipient" );
215+ }
216+
217+ MemberProfile memberProfile = memberProfileServices .getById (feedbackRequest .getCreatorId ());
218+ return HttpResponse .ok (fromEntity (memberProfile ))
219+ .headers (headers -> headers .location (location (memberProfile .getId ())));
220+ }
221+
145222}
0 commit comments