initial commit
This commit is contained in:
72
internal/application/profile/converter.go
Normal file
72
internal/application/profile/converter.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package profile
|
||||
|
||||
import (
|
||||
"base/internal/domain/profile"
|
||||
"base/internal/dto"
|
||||
)
|
||||
|
||||
// DomainProfileToProfileResponse converts a domain profile to ProfileResponse.
|
||||
// Used by specialist overview and other consumers that have a domain profile.
|
||||
func DomainProfileToProfileResponse(p *profile.Profile) *dto.ProfileResponse {
|
||||
if p == nil {
|
||||
return nil
|
||||
}
|
||||
roleLevel := ""
|
||||
if p.Hero.Role != nil {
|
||||
roleLevel = p.Hero.Role.Level
|
||||
}
|
||||
resp := &dto.ProfileResponse{
|
||||
ID: p.ID,
|
||||
Handle: p.Handle,
|
||||
PageSectionOrder: p.PageSectionOrder,
|
||||
Hero: dto.HeroDTO{
|
||||
RoleLevel: roleLevel,
|
||||
FirstName: p.Hero.FirstName,
|
||||
LastName: p.Hero.LastName,
|
||||
Company: p.Hero.Company,
|
||||
ShortDescription: p.Hero.ShortDescription,
|
||||
ResumeLink: p.Hero.ResumeLink,
|
||||
CTAEnabled: p.Hero.CTAEnabled,
|
||||
Avatar: p.Hero.Avatar,
|
||||
},
|
||||
About: dto.AboutDTO{
|
||||
ProfilePicture: p.About.ProfilePicture,
|
||||
About: p.About.About,
|
||||
},
|
||||
Contact: dto.ContactDTO{
|
||||
Email: p.Contact.Email,
|
||||
Phone: p.Contact.Phone,
|
||||
},
|
||||
PageSetting: dto.PageSettingDTO{
|
||||
VisibilityLevel: p.PageSetting.VisibilityLevel,
|
||||
},
|
||||
}
|
||||
|
||||
if p.Hero.Role != nil {
|
||||
resp.Hero.RoleID = &p.Hero.Role.ID
|
||||
}
|
||||
|
||||
for _, skill := range p.Skills {
|
||||
resp.Skills = append(resp.Skills, dto.SkillDTO{
|
||||
SkillName: skill.SkillName,
|
||||
Level: skill.Level,
|
||||
})
|
||||
}
|
||||
|
||||
for _, achievement := range p.About.Achievements {
|
||||
resp.About.Achievements = append(resp.About.Achievements, dto.AchievementDTO{
|
||||
Title: achievement.Title,
|
||||
Value: achievement.Value,
|
||||
Enabled: achievement.Enabled,
|
||||
})
|
||||
}
|
||||
|
||||
for _, sl := range p.Contact.SocialLinks {
|
||||
resp.Contact.SocialLinks = append(resp.Contact.SocialLinks, dto.SocialLinkDTO{
|
||||
LinkType: sl.LinkType,
|
||||
Link: sl.Link,
|
||||
})
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
Reference in New Issue
Block a user