import { useState } from "react";
import { createChangeRequest } from "@/_lib/api/changeRequest";
import { useChangeRequestResult, ChangeRequestBody } from "@/_types/Types";
import { useAlertStore } from "@/_stores/useAlertStore";
import { useTranslation } from "react-i18next";
import { useRouter } from "next/navigation";

export function useChangeRequest(): useChangeRequestResult {
  const router = useRouter();
  const { t } = useTranslation("common");
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<string | null>(null);

  const changeRequest = async (data: ChangeRequestBody) => {
    setLoading(true);
    setError(null);

    try {
      await createChangeRequest(data);
      router.refresh();
      useAlertStore
        .getState()
        .showAlert(t("changeRequest.successMessage"), "success");
    } catch (err: unknown) {
      console.error(err);
      useAlertStore
        .getState()
        .showAlert(t("changeRequest.errorMessage"), "error");
    } finally {
      setLoading(false);
    }
  };

  return { loading, error, changeRequest };
}
