144 lines
4.0 KiB
Go
Raw Normal View History

2023-10-08 15:59:42 +07:00
package request
import (
2025-03-04 20:36:17 +07:00
"enaklo-pos-be/internal/common/mycontext"
"enaklo-pos-be/internal/constants/transaction"
"enaklo-pos-be/internal/entity"
2023-10-08 15:59:42 +07:00
)
type Order struct {
2025-03-08 00:35:23 +07:00
CustomerName string `json:"customer_name"`
CustomerPhone string `json:"customer_phone"`
CustomerEmail string `json:"customer_email"`
PaymentMethod string `json:"payment_method"`
OrderItems []OrderItem `json:"order_items"`
2023-10-08 15:59:42 +07:00
}
2024-08-04 01:14:59 +07:00
type CustomerOrder struct {
PartnerID int64 `json:"partner_id" validate:"required"`
2024-10-15 11:52:34 +07:00
PaymentMethod transaction.PaymentMethod `json:"payment_method" validate:"required,oneof=VA"`
2024-08-18 12:38:29 +07:00
OrderItems []OrderItem `json:"order_items" validate:"required,min=1"`
VisitDate string `json:"visit_date" validate:"required"`
2024-10-15 11:52:34 +07:00
BankCode string `json:"bank_code"`
2024-08-04 01:14:59 +07:00
}
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"`
2024-07-30 22:02:36 +07:00
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"`
2024-08-02 14:41:41 +07:00
Period string `form:"period" json:"period" example:"1d,7d,1m"`
2024-08-10 23:21:01 +07:00
Source string `form:"source" json:"source" example:"tes"`
2024-07-26 11:37:22 +07:00
}
2024-08-13 23:09:05 +07:00
type Checkin struct {
QRCode string `json:"qr_code" validate:"required"`
}
type CheckinExecute struct {
Token string `json:"token" validate:"required"`
}
func (o *OrderParam) ToOrderEntity(ctx mycontext.Context) entity.OrderSearch {
2024-08-27 19:53:25 +07:00
if o.Limit == 0 {
o.Limit = 10
}
return entity.OrderSearch{
2024-07-30 22:02:36 +07:00
PartnerID: ctx.GetPartnerID(),
SiteID: ctx.GetSiteID(),
IsAdmin: ctx.IsAdmin(),
PaymentType: o.PaymentType,
2024-07-30 22:02:36 +07:00
Limit: o.Limit,
Offset: o.Offset,
StartDate: o.StartDate,
EndDate: o.EndDate,
Status: o.Status,
2024-08-02 14:41:41 +07:00
Period: o.Period,
2024-08-10 23:21:01 +07:00
Source: o.Source,
2024-07-26 11:37:22 +07:00
}
}
2023-10-08 15:59:42 +07:00
type OrderItem struct {
2024-06-04 02:59:31 +07:00
ProductID int64 `json:"product_id" validate:"required"`
2025-03-08 00:35:23 +07:00
Quantity int `json:"quantity" validate:"required"`
2023-10-08 15:59:42 +07:00
}
2025-03-08 00:35:23 +07:00
func (o *Order) ToEntity(partnerID, createdBy int64) *entity.OrderRequest {
2024-06-04 02:59:31 +07:00
orderItems := make([]entity.OrderItemRequest, len(o.OrderItems))
for i, item := range o.OrderItems {
orderItems[i] = entity.OrderItemRequest{
ProductID: item.ProductID,
Quantity: item.Quantity,
2023-10-08 15:59:42 +07:00
}
}
2024-06-04 02:59:31 +07:00
return &entity.OrderRequest{
2025-03-08 00:35:23 +07:00
PartnerID: partnerID,
PaymentMethod: o.PaymentMethod,
2024-06-04 02:59:31 +07:00
OrderItems: orderItems,
CreatedBy: createdBy,
2024-08-04 01:14:59 +07:00
Source: "POS",
2023-10-08 15:59:42 +07:00
}
}
2024-06-04 02:59:31 +07:00
type Execute struct {
PartnerID int64 `json:"partner_id" validate:"required"`
Token string `json:"token"`
2023-10-08 15:59:42 +07:00
}
2024-06-04 02:59:31 +07:00
func (e Execute) ToOrderExecuteRequest(createdBy int64) *entity.OrderExecuteRequest {
return &entity.OrderExecuteRequest{
CreatedBy: createdBy,
PartnerID: e.PartnerID,
Token: e.Token,
2023-10-08 15:59:42 +07:00
}
}
2024-08-04 01:14:59 +07:00
type OrderParamCustomer struct {
2024-08-06 16:21:55 +07:00
ID int64 `form:"id" json:"id" example:"10"`
ReferenceID string `form:"reference_id" json:"reference_id" example:"10"`
Limit int `form:"limit" json:"limit" example:"10"`
Offset int `form:"offset" json:"offset" example:"0"`
2024-08-04 01:14:59 +07:00
}
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,
}
}
2024-08-21 15:48:50 +07:00
type OrderPrintDetail struct {
ID int64 `form:"id" json:"id" example:"10"`
}