import { Router } from "express"
import * as shopController from "./shop.controller"
import { protect } from "@/middlewares/auth.middleware"
import { requireAdmin } from "@/middlewares/auth/requireAdmin";
import shopUserRoutes from "../shop-user/shop-user.routes";
import stationRoutes from "../station/station.routes";
import paymentConfigRoutes from "../payment/payment-config.routes";
import depositDefinitionRoutes from "../depositDefinition/depositDefinition.routes";

const router = Router()

router.use(protect)

router.post("/", requireAdmin, shopController.createShop)
router.get("/", requireAdmin, shopController.getMyShops)
router.get("/:id", requireAdmin, shopController.getShopById)
router.delete("/:id", requireAdmin, shopController.deleteShop)

router.get("/:id/events", shopController.getShopEvents)

router.patch("/:shopId", requireAdmin, shopController.updateShop)

router.use("/:shopId/shop-users", requireAdmin, shopUserRoutes)
router.use("/:shopId/stations", requireAdmin, stationRoutes)

// Payment config: lecture ouverte (POS + Admin), mutations admin-only gérées dans le sous-router
router.use("/:shopId/payment-methods", paymentConfigRoutes)
router.use("/:shopId/deposit-definitions", depositDefinitionRoutes)

export default router