"use server";

import {
  ConvertFormdataToJSON,
  ServerAction,
  ServerResponse,
} from "@/lib/actions";
import ToggleSSLRedirect from "@/lib/cpanel/api3/SSL/toggleSSLRedirect";
import { getCpanelVars } from "@/models/cpanel";
import { updateProject } from "./util";

export default async function toggleSSLRedirect(formData: FormData) {
  const { error, con, dict } = await ServerAction();

  if (error) {
    return ServerResponse({
      operation: false,
      data: error,
    });
  }

  const cpanel = getCpanelVars();

  try {
    const { name, sslRedirect } = ConvertFormdataToJSON(formData);

    const state = sslRedirect ? 0 : 1;

    const domains = `${name}.${cpanel.domain}`;

    const response = await ToggleSSLRedirect({
      domains,
      state,
    });

    await updateProject(con, { name, state });

    if (response.status === 0) {
      return ServerResponse({
        operation: false,
        message: dict.alerts.toggle_project_https.error,
      });
    }

    return ServerResponse({
      operation: true,
      message: dict.alerts.toggle_project_https.success,
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: dict.alerts.general.unexpected_error,
      data: error,
    });
  } finally {
    con.release();
  }
}
