initial commit 2
This commit is contained in:
194
application/entitymapping/user.go
Normal file
194
application/entitymapping/user.go
Normal file
@@ -0,0 +1,194 @@
|
||||
package entitymapping
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
||||
"bitbucket.org/nemt/nemt-portal-api/domain/entity"
|
||||
)
|
||||
|
||||
// userMapping has method to map User entities to view models
|
||||
type userMapping struct {
|
||||
mapper *Mapper
|
||||
}
|
||||
|
||||
// ToUserModel maps a User entity to User view model
|
||||
func (mapping *userMapping) ToUserModel(item entity.User) viewmodel.User {
|
||||
var birthDate *time.Time
|
||||
if !item.BirthDate.IsZero() {
|
||||
birthDate = &item.BirthDate
|
||||
}
|
||||
|
||||
first := ""
|
||||
last := ""
|
||||
fullName := strings.Split(item.Name, " ")
|
||||
if len(fullName) > 0 {
|
||||
first = fullName[0]
|
||||
if len(fullName) > 1 {
|
||||
last = fullName[len(fullName)-1]
|
||||
}
|
||||
}
|
||||
|
||||
return viewmodel.User{
|
||||
ID: item.UUID,
|
||||
Name: item.Name,
|
||||
First: first,
|
||||
Last: last,
|
||||
Email: &item.Email,
|
||||
PhoneNumber: &item.PhoneNumber,
|
||||
Gender: &item.Gender,
|
||||
Member: &item.Member,
|
||||
BirthDate: birthDate,
|
||||
Active: item.Active,
|
||||
Created: item.Created,
|
||||
Updated: item.Updated,
|
||||
Contacts: mapping.ToContactModelSlice(item.Contacts),
|
||||
Rides: mapping.mapper.Ride.ToRideModelSlice(item.Rides),
|
||||
Addresses: mapping.mapper.Address.ToAddressModelSlice(item.Addresses),
|
||||
Profiles: mapping.mapper.Profile.ToProfileModelSlice(item.Profiles),
|
||||
Organizations: mapping.mapper.Organization.ToOrganizationModelSlice(item.Organizations),
|
||||
Types: mapping.mapper.Organization.ToOrganizationTypeModelSlice(item.Types),
|
||||
}
|
||||
}
|
||||
|
||||
// ToUserModelSlice maps a User entity slice to User view model slice
|
||||
func (mapping *userMapping) ToUserModelSlice(list []entity.User) (retVal []viewmodel.User) {
|
||||
retVal = make([]viewmodel.User, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToUserModel(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToUserModel maps a User entity to User view model
|
||||
func (mapping *userMapping) ToUserEntity(item viewmodel.User) entity.User {
|
||||
user := entity.User{
|
||||
UUID: item.ID,
|
||||
Name: item.Name,
|
||||
Pass: item.Pass,
|
||||
Active: item.Active,
|
||||
Created: item.Created,
|
||||
Updated: item.Updated,
|
||||
Contacts: mapping.ToContactEntitySlice(item.Contacts),
|
||||
Profiles: mapping.mapper.Profile.ToProfileEntitySlice(item.Profiles),
|
||||
Organizations: mapping.mapper.Organization.ToOrganizationEntitySlice(item.Organizations),
|
||||
Types: mapping.mapper.Organization.ToOrganizationTypeEntitySlice(item.Types),
|
||||
}
|
||||
|
||||
if user.Name == "" {
|
||||
user.Name = fmt.Sprintf("%s %s", item.First, item.Last)
|
||||
}
|
||||
|
||||
if item.Email != nil {
|
||||
user.Email = *item.Email
|
||||
}
|
||||
|
||||
if item.PhoneNumber != nil {
|
||||
user.PhoneNumber = *item.PhoneNumber
|
||||
}
|
||||
|
||||
if item.Gender != nil {
|
||||
user.Gender = *item.Gender
|
||||
}
|
||||
|
||||
if item.Member != nil {
|
||||
user.Member = *item.Member
|
||||
}
|
||||
|
||||
if item.BirthDate != nil {
|
||||
user.BirthDate = *item.BirthDate
|
||||
}
|
||||
|
||||
return user
|
||||
}
|
||||
|
||||
// ToUserEntitySlice maps a User entity slice to User view model slice
|
||||
func (mapping *userMapping) ToUserEntitySlice(list []viewmodel.User) (retVal []entity.User) {
|
||||
retVal = make([]entity.User, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToUserEntity(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToContactTypeEntity maps a Contact type entity to Contact Type view model
|
||||
func (mapping *userMapping) ToContactTypeEntity(item viewmodel.ContactType) entity.ContactType {
|
||||
return entity.ContactType{
|
||||
Key: item.Key,
|
||||
Value: item.Value,
|
||||
}
|
||||
}
|
||||
|
||||
// ToContactTypeEntitySlice maps a User entity slice to Contact Type view model slice
|
||||
func (mapping *userMapping) ToContactTypeEntitySlice(list []viewmodel.ContactType) (retVal []entity.ContactType) {
|
||||
retVal = make([]entity.ContactType, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToContactTypeEntity(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToContactTypeModel maps a Contact type entity to Contact Type view model
|
||||
func (mapping *userMapping) ToContactTypeModel(item entity.ContactType) viewmodel.ContactType {
|
||||
return viewmodel.ContactType{
|
||||
Key: item.Key,
|
||||
Value: item.Value,
|
||||
}
|
||||
}
|
||||
|
||||
// ToContactTypeModelSlice maps a User entity slice to Contact Type view model slice
|
||||
func (mapping *userMapping) ToContactTypeModelSlice(list []entity.ContactType) (retVal []viewmodel.ContactType) {
|
||||
retVal = make([]viewmodel.ContactType, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToContactTypeModel(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToContactModel maps a Contact entity to Contact view model
|
||||
func (mapping *userMapping) ToContactModel(item entity.ContactInfo) viewmodel.Contact {
|
||||
return viewmodel.Contact{
|
||||
Type: mapping.ToContactTypeModel(item.Type),
|
||||
Value: item.Value,
|
||||
}
|
||||
}
|
||||
|
||||
// ToContactModelSlice maps a Contact entity slice to Contact view model slice
|
||||
func (mapping *userMapping) ToContactModelSlice(list []entity.ContactInfo) (retVal []viewmodel.Contact) {
|
||||
retVal = make([]viewmodel.Contact, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToContactModel(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToContactEntity maps a Contact entity to Contact view model
|
||||
func (mapping *userMapping) ToContactEntity(item viewmodel.Contact) entity.ContactInfo {
|
||||
return entity.ContactInfo{
|
||||
Type: mapping.ToContactTypeEntity(item.Type),
|
||||
Value: item.Value,
|
||||
}
|
||||
}
|
||||
|
||||
// ToContactEntitySlice maps a Contact entity slice to Contact view model slice
|
||||
func (mapping *userMapping) ToContactEntitySlice(list []viewmodel.Contact) (retVal []entity.ContactInfo) {
|
||||
retVal = make([]entity.ContactInfo, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToContactEntity(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
Reference in New Issue
Block a user