import { apiRequest } from './api.js'

function buildQuery(params = {}) {
  const search = new URLSearchParams()
  Object.entries(params || {}).forEach(([key, value]) => {
    if (typeof value === 'undefined' || value === null || value === '') return
    search.set(key === 'pageSize' ? 'page_size' : key, String(value))
  })
  const query = search.toString()
  return query ? `?${query}` : ''
}

export function fetchBudgetSummary(params = {}) {
  return apiRequest(`/budgets/summary${buildQuery(params)}`)
}

export function fetchBudgetAllocations(params = {}) {
  return apiRequest(`/budgets/allocations${buildQuery(params)}`)
}

export function createBudgetAllocation(payload = {}) {
  return apiRequest('/budgets/allocations', {
    method: 'POST',
    body: JSON.stringify(payload)
  })
}

export function fetchBudgetTransactions(allocationId, params = {}) {
  const encodedId = encodeURIComponent(String(allocationId || '').trim())
  return apiRequest(`/budgets/allocations/${encodedId}/transactions${buildQuery(params)}`)
}
