47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
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"`
|
|
Amount float64 `validate:"required,min=0"`
|
|
}
|
|
|
|
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"`
|
|
}
|