import { jsonError } from "../../common.js";

export default function (
  selectedDepartments: string[],
  end: any,
  hiatus: any,
  reason: any,
  start: any,
  userDepartments?: string[],
): void | Response {
  if (!userDepartments) return jsonError("Not part of any departments", 403);

  if (
    !Array.isArray(selectedDepartments) ||
    !selectedDepartments.length ||
    typeof end !== "string" ||
    typeof reason !== "string" ||
    typeof start !== "string"
  )
    return jsonError("Invalid notice", 400);

  if (!selectedDepartments.every((dept) => userDepartments.includes(dept)))
    return jsonError(
      "Cannot file an inactivity notice in a department you are not part of",
      403,
    );

  const endDate = new Date(end);
  const now = new Date();
  const startDate = new Date(start);

  if (typeof hiatus !== "undefined" && typeof hiatus !== "boolean")
    return jsonError("Invalid notice", 400);

  if (!["DM", "WM"].find((d) => selectedDepartments.includes(d)) && hiatus)
    return jsonError("Only discord and wall mods can file hiatuses", 400);

  if (
    isNaN(endDate.getFullYear()) ||
    isNaN(startDate.getFullYear()) ||
    endDate.getFullYear() < now.getFullYear() ||
    endDate.getFullYear() > now.getFullYear() + 1 ||
    startDate.getFullYear() < now.getFullYear() ||
    startDate.getFullYear() > now.getFullYear() + 1 ||
    endDate.valueOf() < startDate.valueOf()
  )
    return jsonError("Dates are invalid", 400);
}
