import { Hono } from "hono";
import { withConsoleUserSession } from "@/middlewares/withConsoleUserSession";
import {
  getHoldingBalancesHandler,
  syncHoldingBalancesHandler,
  getManagersHandler,
  getTransactionsHandler,
  transferPointsHandler,
  searchViewPointByEmailHandler,
  mapManagerHandler,
  updateManagerHandler,
  getManagerBalancesHandler,
  getManagerTransactionsHandler,
  transferToMemberHandler,
  deleteManagerHandler,
  restoreManagerHandler,
  getManagerHistoryHandler,
  getManagerEntitlementsHandler,
} from "@/controllers/admin/points-transfer/points-transfer.controller";

export const PointsTransferRoutes = new Hono();

PointsTransferRoutes.use("*", withConsoleUserSession());

PointsTransferRoutes.get("/holding-accounts/balances", getHoldingBalancesHandler);
PointsTransferRoutes.post("/holding-accounts/balances/sync", syncHoldingBalancesHandler);
PointsTransferRoutes.get("/managers", getManagersHandler);
PointsTransferRoutes.get("/transactions", getTransactionsHandler);
PointsTransferRoutes.post("/transactions/transfer", transferPointsHandler);

// Phase 2 Routes
PointsTransferRoutes.get("/viewpoint-search", searchViewPointByEmailHandler);
PointsTransferRoutes.post("/managers/:id/map", mapManagerHandler);
PointsTransferRoutes.put("/managers/:id", updateManagerHandler);
PointsTransferRoutes.delete("/managers/:id", deleteManagerHandler);
PointsTransferRoutes.post("/managers/:id/restore", restoreManagerHandler);
PointsTransferRoutes.get("/managers/:id/history", getManagerHistoryHandler);
PointsTransferRoutes.get("/my-balances", getManagerBalancesHandler);
PointsTransferRoutes.get("/my-entitlements", getManagerEntitlementsHandler);
PointsTransferRoutes.get("/my-transactions", getManagerTransactionsHandler);
PointsTransferRoutes.post("/transfer-to-member", transferToMemberHandler);
