import { Request, Response } from "express";
import { getOccasions } from "../controllers/occasions/getOccasions";
import { postOccasion } from "../controllers/occasions/postOccasion";
import { updateOccasion } from "../controllers/occasions/updateOccasion";
import { deleteOccasion } from "../controllers/occasions/deleteOccasion";
import { requireAuth, requireAdmin } from "../middleware/auth";
import { imageUpload, handleUploadErrors } from "../middleware/imageUpload";

const occasionsRouter = require("express").Router();

occasionsRouter.get(
  "/api/v1/occasions",
  requireAuth,
  async (req: Request, res: Response) => {
    getOccasions(req, res);
  },
);

occasionsRouter.post(
  "/api/v1/occasions",
  requireAdmin,
  imageUpload.single("icon"),
  handleUploadErrors,
  async (req: Request, res: Response) => {
    postOccasion(req, res);
  },
);

occasionsRouter.put(
  "/api/v1/occasions/:id",
  requireAdmin,
  imageUpload.single("icon"),
  handleUploadErrors,
  async (req: Request, res: Response) => {
    updateOccasion(req, res);
  },
);

occasionsRouter.delete(
  "/api/v1/occasions/:id",
  requireAdmin,
  async (req: Request, res: Response) => {
    deleteOccasion(req, res);
  },
);

module.exports = occasionsRouter;
