package request import ( "furtuna-be/internal/common/mycontext" "furtuna-be/internal/constants/transaction" "furtuna-be/internal/entity" ) type Order struct { PartnerID int64 `json:"partner_id" validate:"required"` PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required"` OrderItems []OrderItem `json:"order_items" validate:"required"` } type HistoryOrderParam struct { Limit int `form:"limit" json:"limit" example:"10"` Offset int `form:"offset" json:"offset" example:"0"` } func (o *HistoryOrderParam) ToEntity(ctx mycontext.Context) entity.HistoryOrderSearch { return entity.HistoryOrderSearch{ PartnerID: ctx.GetPartnerID(), IsAdmin: ctx.IsAdmin(), Limit: o.Limit, Offset: o.Offset, } } type OrderItem struct { ProductID int64 `json:"product_id" validate:"required"` Quantity int64 `json:"quantity" validate:"required"` } func (o *Order) ToEntity(createdBy int64) *entity.OrderRequest { orderItems := make([]entity.OrderItemRequest, len(o.OrderItems)) for i, item := range o.OrderItems { orderItems[i] = entity.OrderItemRequest{ ProductID: item.ProductID, Quantity: item.Quantity, } } return &entity.OrderRequest{ PartnerID: o.PartnerID, PaymentMethod: string(o.PaymentMethod), OrderItems: orderItems, CreatedBy: createdBy, } } type Execute struct { PartnerID int64 `json:"partner_id" validate:"required"` Token string `json:"token"` } func (e Execute) ToOrderExecuteRequest(createdBy int64) *entity.OrderExecuteRequest { return &entity.OrderExecuteRequest{ CreatedBy: createdBy, PartnerID: e.PartnerID, Token: e.Token, } }