@@ -6,6 +6,7 @@ package users
66import (
77 "errors"
88
9+ "github.com/go-openapi/strfmt"
910 "github.com/linuxfoundation/easycla/cla-backend-go/events"
1011 "github.com/linuxfoundation/easycla/cla-backend-go/gen/v1/models"
1112 "github.com/linuxfoundation/easycla/cla-backend-go/user"
@@ -27,6 +28,7 @@ type Service interface {
2728 GetUserByGitLabUsername (gitlabUsername string ) (* models.User , error )
2829 SearchUsers (field string , searchTerm string , fullMatch bool ) (* models.Users , error )
2930 UpdateUserCompanyID (userID , companyID , note string ) error
31+ ConvertUserModelToUserCompatModel (* models.User ) (* models.UserCompat , error )
3032}
3133
3234type service struct {
@@ -192,3 +194,46 @@ func (s service) SearchUsers(searchField string, searchTerm string, fullMatch bo
192194func (s service ) UpdateUserCompanyID (userID , companyID , note string ) error {
193195 return s .repo .UpdateUserCompanyID (userID , companyID , note )
194196}
197+
198+ func stringPtr (s string ) * string {
199+ if s == "" {
200+ return nil
201+ }
202+ return & s
203+ }
204+
205+ func boolPtr (b bool ) * bool {
206+ return & b
207+ }
208+
209+ // ConvertUserModelToUserCompatModel converts User to UserCompat
210+ func (s service ) ConvertUserModelToUserCompatModel (user * models.User ) (* models.UserCompat , error ) {
211+ userEmails := make ([]strfmt.Email , len (user .Emails ))
212+ for i , e := range user .Emails {
213+ userEmails [i ] = strfmt .Email (e )
214+ }
215+
216+ var lfEmail * strfmt.Email
217+ if user .LfEmail != "" {
218+ lfEmail = & user .LfEmail
219+ }
220+
221+ return & models.UserCompat {
222+ IsSanctioned : boolPtr (user .IsSanctioned ),
223+ LfEmail : lfEmail ,
224+ LfSub : stringPtr (user .LfSub ),
225+ LfUsername : stringPtr (user .LfUsername ),
226+ Note : stringPtr (user .Note ),
227+ UserCompanyID : stringPtr (user .CompanyID ),
228+ UserEmails : userEmails ,
229+ UserExternalID : stringPtr (user .UserExternalID ),
230+ UserGithubID : stringPtr (user .GithubID ),
231+ UserGithubUsername : stringPtr (user .GithubUsername ),
232+ UserGitlabID : stringPtr (user .GitlabID ),
233+ UserGitlabUsername : stringPtr (user .GitlabUsername ),
234+ UserID : user .UserID ,
235+ UserLdapID : nil ,
236+ UserName : stringPtr (user .Username ),
237+ Version : "v1" ,
238+ }, nil
239+ }
0 commit comments