import axios from "@/network/axios"
import { useQuery } from "@tanstack/react-query"

export type Influencer = {
  username: string
  avatar_url: string
}

export type Message = {
  last_message: string | null
}

export type Pagination = {
  current_page: number
  per_page: number
  total: number
  last_page: number
}

export type InfluencerNumber = {
  id: number
  influencer_id: string
  platform: string
  source_app: string
  country_code: string
  phone_number: string
  full_number: string
  influencer: Influencer
  message: Message
  created_at: string
  created_by : {
    user_name : string
    user_id :string
  }
}

export type InfluencerNumbersData = {
  items: InfluencerNumber[]
  pagination: Pagination
}

export type InfluencerNumbersResponse = {
  status: boolean
  message: string
  data: InfluencerNumbersData
}

export type InfluencerNumbersFilters = {
  page?: number
  search?: string
  platform?: string
  source_app?: string
  country_code?: string
}

const getInfluencerNumbers = async (
  filters: InfluencerNumbersFilters = {},
): Promise<InfluencerNumbersResponse> => {
  const params: Record<string, string | number> = {}
  params.page = filters.page && filters.page > 0 ? filters.page : 1
  if (filters.search?.trim()) params.search = filters.search.trim()
  if (filters.platform?.trim()) params.platform = filters.platform.trim()
  if (filters.source_app?.trim()) params.source_app = filters.source_app.trim()
  if (filters.country_code?.trim()) params.country_code = filters.country_code.trim()

  const { data } = await axios.get<InfluencerNumbersResponse>(
    `/influencer-number/allDashboard`,
    { params },
  )
  return data
}

const useInfluencerNumbers = (filters: InfluencerNumbersFilters = {}) => {
  const { page = 1, search = "", platform = "", source_app = "", country_code = "" } = filters
  return useQuery<InfluencerNumbersResponse>({
    queryKey: ["influencer-numbers", page, search, platform, source_app, country_code],
    queryFn: () => getInfluencerNumbers({ page, search, platform, source_app, country_code }),
  })
}

export default useInfluencerNumbers