2025-11-15 15:46:24 +00:00
|
|
|
package request
|
|
|
|
|
|
|
|
|
|
import (
|
2025-11-15 15:59:30 +00:00
|
|
|
"jaecoo-be/app/database/entity"
|
|
|
|
|
"jaecoo-be/utils/paginator"
|
2025-11-15 15:46:24 +00:00
|
|
|
"strconv"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type CampaignDestinationsQueryRequest struct {
|
|
|
|
|
Name *string `json:"name"`
|
|
|
|
|
CampaignTypeID *uint `json:"campaignTypeId"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
Pagination *paginator.Pagination `json:"pagination"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type CampaignDestinationsCreateRequest struct {
|
|
|
|
|
CampaignTypeID uint `json:"campaignTypeId" validate:"required"`
|
|
|
|
|
Name string `json:"name" validate:"required"`
|
|
|
|
|
SubType *string `json:"subType"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
URL *string `json:"url"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
CreatedById *uint `json:"createdById"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req CampaignDestinationsCreateRequest) ToEntity() *entity.CampaignDestinations {
|
|
|
|
|
isActive := true
|
|
|
|
|
if req.IsActive != nil {
|
|
|
|
|
isActive = *req.IsActive
|
|
|
|
|
}
|
|
|
|
|
return &entity.CampaignDestinations{
|
|
|
|
|
CampaignTypeID: req.CampaignTypeID,
|
|
|
|
|
SubType: req.SubType,
|
|
|
|
|
Name: req.Name,
|
|
|
|
|
Description: req.Description,
|
|
|
|
|
URL: req.URL,
|
|
|
|
|
IsActive: &isActive,
|
|
|
|
|
CreatedAt: time.Now(),
|
|
|
|
|
UpdatedAt: time.Now(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type CampaignDestinationsUpdateRequest struct {
|
|
|
|
|
CampaignTypeID uint `json:"campaignTypeId" validate:"required"`
|
|
|
|
|
Name string `json:"name" validate:"required"`
|
|
|
|
|
SubType *string `json:"subType"`
|
|
|
|
|
Description *string `json:"description"`
|
|
|
|
|
URL *string `json:"url"`
|
|
|
|
|
IsActive *bool `json:"isActive"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req CampaignDestinationsUpdateRequest) ToEntity() *entity.CampaignDestinations {
|
|
|
|
|
return &entity.CampaignDestinations{
|
|
|
|
|
CampaignTypeID: req.CampaignTypeID,
|
|
|
|
|
SubType: req.SubType,
|
|
|
|
|
Name: req.Name,
|
|
|
|
|
Description: req.Description,
|
|
|
|
|
URL: req.URL,
|
|
|
|
|
IsActive: req.IsActive,
|
|
|
|
|
UpdatedAt: time.Now(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type CampaignDestinationsQueryRequestContext struct {
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
CampaignTypeID string `json:"campaignTypeId"`
|
|
|
|
|
IsActive string `json:"isActive"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (req CampaignDestinationsQueryRequestContext) ToParamRequest() CampaignDestinationsQueryRequest {
|
|
|
|
|
var request CampaignDestinationsQueryRequest
|
|
|
|
|
|
|
|
|
|
if name := req.Name; name != "" {
|
|
|
|
|
request.Name = &name
|
|
|
|
|
}
|
|
|
|
|
if campaignTypeIDStr := req.CampaignTypeID; campaignTypeIDStr != "" {
|
|
|
|
|
campaignTypeID, err := strconv.ParseUint(campaignTypeIDStr, 10, 32)
|
|
|
|
|
if err == nil {
|
|
|
|
|
campaignTypeIDUint := uint(campaignTypeID)
|
|
|
|
|
request.CampaignTypeID = &campaignTypeIDUint
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if isActiveStr := req.IsActive; isActiveStr != "" {
|
|
|
|
|
isActive, err := strconv.ParseBool(isActiveStr)
|
|
|
|
|
if err == nil {
|
|
|
|
|
request.IsActive = &isActive
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return request
|
|
|
|
|
}
|