package request import ( "furtuna-be/internal/common/mycontext" "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(ctx mycontext.Context) entity.SiteSearch { return entity.SiteSearch{ PartnerID: ctx.GetPartnerID(), IsAdmin: ctx.IsAdmin(), Search: r.Search, Name: r.Name, Limit: r.Limit, Offset: r.Offset, } }