Files
apskel-pos-backend/internal/contract/self_order_contract.go
T

85 lines
2.8 KiB
Go
Raw Normal View History

2026-05-05 21:07:03 +07:00
package contract
import (
"github.com/google/uuid"
)
2026-05-08 18:41:14 +07:00
type SelfOrderTableTokenResponse struct {
SessionID string `json:"session_id"`
TableID string `json:"table_id"`
OrganizationID string `json:"organization_id"`
OutletID string `json:"outlet_id"`
TableName string `json:"table_name"`
OutletName string `json:"outlet_name"`
Status string `json:"status"`
}
2026-05-05 21:07:03 +07:00
type SelfOrderMenuRequest struct {
2026-05-08 23:18:52 +07:00
SessionID string `form:"session_id" validate:"required"`
2026-05-05 21:07:03 +07:00
}
type SelfOrderMenuResponse struct {
OutletName string `json:"outlet_name"`
TableName string `json:"table_name"`
Categories []SelfOrderMenuCategory `json:"categories"`
}
type SelfOrderMenuCategory struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Order int `json:"order"`
Products []SelfOrderMenuItem `json:"products"`
}
type SelfOrderMenuItem struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Price float64 `json:"price"`
ImageURL *string `json:"image_url,omitempty"`
Variants []SelfOrderMenuVariant `json:"variants,omitempty"`
}
type SelfOrderMenuVariant struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
PriceModifier float64 `json:"price_modifier"`
}
type SelfOrderCreateOrderRequest struct {
SessionID string `json:"session_id" validate:"required"`
CustomerName string `json:"customer_name" validate:"required"`
OrderType string `json:"order_type" validate:"required,oneof=dine_in takeaway delivery"`
OrderItems []SelfOrderCreateOrderItem `json:"order_items" validate:"required,min=1,dive"`
2026-05-05 21:07:03 +07:00
}
type SelfOrderCreateOrderItem struct {
ProductID uuid.UUID `json:"product_id" validate:"required"`
ProductVariantID *uuid.UUID `json:"product_variant_id,omitempty"`
Quantity int `json:"quantity" validate:"required,min=1"`
Notes *string `json:"notes,omitempty"`
}
2026-05-06 11:56:11 +07:00
type SelfOrderListCategoriesRequest struct {
OrganizationID string `form:"organization_id" validate:"required"`
2026-05-08 23:56:06 +07:00
OutletID string `form:"outlet_id" validate:"required"`
2026-05-06 11:56:11 +07:00
}
type SelfOrderCategoryItem struct {
ID uuid.UUID `json:"id"`
Name string `json:"name"`
Description *string `json:"description,omitempty"`
Order int `json:"order"`
}
type SelfOrderListCategoriesResponse struct {
Categories []SelfOrderCategoryItem `json:"categories"`
}
2026-05-09 00:12:00 +07:00
type SelfOrderListOrdersResponse struct {
2026-05-10 21:19:37 +07:00
Orders []OrderResponse `json:"orders"`
2026-05-09 00:12:00 +07:00
}
2026-05-10 21:19:37 +07:00
type SelfOrderOrderLineItem = OrderItemResponse