import request from './request'

/**
 * 获取预算列表
 * @param {string} referenceDate 参考日期 (可选)
 */
export function getBudgetList(referenceDate) {
  return request({
    url: '/Budget/GetList',
    method: 'get',
    params: { referenceDate }
  })
}

/**
 * 创建预算
 * @param {object} data 预算数据
 */
export function createBudget(data) {
  return request({
    url: '/Budget/Create',
    method: 'post',
    data
  })
}

/**
 * 更新预算
 * @param {object} data 预算数据
 */
export function updateBudget(data) {
  return request({
    url: '/Budget/Update',
    method: 'post',
    data
  })
}

/**
 * 删除预算
 * @param {number} id 预算ID
 */
export function deleteBudget(id) {
  return request({
    url: `/Budget/DeleteById/${id}`,
    method: 'delete'
  })
}

/**
 * 获取分类统计信息（月度和年度）
 * @param {string} category 分类 (Expense/Income/Savings)
 * @param {string} referenceDate 参考日期 (可选)
 */
export function getCategoryStats(category, referenceDate) {
  return request({
    url: '/Budget/GetCategoryStats',
    method: 'get',
    params: { category, referenceDate }
  })
}
/**
 * 获取未被预算覆盖的分类统计信息
 * @param {number} category 预算分类
 * @param {string} referenceDate 参考日期
 */
export function getUncoveredCategories(category, referenceDate) {
  return request({
    url: '/Budget/GetUncoveredCategories',
    method: 'get',
    params: { category, referenceDate }
  })
}

/**
 * 获取归档总结
 * @param {string} referenceDate 参考日期
 */
export function getArchiveSummary(referenceDate) {
  return request({
    url: '/Budget/GetArchiveSummary',
    method: 'get',
    params: { referenceDate }
  })
}

/**
 * 更新归档总结
 * @param {object} data 数据 { referenceDate, summary }
 */
export function updateArchiveSummary(data) {
  return request({
    url: '/Budget/UpdateArchiveSummary',
    method: 'post',
    data
  })
}

/**
 * 获取指定周期的存款预算信息
 * @param {number} year 年份
 * @param {number} month 月份
 * @param {number} type 周期类型 (1:Month, 2:Year)
 */
export function getSavingsBudget(year, month, type) {
  return request({
    url: '/Budget/GetSavingsBudget',
    method: 'get',
    params: { year, month, type }
  })
}
