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"`
	Quantity    int       `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"`
}
