import cache from '@/utils/cache'

/**
 * 创建 localStorage 数据的 key；
 * @param {String} entTaxId 企业税号
 * @param {Number} invoiceCategory 发票种类
 * @param {String} drawers 开票人
 */
function createLocalKey(entTaxId, invoiceCategory, drawers) {
    return `${entTaxId}-${invoiceCategory}-${drawers}`
}

/**
 * 创建保存发票信息使用的对象
 */
function createObjSaveInvoice() {
    return {
        entTaxId: "", // 企业税号
        invoiceCategory: "", // 发票种类
        saveDate: new Date(), // 保存时间
        invoiceInfo: {} // 发票信息对象
    }
}

const invoice = {
    /**
     * 保存发票信息
     * @param {String} entTaxId 企业税号
     * @param {Number} invoiceCategory 发票种类
     * @param {String} drawers 开票人
     * @param {Object} invoiceInfo 发票信息对象
     */
    saveInvoice: function (entTaxId, invoiceCategory, drawers, invoiceInfo) {
        let key = createLocalKey(entTaxId, invoiceCategory, drawers)
        let value = JSON.stringify(invoiceInfo)
        cache.setLocal(key, value)
    },
    /**
     * 获取发票信息
     * @param {String} entTaxId 企业税号
     * @param {Number} invoiceCategory 发票种类
     * @param {String} drawers 开票人
     */
    getInvoice: function (entTaxId, invoiceCategory, drawers) {
        let key = createLocalKey(entTaxId, invoiceCategory, drawers)
        let value = cache.getLocal(key)
        value = JSON.parse(value)
        return value
    },
    /**
     * 移除发票信息
     * @param {String} entTaxId 企业税号
     * @param {Number} invoiceCategory 发票种类
     * @param {String} drawers 开票人
     */
    removeInvoice: function (entTaxId, invoiceCategory, drawers) {
        let key = createLocalKey(entTaxId, invoiceCategory, drawers)
        cache.removeLocal(key)
    }
}

export default invoice
