import { Router } from "express";
import { checkAdmin } from "../middleware/checkAdmin";
import { adminLogin } from "../controllers/admin/adminAuthController";
import {
  listPendingGasStations,
  listAllGasStationsAdmin,
  approveGasStation,
  rejectGasStation,
  getGasStationAdmin,
} from "../controllers/admin/adminGasStationController";
import {
  listUsers,
  getUserAdmin,
  updateUserAdmin,
  removeUserAdmin,
  resetUserPasswordAdmin,
} from "../controllers/admin/adminUserController";
import {
  listTripsAdmin,
  getTripAdmin,
  updateTripAdmin,
  deleteTripAdmin,
  getTripTrackingAdmin,
  listLowFuelTripRemindersAdmin,
  upcomingTripsAdmin,
} from "../controllers/admin/adminTripController";
import {
  listPlansAdmin,
  createPlanAdmin,
  listPurchasesAdmin,
  recordPurchaseAdmin,
} from "../controllers/admin/adminSubscriptionController";
import {
  listContentAdmin,
  upsertContentAdmin,
  getPublicContent,
} from "../controllers/admin/adminContentController";
import {
  submitFeedbackPublic,
  listFeedbackAdmin,
  updateFeedbackAdmin,
} from "../controllers/admin/adminFeedbackController";
import {
  listVehicleFuelMetricsAdmin,
  fuelEfficiencySummaryAdmin,
} from "../controllers/admin/adminVehicleMetricsController";
import { optionalAuth } from "../middleware/optionalAuth";

const router = Router();

router.post("/login", adminLogin);

router.use(checkAdmin);

router.get("/gas-stations/pending", listPendingGasStations);
router.get("/gas-stations", listAllGasStationsAdmin);
router.get("/gas-stations/:id", getGasStationAdmin);
router.post("/gas-stations/:id/approve", approveGasStation);
router.post("/gas-stations/:id/reject", rejectGasStation);

router.get("/users", listUsers);
router.get("/users/:id", getUserAdmin);
router.patch("/users/:id", updateUserAdmin);
router.delete("/users/:id", removeUserAdmin);
router.post("/users/:id/reset-password", resetUserPasswordAdmin);

router.get("/trips", listTripsAdmin);
router.get("/trips/upcoming", upcomingTripsAdmin);
router.get("/trips/low-fuel-reminders", listLowFuelTripRemindersAdmin);
router.get("/trips/:id", getTripAdmin);
router.get("/trips/:id/tracking", getTripTrackingAdmin);
router.patch("/trips/:id", updateTripAdmin);
router.delete("/trips/:id", deleteTripAdmin);

router.get("/vehicles/fuel-metrics", listVehicleFuelMetricsAdmin);
router.get("/analytics/fuel-summary", fuelEfficiencySummaryAdmin);

router.get("/subscriptions/plans", listPlansAdmin);
router.post("/subscriptions/plans", createPlanAdmin);
router.get("/subscriptions/purchases", listPurchasesAdmin);
router.post("/subscriptions/purchases", recordPurchaseAdmin);

router.get("/content", listContentAdmin);
router.post("/content", upsertContentAdmin);

router.get("/feedback", listFeedbackAdmin);
router.patch("/feedback/:id", updateFeedbackAdmin);

export const publicContentRouter = Router();
publicContentRouter.get("/content/:section", getPublicContent);

export const publicFeedbackRouter = Router();
publicFeedbackRouter.post("/feedback", optionalAuth, submitFeedbackPublic);

export default router;
