package routes

import (
	"nearle/facade"

	"github.com/gofiber/fiber/v2"
)

// Routes for the Nearle POS terminal.
//
// The paths are fixed by the till, which appends `/orders`, `/customers` and
// `/catalogue` to whatever base URL a shop enters in Settings. Set that base to
// this group — `https://your-host/live/api/v1/pos` — and the three line up.
//
// Kept in their own group rather than folded into the order routes because a
// terminal authenticates as a device, not as a signed-in user, and because
// these answer with a bare ack rather than the web app's response envelope.
func RegisterPosRoutes(api fiber.Router, f *facade.Facade) {

	pos := api.Group("/v1/pos")

	pos.Post("/orders", f.PosController.IngestOrders)
	pos.Post("/customers", f.PosController.IngestCustomers)
	pos.Get("/catalogue", f.PosController.Catalogue)

	// Counter sales, read back out. The ingest above only ever writes; without
	// these a committed bill is unreachable from every screen in the product.
	pos.Get("/sales", f.PosController.GetSales)
	pos.Get("/sales/detail", f.PosController.GetSaleDetail)
	pos.Get("/sales/summary", f.PosController.GetSalesSummary)

	// Terminal presence, read from Redis. What the rider app's POS board and a
	// support call both hit — the tills themselves publish health over the
	// broker rather than posting it here.
	pos.Get("/health/terminal", f.PosController.TerminalHealth)
	pos.Get("/health/location", f.PosController.LocationHealth)
}
