"use server";

import {
  ConvertFormdataToJSON,
  ServerAction,
  ServerResponse,
} from "@/lib/actions";
import { getCpanelVars } from "@/models/cpanel";
import { DBEType } from "@/models/ErrorType";
import { ProjectStatusMap } from "@/models/projects/statusMap";
import { ResultSetHeader } from "mysql2";
import { postServerLog } from "../logs";

export default async function sendToPlatform(formData: FormData) {
  const { error, con, dict } = await ServerAction();

  if (error) {
    return ServerResponse({
      operation: false,
      data: error,
    });
  }

  const cpanel = getCpanelVars();

  try {
    const { name, email } = ConvertFormdataToJSON(formData);

    const landingUrl = `https://${name}.${cpanel.domain}`;

    const response = await fetch("https://fga-platform-r8kqw.ondigitalocean.app/api/landingpage", {
      method: "POST",
      body: JSON.stringify({ email, landingUrl }),
    });

    if (!response.ok) {
      return ServerResponse({
        operation: false,
        message: dict.alerts.send_to_platform.error,
        data: response.statusText,
      });
    }

    const [result] = await con.query<ResultSetHeader>(
      `UPDATE DOMAINS SET STATUS = ? WHERE NAME = ? AND EMAIL = ?`,
      [ProjectStatusMap.SENDED, name, email],
    );

    if (result.affectedRows === 0) {
      await postServerLog({
        type: DBEType.WARNING,
        log: {
          message: "",
        },
      });
    }

    return ServerResponse({
      operation: true,
      message: dict.alerts.send_to_platform.success,
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: dict.alerts.general.unexpected_error,
      data: error,
    });
  } finally {
    con.release();
  }
}
