import { Router } from "express";
import { protect } from "../../middlewares/auth.middleware";
import { attachShop } from "../../middlewares/shop.middleware";
import {
    createSumupCheckout,
    initiateSumupTapToPay,
    activateSumupTapToPay,
    completeSumupTapToPay,
    cancelSumupCheckout,
    checkSumupReaderStatus,
    handleSumupWebhook,
} from "./sumup.controller";

const router = Router();

// 🔒 Routes protégées
router.post(
    "/checkout",
    protect,
    attachShop,
    createSumupCheckout
);

// ❌ Annuler un checkout en cours (terminate reader)
router.post(
    "/checkout/cancel",
    protect,
    attachShop,
    cancelSumupCheckout
);

// 📡 Statut du reader (disponible / occupé / hors ligne)
router.get(
    "/reader-status/:deviceId",
    protect,
    attachShop,
    checkSumupReaderStatus
);

// 📱 Tap To Pay — initié par l'app Flutter, finalisé par le SDK natif
router.post(
    "/tap-to-pay/initiate",
    protect,
    attachShop,
    initiateSumupTapToPay
);

router.post(
    "/tap-to-pay/activate",
    protect,
    attachShop,
    activateSumupTapToPay
);

router.post(
    "/tap-to-pay/complete",
    protect,
    attachShop,
    completeSumupTapToPay
);

// 🌍 Webhook public (PAS de protect) — POST et GET
// SumUp peut envoyer POST (webhook) ou GET (return_url redirect)
router.post("/webhook", handleSumupWebhook);
router.get("/webhook", handleSumupWebhook);
router.post("/webhooks", handleSumupWebhook);
router.get("/webhooks", handleSumupWebhook);

export default router;