47 lines
1.4 KiB
Go
Raw Normal View History

2025-08-07 22:45:02 +07:00
package models
import "github.com/google/uuid"
const (
Amount = "AMOUNT"
Item = "ITEM"
)
type SplitBillRequest struct {
OrderID uuid.UUID `validate:"required"`
PaymentMethodID uuid.UUID `validate:"required"`
CustomerID uuid.UUID `validate:"required"`
Type string `validate:"required,oneof=ITEM AMOUNT"`
Items []SplitBillItemRequest `validate:"required_if=Type ITEM,dive"`
Amount float64 `validate:"required_if=Type AMOUNT,min=0"`
OrganizationID uuid.UUID
}
func (s *SplitBillRequest) IsItem() bool {
return s.Type == Item
}
func (s *SplitBillRequest) IsAmount() bool {
return s.Type == Amount
}
type SplitBillItemRequest struct {
OrderItemID uuid.UUID `validate:"required"`
2025-08-08 22:33:08 +07:00
Quantity int `validate:"required,min=0"`
2025-08-07 22:45:02 +07:00
}
type SplitBillResponse struct {
PaymentID uuid.UUID `json:"payment_id"`
OrderID uuid.UUID `json:"order_id"`
CustomerID uuid.UUID `json:"customer_id"`
Type string `json:"type"`
Amount float64 `json:"amount"`
Items []SplitBillItemResponse `json:"items,omitempty"`
Message string `json:"message"`
}
type SplitBillItemResponse struct {
OrderItemID uuid.UUID `json:"order_item_id"`
Amount float64 `json:"amount"`
}