121 lines
3.4 KiB
Go
121 lines
3.4 KiB
Go
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 CustomerOrder struct {
|
|
PartnerID int64 `json:"partner_id" validate:"required"`
|
|
PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required"`
|
|
OrderItems []OrderItem `json:"order_items" validate:"required"`
|
|
}
|
|
|
|
func (o *CustomerOrder) 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,
|
|
Source: "ONLINE",
|
|
}
|
|
}
|
|
|
|
type OrderParam struct {
|
|
PaymentType string `form:"payment_type" json:"payment_type" example:"CASH"`
|
|
StartDate string `form:"start_date" json:"start_date"`
|
|
EndDate string `form:"end_date" json:"end_date"`
|
|
Status string `form:"status" json:"status"`
|
|
Limit int `form:"limit" json:"limit" example:"10"`
|
|
Offset int `form:"offset" json:"offset" example:"0"`
|
|
Period string `form:"period" json:"period" example:"1d,7d,1m"`
|
|
}
|
|
|
|
func (o *OrderParam) ToOrderEntity(ctx mycontext.Context) entity.OrderSearch {
|
|
return entity.OrderSearch{
|
|
PartnerID: ctx.GetPartnerID(),
|
|
SiteID: ctx.GetSiteID(),
|
|
IsAdmin: ctx.IsAdmin(),
|
|
PaymentType: o.PaymentType,
|
|
Limit: o.Limit,
|
|
Offset: o.Offset,
|
|
StartDate: o.StartDate,
|
|
EndDate: o.EndDate,
|
|
Status: o.Status,
|
|
Period: o.Period,
|
|
}
|
|
}
|
|
|
|
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,
|
|
Source: "POS",
|
|
}
|
|
}
|
|
|
|
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,
|
|
}
|
|
}
|
|
|
|
type OrderParamCustomer struct {
|
|
ID int64 `form:"id" json:"id" example:"10"`
|
|
Limit int `form:"limit" json:"limit" example:"10"`
|
|
Offset int `form:"offset" json:"offset" example:"0"`
|
|
}
|
|
|
|
func (o *OrderParamCustomer) ToOrderEntity(ctx mycontext.Context) entity.OrderSearch {
|
|
if o.Limit == 0 {
|
|
o.Limit = 10
|
|
}
|
|
|
|
return entity.OrderSearch{
|
|
PartnerID: ctx.GetPartnerID(),
|
|
SiteID: ctx.GetSiteID(),
|
|
IsAdmin: ctx.IsAdmin(),
|
|
Limit: o.Limit,
|
|
Offset: o.Offset,
|
|
CreatedBy: ctx.RequestedBy(),
|
|
IsCustomer: true,
|
|
}
|
|
}
|