163 lines
5.4 KiB
Go
163 lines
5.4 KiB
Go
|
|
package request
|
||
|
|
|
||
|
|
import (
|
||
|
|
"strconv"
|
||
|
|
"time"
|
||
|
|
"web-qudo-be/app/database/entity"
|
||
|
|
"web-qudo-be/utils/paginator"
|
||
|
|
)
|
||
|
|
|
||
|
|
type SchedulesGeneric interface {
|
||
|
|
ToEntity()
|
||
|
|
}
|
||
|
|
|
||
|
|
type SchedulesQueryRequest struct {
|
||
|
|
Title *string `json:"title"`
|
||
|
|
Description *string `json:"description"`
|
||
|
|
Location *string `json:"location"`
|
||
|
|
TypeId *int `json:"typeId"`
|
||
|
|
StartDate *time.Time `json:"startDate"`
|
||
|
|
EndDate *time.Time `json:"endDate"`
|
||
|
|
IsLiveStreaming *bool `json:"isLiveStreaming"`
|
||
|
|
Speakers *string `json:"speakers"`
|
||
|
|
StatusId *int `json:"statusId"`
|
||
|
|
CreatedById *uint `json:"createdById"`
|
||
|
|
Pagination *paginator.Pagination `json:"pagination"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type SchedulesCreateRequest struct {
|
||
|
|
Title string `json:"title" validate:"required"`
|
||
|
|
Description string `json:"description" validate:"required"`
|
||
|
|
Location string `json:"location" validate:"required"`
|
||
|
|
IsLiveStreaming *bool `json:"isLiveStreaming"`
|
||
|
|
LiveStreamingUrl *string `json:"liveStreamingUrl"`
|
||
|
|
TypeId int `json:"typeId" validate:"required"`
|
||
|
|
StartDate *time.Time `json:"startDate"`
|
||
|
|
EndDate *time.Time `json:"endDate"`
|
||
|
|
StartTime *string `json:"startTime"`
|
||
|
|
EndTime *string `json:"endTime"`
|
||
|
|
Speakers string `json:"speakers" validate:"required"`
|
||
|
|
PosterImagePath *string `json:"posterImagePath"`
|
||
|
|
CreatedById *uint `json:"createdById"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req SchedulesCreateRequest) ToEntity() *entity.Schedules {
|
||
|
|
return &entity.Schedules{
|
||
|
|
Title: req.Title,
|
||
|
|
Description: req.Description,
|
||
|
|
Location: req.Location,
|
||
|
|
IsLiveStreaming: req.IsLiveStreaming,
|
||
|
|
LiveStreamingUrl: req.LiveStreamingUrl,
|
||
|
|
TypeId: req.TypeId,
|
||
|
|
StartDate: req.StartDate,
|
||
|
|
EndDate: req.EndDate,
|
||
|
|
StartTime: req.StartTime,
|
||
|
|
EndTime: req.EndTime,
|
||
|
|
Speakers: req.Speakers,
|
||
|
|
PosterImagePath: req.PosterImagePath,
|
||
|
|
CreatedById: req.CreatedById,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
type SchedulesUpdateRequest struct {
|
||
|
|
Title string `json:"title" validate:"required"`
|
||
|
|
Description string `json:"description" validate:"required"`
|
||
|
|
Location string `json:"location" validate:"required"`
|
||
|
|
IsLiveStreaming *bool `json:"isLiveStreaming"`
|
||
|
|
LiveStreamingUrl *string `json:"liveStreamingUrl"`
|
||
|
|
TypeId int `json:"typeId" validate:"required"`
|
||
|
|
StartDate *time.Time `json:"startDate"`
|
||
|
|
EndDate *time.Time `json:"endDate"`
|
||
|
|
StartTime *string `json:"startTime"`
|
||
|
|
EndTime *string `json:"endTime"`
|
||
|
|
Speakers string `json:"speakers" validate:"required"`
|
||
|
|
PosterImagePath *string `json:"posterImagePath"`
|
||
|
|
StatusId *int `json:"statusId"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req SchedulesUpdateRequest) ToEntity() *entity.Schedules {
|
||
|
|
return &entity.Schedules{
|
||
|
|
Title: req.Title,
|
||
|
|
Description: req.Description,
|
||
|
|
Location: req.Location,
|
||
|
|
IsLiveStreaming: req.IsLiveStreaming,
|
||
|
|
LiveStreamingUrl: req.LiveStreamingUrl,
|
||
|
|
TypeId: req.TypeId,
|
||
|
|
StartDate: req.StartDate,
|
||
|
|
EndDate: req.EndDate,
|
||
|
|
StartTime: req.StartTime,
|
||
|
|
EndTime: req.EndTime,
|
||
|
|
Speakers: req.Speakers,
|
||
|
|
PosterImagePath: req.PosterImagePath,
|
||
|
|
StatusId: req.StatusId,
|
||
|
|
UpdatedAt: time.Now(),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
type SchedulesQueryRequestContext struct {
|
||
|
|
Title string `json:"title"`
|
||
|
|
Description string `json:"description"`
|
||
|
|
Location string `json:"location"`
|
||
|
|
TypeId string `json:"typeId"`
|
||
|
|
StartDate string `json:"startDate"`
|
||
|
|
EndDate string `json:"endDate"`
|
||
|
|
IsLiveStreaming string `json:"isLiveStreaming"`
|
||
|
|
Speakers string `json:"speakers"`
|
||
|
|
StatusId string `json:"statusId"`
|
||
|
|
CreatedById string `json:"createdById"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (req SchedulesQueryRequestContext) ToParamRequest() SchedulesQueryRequest {
|
||
|
|
var request SchedulesQueryRequest
|
||
|
|
|
||
|
|
if title := req.Title; title != "" {
|
||
|
|
request.Title = &title
|
||
|
|
}
|
||
|
|
if description := req.Description; description != "" {
|
||
|
|
request.Description = &description
|
||
|
|
}
|
||
|
|
if location := req.Location; location != "" {
|
||
|
|
request.Location = &location
|
||
|
|
}
|
||
|
|
if typeIdStr := req.TypeId; typeIdStr != "" {
|
||
|
|
typeId, err := strconv.Atoi(typeIdStr)
|
||
|
|
if err == nil {
|
||
|
|
request.TypeId = &typeId
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if startDateStr := req.StartDate; startDateStr != "" {
|
||
|
|
if startDate, err := time.Parse("2006-01-02", startDateStr); err == nil {
|
||
|
|
request.StartDate = &startDate
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if endDateStr := req.EndDate; endDateStr != "" {
|
||
|
|
if endDate, err := time.Parse("2006-01-02", endDateStr); err == nil {
|
||
|
|
request.EndDate = &endDate
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if isLiveStreamingStr := req.IsLiveStreaming; isLiveStreamingStr != "" {
|
||
|
|
isLiveStreaming, err := strconv.ParseBool(isLiveStreamingStr)
|
||
|
|
if err == nil {
|
||
|
|
request.IsLiveStreaming = &isLiveStreaming
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if speakers := req.Speakers; speakers != "" {
|
||
|
|
request.Speakers = &speakers
|
||
|
|
}
|
||
|
|
if statusIdStr := req.StatusId; statusIdStr != "" {
|
||
|
|
statusId, err := strconv.Atoi(statusIdStr)
|
||
|
|
if err == nil {
|
||
|
|
request.StatusId = &statusId
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if createdByIdStr := req.CreatedById; createdByIdStr != "" {
|
||
|
|
createdById, err := strconv.Atoi(createdByIdStr)
|
||
|
|
if err == nil {
|
||
|
|
createdByIdUint := uint(createdById)
|
||
|
|
request.CreatedById = &createdByIdUint
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return request
|
||
|
|
}
|