aditya.siregar 1a9d04a2d9 Lat Long
2024-08-14 23:44:34 +07:00

93 lines
2.7 KiB
Go

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"`
Region string `json:"region"`
Regency string `json:"regency"`
Lat float64 `json:"lat"`
Long float64 `json:"long"`
}
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,
Region: r.Region,
Regency: r.Regency,
Lat: r.Lat,
Long: r.Long,
}
}
type SiteParam struct {
Search string `form:"search"`
PartnerID *int64 `form:"partner_id"`
Name string `form:"name"`
Limit int `form:"limit,default=10"`
Offset int `form:"offset,default=0"`
}
func (r *SiteParam) ToEntity(ctx mycontext.Context, partnerID *int64, siteID *int64) entity.SiteSearch {
if partnerID == nil {
partnerID = r.PartnerID
}
return entity.SiteSearch{
PartnerID: partnerID,
IsAdmin: ctx.IsAdmin(),
SiteID: siteID,
Search: r.Search,
Name: r.Name,
Limit: r.Limit,
Offset: r.Offset,
}
}