import { Router } from "express";
import {
    createDraftSession,
    discardDraftSession,
    finalizeDraftSession,
    getCurrentSession,
    getDraftSession,
    getLatestSession,
    getAllOpenSessions,
    getSessionHistory,
    getSessionOperations,
    openSession,
    closeSession,
    createDepositRefund,
    undoLastDepositRefund,
    createSessionOperation,
    updateSession,
    reopenSession,
} from "./cashSession.controller";

import { protect } from "../../middlewares/auth.middleware";
import { attachShop } from "../../middlewares/shop.middleware";

const router = Router();

router.get("/sessions/current", protect, attachShop, getCurrentSession);
router.get("/sessions/draft", protect, attachShop, getDraftSession);
router.get("/sessions/latest", protect, attachShop, getLatestSession);
router.get("/sessions/open", protect, attachShop, getAllOpenSessions);
router.get("/sessions/history", protect, attachShop, getSessionHistory);
router.get("/sessions/:id/operations", protect, attachShop, getSessionOperations);

router.post("/sessions/draft", protect, attachShop, createDraftSession);
router.post("/sessions/open", protect, attachShop, openSession);
router.patch("/sessions/:id", protect, attachShop, updateSession);
router.post("/sessions/:id/finalize", protect, attachShop, finalizeDraftSession);
router.delete("/sessions/:id/draft", protect, attachShop, discardDraftSession);
router.post("/sessions/:id/operations", protect, attachShop, createSessionOperation);
router.post("/sessions/:id/deposit-refunds", protect, attachShop, createDepositRefund);
router.post("/sessions/:id/deposit-refunds/undo-last", protect, attachShop, undoLastDepositRefund);
router.post("/sessions/:id/reopen", protect, attachShop, reopenSession);
router.post("/sessions/:id/close", protect, attachShop, closeSession);

export default router;