136 lines
3.1 KiB
Go
136 lines
3.1 KiB
Go
package mappers
|
|
|
|
import (
|
|
"apskel-pos-be/internal/contract"
|
|
"apskel-pos-be/internal/entities"
|
|
"apskel-pos-be/internal/models"
|
|
)
|
|
|
|
func ToRewardResponse(entity *entities.Reward) *models.RewardResponse {
|
|
if entity == nil {
|
|
return nil
|
|
}
|
|
|
|
var tnc *models.TermsAndConditionsStruct
|
|
if entity.Tnc != nil {
|
|
var sections []models.TncSectionStruct
|
|
for _, section := range entity.Tnc.Sections {
|
|
sections = append(sections, models.TncSectionStruct{
|
|
Title: section.Title,
|
|
Rules: section.Rules,
|
|
})
|
|
}
|
|
tnc = &models.TermsAndConditionsStruct{
|
|
Sections: sections,
|
|
ExpiryDays: entity.Tnc.ExpiryDays,
|
|
}
|
|
}
|
|
|
|
var images *[]string
|
|
if entity.Images != nil {
|
|
images = entity.Images
|
|
}
|
|
|
|
return &models.RewardResponse{
|
|
ID: entity.ID,
|
|
Name: entity.Name,
|
|
RewardType: string(entity.RewardType),
|
|
CostPoints: entity.CostPoints,
|
|
Stock: entity.Stock,
|
|
MaxPerCustomer: entity.MaxPerCustomer,
|
|
Tnc: tnc,
|
|
Metadata: entity.Metadata,
|
|
Images: images,
|
|
CreatedAt: entity.CreatedAt,
|
|
UpdatedAt: entity.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
func ToRewardEntity(request *contract.CreateRewardRequest) *entities.Reward {
|
|
if request == nil {
|
|
return nil
|
|
}
|
|
|
|
var tnc *entities.TermsAndConditions
|
|
if request.Tnc != nil {
|
|
var sections []entities.TncSection
|
|
for _, section := range request.Tnc.Sections {
|
|
sections = append(sections, entities.TncSection{
|
|
Title: section.Title,
|
|
Rules: section.Rules,
|
|
})
|
|
}
|
|
tnc = &entities.TermsAndConditions{
|
|
Sections: sections,
|
|
ExpiryDays: request.Tnc.ExpiryDays,
|
|
}
|
|
}
|
|
|
|
var images *[]string
|
|
if request.Images != nil {
|
|
images = request.Images
|
|
}
|
|
|
|
return &entities.Reward{
|
|
Name: request.Name,
|
|
RewardType: entities.RewardType(request.RewardType),
|
|
CostPoints: request.CostPoints,
|
|
Stock: request.Stock,
|
|
MaxPerCustomer: request.MaxPerCustomer,
|
|
Tnc: tnc,
|
|
Metadata: request.Metadata,
|
|
Images: images,
|
|
}
|
|
}
|
|
|
|
func ToRewardEntityFromUpdate(request *contract.UpdateRewardRequest) *entities.Reward {
|
|
if request == nil {
|
|
return nil
|
|
}
|
|
|
|
var tnc *entities.TermsAndConditions
|
|
if request.Tnc != nil {
|
|
var sections []entities.TncSection
|
|
for _, section := range request.Tnc.Sections {
|
|
sections = append(sections, entities.TncSection{
|
|
Title: section.Title,
|
|
Rules: section.Rules,
|
|
})
|
|
}
|
|
tnc = &entities.TermsAndConditions{
|
|
Sections: sections,
|
|
ExpiryDays: request.Tnc.ExpiryDays,
|
|
}
|
|
}
|
|
|
|
var images *[]string
|
|
if request.Images != nil {
|
|
images = request.Images
|
|
}
|
|
|
|
return &entities.Reward{
|
|
ID: request.ID,
|
|
Name: request.Name,
|
|
RewardType: entities.RewardType(request.RewardType),
|
|
CostPoints: request.CostPoints,
|
|
Stock: request.Stock,
|
|
MaxPerCustomer: request.MaxPerCustomer,
|
|
Tnc: tnc,
|
|
Metadata: request.Metadata,
|
|
Images: images,
|
|
}
|
|
}
|
|
|
|
func ToRewardResponseSlice(entities []entities.Reward) []models.RewardResponse {
|
|
if entities == nil {
|
|
return nil
|
|
}
|
|
|
|
responses := make([]models.RewardResponse, len(entities))
|
|
for i, entity := range entities {
|
|
responses[i] = *ToRewardResponse(&entity)
|
|
}
|
|
|
|
return responses
|
|
}
|