import { Router } from "express";
import { protect } from "../../middlewares/auth.middleware";
import { attachShop } from "../../middlewares/shop.middleware";
import { requirePosRoles } from "@/middlewares/authz.middleware";
import { addPayment, cancelPayment, getOrderPaymentAttempts, getPaymentOptions, startPaymentAttempt, checkPaymentAttemptStatus, manualResolvePaymentAttempt } from "./payment.controller";

const router = Router();

router.use(protect);
router.use(attachShop);

router.get("/orders/:id/payment-options", requirePosRoles("MANAGER", "CASHIER", "STAFF"), getPaymentOptions);
router.get("/orders/:id/payment-attempts", requirePosRoles("MANAGER", "CASHIER", "STAFF"), getOrderPaymentAttempts);
router.post("/orders/:id/payment-attempts", requirePosRoles("MANAGER", "CASHIER", "STAFF"), startPaymentAttempt);
router.post("/orders/:id/payments", requirePosRoles("MANAGER", "CASHIER", "STAFF"), addPayment);
router.post("/orders/:id/payments/:paymentId/cancel", requirePosRoles("MANAGER", "CASHIER", "STAFF"), cancelPayment);
router.get("/payment-attempts/:attemptId/status", requirePosRoles("MANAGER", "CASHIER", "STAFF"), checkPaymentAttemptStatus);
router.post("/payment-attempts/:attemptId/manual-resolution", requirePosRoles("MANAGER", "CASHIER", "STAFF"), manualResolvePaymentAttempt);

export default router;