import type { NextApiRequest, NextApiResponse } from "next";

import { showCreateEventMessage, showTodayMessage } from "../lib";
import showLinksMessage from "../lib/showLinksMessage";
import slackVerify from "../lib/slackVerify";

export enum SlackAppCommands {
  CREATE_EVENT = "create-event",
  TODAY = "today",
  LINKS = "links",
}

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  if (req.method === "POST") {
    const command = req.body.command.split("/").pop();
    await slackVerify(req, res);
    switch (command) {
      case SlackAppCommands.CREATE_EVENT:
        return await showCreateEventMessage(req, res);
      case SlackAppCommands.TODAY:
        return await showTodayMessage(req, res);
      case SlackAppCommands.LINKS:
        return await showLinksMessage(req, res);
      default:
        return res.status(404).json({ message: `Command not found` });
    }
  }
  return res.status(400).json({ message: "Invalid request" });
}
