// lib/api/auth.ts
import { apiRequest } from "../apiClient";
import { API_ENDPOINTS } from "../endpoints";

interface ApiResponse {
  status: string;
  message: string;
  data?: any;
}

export async function verifyLogin(
  mobile: string,
  password: string,
  c_code: string,
): Promise<ApiResponse> {
  const formData = new FormData();
  formData.append("mobile", mobile);
  formData.append("password", password);
  formData.append("c_code", c_code);

  return await apiRequest<ApiResponse>(API_ENDPOINTS.LOGIN, {
    method: "POST",
    body: formData,
  });
}

export async function sendOtp(
  mobile: string,
  type: string,
  c_code: string,
  isSignUp: boolean,
  isLogin: string,
): Promise<ApiResponse> {
  const formData = new FormData();
  formData.append("mobile", mobile);
  formData.append("type", type);
  formData.append("c_code", c_code);
  formData.append("isSignUp", isSignUp ? "true" : "false");
  formData.append("islogin", isLogin);

  return await apiRequest<ApiResponse>(API_ENDPOINTS.SEND_OTP, {
    method: "POST",
    body: formData,
  });
}

// 🔹 Verify OTP
export async function verifyOtp(
  mobile: string,
  otp: string,
  c_code: string,
): Promise<ApiResponse> {
  const formData = new FormData();
  formData.append("mobile", mobile);
  formData.append("otp", otp);
  formData.append("c_code", c_code);
  return await apiRequest<ApiResponse>(API_ENDPOINTS.VERIFY_OTP, {
    method: "POST",
    body: formData,
  });
}

// 🔹 Fetch Countries
export async function getCountry(): Promise<ApiResponse> {
  return await apiRequest<ApiResponse>(API_ENDPOINTS.GET_COUNTRIES, {
    method: "POST",
  });
}

// 🔹 Fetch States by Country
export async function getStates(country_id: string): Promise<ApiResponse> {
  const formData = new FormData();
  formData.append("country_id", country_id);
  return await apiRequest<ApiResponse>(API_ENDPOINTS.GET_STATES, {
    method: "POST",
    body: formData,
  });
}

// 🔹 Fetch Cities by State
export async function getCities(state_id: string): Promise<ApiResponse> {
  const formData = new FormData();
  formData.append("state_id", state_id);
  return await apiRequest<ApiResponse>(API_ENDPOINTS.GET_CITIES, {
    method: "POST",
    body: formData,
  });
}

// 🔹 Register User
export async function registerUser(formData: FormData): Promise<ApiResponse> {
  return await apiRequest<ApiResponse>(API_ENDPOINTS.REGISTER, {
    method: "POST",
    body: formData,
  });
}

// 🔹 Submit "How did you hear about us?" survey
export async function submitHearAboutUs(
  formData: FormData,
): Promise<ApiResponse> {
  return await apiRequest<ApiResponse>(API_ENDPOINTS.HEAR_ABOUT_US, {
    method: "POST",
    body: formData,
  });
}

export async function resetPassword(formData: FormData): Promise<ApiResponse> {
  return await apiRequest<ApiResponse>(API_ENDPOINTS.FORGOT_PASSWORD, {
    method: "POST",
    body: formData,
  });
}

export async function getGocodStatus(): Promise<ApiResponse> {
  return await apiRequest<ApiResponse>(API_ENDPOINTS.GET_GOCOD_STATUS, {
    method: "GET",
  });
}
