"use server";

import {
  ConvertFormdataToJSON,
  ConvertQueryResultToJSON,
  ServerAction,
  ServerResponse,
} from "@/lib/actions";
import { NoteStatusMap } from "@/models/projects/notesMap";
import fetchNotes from "./util/_fetchNotes";

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

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

  try {
    const { id } = ConvertFormdataToJSON(formData);

    const rFetchNotes = await fetchNotes(con, {
      where: [
        ["domain", "=", id],
        ["status", "=", NoteStatusMap.OPEN],
      ],
      order: [["status", "desc"]],
      limit: 1,
    });

    return ServerResponse({
      operation: true,
      data: ConvertQueryResultToJSON(rFetchNotes.data)[0],
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: error.message,
      data: error,
    });
  } finally {
    con.release();
  }
}

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

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

  try {
    const { id } = ConvertFormdataToJSON(formData);

    const rFetchNotes = await fetchNotes(con, {
      where: [
        ["domain", "=", id],
        ["status", "=", NoteStatusMap.CLOSED],
      ],
      order: [["status", "desc"]],
    });

    return ServerResponse({
      operation: true,
      data: ConvertQueryResultToJSON(rFetchNotes.data),
    });
  } catch (error) {
    return ServerResponse({
      operation: false,
      message: error.message,
      data: error,
    });
  } finally {
    con.release();
  }
}
