"use server";

import { ConvertFormdataToJSON, ServerAction, ServerResponse } from "@/lib/actions";
import AddRedirect from "@/lib/cpanel/api3/Mime/addredirect";
import DeleteRedirect from "@/lib/cpanel/api3/Mime/deleteredirect";
import { getCpanelVars } from "@/models/cpanel";
import { updateProject } from "./util";

export default async function disableDomain(formData: FormData) {
  const { error, con, dict } = await ServerAction();

  if (error) {
    return ServerResponse({
      operation: false,
      data: error,
    });
  }

  const cpanel = getCpanelVars();

  try {
    const { name, isRedirected } = ConvertFormdataToJSON(formData);

    const response = isRedirected
      ? await DeleteRedirect({ domain: `${name}.${cpanel.domain}` })
      : await AddRedirect({
          domain: `${name}.${cpanel.domain}`,
          redirect: `https://federalgovadvisors.com/`,
          type: "temp",
          src: "/*",
        });

    if (response.status === 0) {
      return ServerResponse({
        operation: false,
        message: dict.alerts.toggle_project_status.error,
      });
    }

    const rUpdateProject = await updateProject(con, {
      name,
      isRedirected: isRedirected
        ? "not redirected"
        : "https://federalgovadvisors.com/",
    });

    return ServerResponse({
      operation: true,
      message: dict.alerts.toggle_project_status.success,
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: dict.alerts.general.unexpected_error,
      data: error,
    });
  } finally {
    con.release();
  }
}
