import { Request, Response } from "express";
import event from "../models/event";
import { getAllEvents } from "../controllers/events/getAllEvents";
import { requireAuth, requireAdmin } from "../middleware/auth";

const eventsRouter = require("express").Router();
const { postEvent } = require("../controllers/events/postEvent");
const { updateEvent } = require("../controllers/events/updateEvent");
const { deleteEvent } = require("../controllers/events/deleteEvent");
const { getEvents } = require("../controllers/events/getEvents");
const { getUpcomingEvents } = require("../controllers/events/upcomingEvent");
const { getPastEvents } = require("../controllers/events/pastEvents");
const { getEventDetails } = require("../controllers/events/getEventDetails");

eventsRouter.get(
  "/api/v1/event/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    getEvents(req, res);
  }
);

eventsRouter.get(
  "/api/v1/event/upcoming/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    getUpcomingEvents(req, res);
  }
);

eventsRouter.get(
  "/api/v1/events",
  requireAdmin,
  async (req: Request, res: Response) => {
    getAllEvents(req, res);
  }
);

eventsRouter.get(
  "/api/v1/event/past/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    getPastEvents(req, res);
  }
);

eventsRouter.get(
  "/api/v1/event/details/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    getEventDetails(req, res);
  }
);

eventsRouter.post(
  "/api/v1/event",
  requireAuth,
  async (req: Request, res: Response) => {
    postEvent(req, res);
  }
);

eventsRouter.put(
  "/api/v1/event/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    updateEvent(req, res);
  }
);

eventsRouter.delete(
  "/api/v1/event/:id",
  requireAuth,
  async (req: Request, res: Response) => {
    deleteEvent(req, res);
  }
);

module.exports = eventsRouter;
