package handlers

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// ListAllOrders 管理端全部订单。
// @Summary 管理端获取全部订单
// @Description 返回数据库中订单全量列表（含敏感字段），供后台管理；需 `X-Admin-Token`。
// @Tags 管理端-订单
// @Produce json
// @Security AdminToken
// @Success 200 {object} SwaggerOrdersBody
// @Failure 401 {object} SwaggerErrorBody
// @Failure 500 {object} SwaggerErrorBody
// @Router /api/admin/orders [get]
func (h *AdminHandler) ListAllOrders(c *gin.Context) {
	if !h.requireAdmin(c) {
		return
	}
	orders, err := h.orderStore.ListAll()
	if err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}
	c.JSON(http.StatusOK, gin.H{"data": orders})
}

// DeleteOrder 管理端删除订单。
// @Summary 管理端删除指定订单
// @Description 按路径中的订单 ID 删除记录；不可恢复请谨慎操作。
// @Tags 管理端-订单
// @Produce json
// @Security AdminToken
// @Param id path string true "订单ID"
// @Success 200 {object} SwaggerBoolOKWrap
// @Failure 400 {object} SwaggerErrorBody
// @Failure 401 {object} SwaggerErrorBody
// @Failure 500 {object} SwaggerErrorBody
// @Router /api/admin/orders/{id} [delete]
func (h *AdminHandler) DeleteOrder(c *gin.Context) {
	if !h.requireAdmin(c) {
		return
	}
	orderID := c.Param("id")
	if orderID == "" {
		c.JSON(http.StatusBadRequest, gin.H{"error": "缺少订单 ID"})
		return
	}
	if err := h.orderStore.Delete(orderID); err != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
		return
	}
	c.JSON(http.StatusOK, gin.H{"data": gin.H{"ok": true}})
}
