"use server";
import axios from "axios";

interface ProfileCountsResponse {
  success: boolean;
  message?: string;
  data?: {
    post?: {
      communityCount: number;
      jobCount: number;
      productCount: number;
      serviceCount: number;
    };
    order?: {
      orderCountSeller: {
        pending: number;
        processing: number;
        shipped: number;
        out_for_delivery: number;
        delivered: number;
        cancelled: number;
      };
      orderCountBuyer: {
        pending: number;
        processing: number;
        shipped: number;
        out_for_delivery: number;
        delivered: number;
        cancelled: number;
      };
    };
  };
}

export async function fetchProfileCountsAction(token: string): Promise<ProfileCountsResponse> {
  try {
    const url = `${process.env.NEXT_PUBLIC_API_URL}/profile/fetch-counts`;

    const response = await axios.get(url, {
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${token}`,
        Accept: "application/json",
      },
    });

    if (response.data?.status === true) {
      return {
        success: true,
        data: response.data.data,
        message: response.data.message || "Profile counts fetched successfully",
      };
    } else {
      return {
        success: false,
        message: response.data?.message || "Failed to fetch profile counts",
      };
    }
  } catch (error: any) {
    return {
      success: false,
      message: error?.response?.data?.message || "Error fetching profile counts",
    };
  }
}
