import { createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";
import { LOADING_END, LOADING_START } from "../../../lib/redux/slices/appSlice";
import { showSnackbar } from "../../../utils/showSnackbar";

export const provinceGetNationalDocumentsService = createAsyncThunk(
  "PROVINCE_GET_NATIONAL_DOCUMENTS_SERVICE",
  async (payload, { dispatch }) => {
    dispatch(LOADING_START());
    try {
      const { data, status } = await axios.get(
        `https://pay.rasadyar.com/national-documents?info=${payload.info}&type=${payload.type}`,
        {
          timeout: 30000,
        }
      );
      dispatch(LOADING_END());
      return { data, status };
    } catch (e) {
      dispatch(LOADING_END());

      if (e.code === "ECONNABORTED" || e.message.includes("timeout")) {
        showSnackbar(
          "زمان درخواست به پایان رسید. لطفا دوباره تلاش کنید.",
          "error"
        );
        return {
          error: "زمان درخواست به پایان رسید. لطفا دوباره تلاش کنید.",
        };
      }

      if (e.response?.status === 500) {
        showSnackbar("خطای سرور رخ داده است. لطفا بعدا تلاش کنید.", "error");
        return { error: "خطای سرور رخ داده است. لطفا بعدا تلاش کنید." };
      }

      if (!e.response) {
        showSnackbar(
          "خطا در برقراری ارتباط با سرور. لطفا اتصال اینترنت خود را بررسی کنید.",
          "error"
        );
        return {
          error:
            "خطا در برقراری ارتباط با سرور. لطفا اتصال اینترنت خود را بررسی کنید.",
        };
      }

      const errorMessage = e.response?.data?.result || "خطا در دریافت اطلاعات";
      showSnackbar(errorMessage, "error");
      return { error: errorMessage };
    }
  }
);
