76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package request
|
|
|
|
import (
|
|
"furtuna-be/internal/entity"
|
|
)
|
|
|
|
type Site struct {
|
|
ID int64 `json:"id"`
|
|
Name string `json:"name" validate:"required"`
|
|
PartnerID *int64 `json:"partner_id"`
|
|
Image string `json:"image"`
|
|
Address string `json:"address"`
|
|
LocationLink string `json:"location_link"`
|
|
Description string `json:"description"`
|
|
Highlight string `json:"highlight"`
|
|
ContactPerson string `json:"contact_person"`
|
|
TnC string `json:"tnc"`
|
|
AdditionalInfo string `json:"additional_info"`
|
|
Status string `json:"status"`
|
|
IsSeasonTicket bool `json:"is_season_ticket"`
|
|
IsDiscountActive bool `json:"is_discount_active"`
|
|
Products []Product `json:"products"`
|
|
}
|
|
|
|
func (r *Site) ToEntity(createdBy int64) *entity.Site {
|
|
var products []entity.Product
|
|
for _, p := range r.Products {
|
|
products = append(products, entity.Product{
|
|
ID: p.ID,
|
|
PartnerID: *r.PartnerID,
|
|
Name: p.Name,
|
|
Type: p.Type,
|
|
Price: p.Price,
|
|
IsWeekendTicket: p.IsWeekendTicket,
|
|
IsSeasonTicket: p.IsSeasonTicket,
|
|
Status: p.Status,
|
|
Description: p.Description,
|
|
CreatedBy: createdBy,
|
|
})
|
|
}
|
|
|
|
return &entity.Site{
|
|
ID: r.ID,
|
|
Name: r.Name,
|
|
PartnerID: *r.PartnerID,
|
|
Image: r.Image,
|
|
Address: r.Address,
|
|
LocationLink: r.LocationLink,
|
|
Description: r.Description,
|
|
Highlight: r.Highlight,
|
|
ContactPerson: r.ContactPerson,
|
|
TnC: r.TnC,
|
|
AdditionalInfo: r.AdditionalInfo,
|
|
Status: r.Status,
|
|
IsSeasonTicket: r.IsSeasonTicket,
|
|
IsDiscountActive: r.IsDiscountActive,
|
|
Products: products,
|
|
}
|
|
}
|
|
|
|
type SiteParam struct {
|
|
Search string `form:"search"`
|
|
Name string `form:"name"`
|
|
Limit int `form:"limit,default=10"`
|
|
Offset int `form:"offset,default=0"`
|
|
}
|
|
|
|
func (r *SiteParam) ToEntity() entity.SiteSearch {
|
|
return entity.SiteSearch{
|
|
Search: r.Search,
|
|
Name: r.Name,
|
|
Limit: r.Limit,
|
|
Offset: r.Offset,
|
|
}
|
|
}
|