import request from './request'

/**
 * 周期性账单相关 API
 */

/**
 * 获取周期性账单列表（分页）
 * @param {Object} params - 查询参数
 * @param {number} [params.pageIndex] - 页码
 * @param {number} [params.pageSize] - 每页数量
 * @param {string} [params.searchKeyword] - 搜索关键词
 * @returns {Promise<{success: boolean, data: Array, total: number}>}
 */
export const getPeriodicList = (params = {}) => {
  return request({
    url: '/TransactionPeriodic/GetList',
    method: 'get',
    params
  })
}

/**
 * 根据ID获取周期性账单详情
 * @param {number} id - 周期性账单ID
 * @returns {Promise<{success: boolean, data: Object}>}
 */
export const getPeriodicDetail = (id) => {
  return request({
    url: `/TransactionPeriodic/GetById/${id}`,
    method: 'get'
  })
}

/**
 * 创建周期性账单
 * @param {Object} data - 周期性账单数据
 * @param {number} data.periodicType - 周期类型 (0:每天, 1:每周, 2:每月, 3:每季度, 4:每年)
 * @param {string} data.periodicConfig - 周期配置
 * @param {number} data.amount - 交易金额
 * @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
 * @param {string} data.classify - 交易分类
 * @param {string} data.reason - 交易摘要/备注
 * @returns {Promise<{success: boolean, data: Object}>}
 */
export const createPeriodic = (data) => {
  return request({
    url: '/TransactionPeriodic/Create',
    method: 'post',
    data
  })
}

/**
 * 更新周期性账单
 * @param {Object} data - 周期性账单数据
 * @param {number} data.id - 周期性账单ID
 * @param {number} data.periodicType - 周期类型
 * @param {string} data.periodicConfig - 周期配置
 * @param {number} data.amount - 交易金额
 * @param {number} data.type - 交易类型
 * @param {string} data.classify - 交易分类
 * @param {string} data.reason - 交易摘要/备注
 * @param {boolean} data.isEnabled - 是否启用
 * @returns {Promise<{success: boolean}>}
 */
export const updatePeriodic = (data) => {
  return request({
    url: '/TransactionPeriodic/Update',
    method: 'post',
    data
  })
}

/**
 * 删除周期性账单
 * @param {number} id - 周期性账单ID
 * @returns {Promise<{success: boolean}>}
 */
export const deletePeriodic = (id) => {
  return request({
    url: `/TransactionPeriodic/DeleteById`,
    method: 'post',
    params: { id }
  })
}

/**
 * 启用/禁用周期性账单
 * @param {number} id - 周期性账单ID
 * @param {boolean} enabled - 是否启用
 * @returns {Promise<{success: boolean}>}
 */
export const togglePeriodicEnabled = (id, enabled) => {
  return request({
    url: '/TransactionPeriodic/ToggleEnabled',
    method: 'post',
    params: { id, enabled }
  })
}
