import types from "../types";
import api from "../../api/Bill"

let period = {};
let summary = {};
let hosting = {};
let record = {};
let receiptList = {};
let receiptDetail = {};

const state = { summary, period, hosting, record, receiptList, receiptDetail };

const getters = {
    getPeriod(state) {
        const temp = localStorage.getItem("bill_period");
        if (temp) {
            state.period = JSON.parse(temp);
        }
        return state.period;
    },
    getSummary(state) {
        //state.summary = localStorage.getItem("bill_summary");
        return state.summary;
    },
    getHosting(state) {
        const temp = localStorage.getItem("bill_hosting");
        if (temp) {
            state.hosting = JSON.parse(temp);
        }
        return state.hosting;
    },
    getRecord(state) {
        const temp = localStorage.getItem('record');
        if (temp) {
            state.record = JSON.parse(temp);
        }
        return state.record;
    },
    getReceiptDetail(state) {
        const temp = localStorage.getItem('receiptDetail');
        if (temp) {
            state.receiptDetail = JSON.parse(temp);
        }
        return state.receiptDetail;
    },
    getReceiptList(state) {
        const temp = localStorage.getItem('receiptList');
        if (temp) {
            state.receiptList = JSON.parse(temp);
        }
        return state.receiptList;
    }
};

const mutations = {
    [types.CHANGE_BILL_PERIOD](state, period) {
        state.period = period;
        try {
            localStorage.setItem("bill_period", JSON.stringify(period));
        } catch (error) { }
    },
    [types.CHANGE_BILL_SUMMARY](state, summary) {
        state.summary = summary;
        try {
            // localStorage.setItem("bill_summary", summary);
        } catch (error) { }
    },
    [types.CHANGE_BILL_HOSTING](state, hosting) {
        state.hosting = hosting;
        try {
            localStorage.setItem("bill_hosting", JSON.stringify(hosting));
        } catch (error) { }
    },
    [types.CHANGE_RECORD](state, record) {
        state.record = record;
        try {
            //localStorage.setItem("record", JSON.stringify(record));
        } catch (error) { }
    },
    [types.CHANGE_RECEIPT_LIST](state, receiptList) {
        state.receiptList = receiptList;
        try {
            localStorage.setItem("receiptList", JSON.stringify(receiptList));
        } catch (error) { }
    },
    [types.CHANGE_RECEIPT_DETAIL](state, receiptDetail) {
        state.receiptDetail = receiptDetail;
        try {
            localStorage.setItem("receiptDetail", JSON.stringify(receiptDetail));
        } catch (error) { }
    },

};

const actions = {
    loadBillPeriod({ commit }) {
        return new Promise((resolve, reject) => {
            api.getPeriod()
                .then(res => {
                    if (res && res.status) {
                        period = res.data;
                        commit(types.CHANGE_BILL_PERIOD, period);
                        resolve(period);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    },
    loadBillSummary({ commit }, param) {
        return new Promise((resolve, reject) => {
            api.getBillSummary(param.accountId)
                .then(res => {
                    if (res && res.status) {
                        summary = res.data;
                        commit(types.CHANGE_BILL_SUMMARY, summary);
                        resolve(summary);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    },
    loadBillHosting({ commit }, param) {
        return new Promise((resolve, reject) => {
            api.getBillHosting(param.accountId)
                .then(res => {
                    if (res && res.status) {
                        hosting = res.data;
                        commit(types.CHANGE_BILL_HOSTING, hosting);
                        resolve(hosting);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    },
    loadRecord({ commit }, param) {
        return new Promise((resolve, reject) => {
            api.getRecord(param.accountId, param.page, param.pageSize)
                .then(res => {
                    if (res && res.status) {
                        record = res.data;
                        commit(types.CHANGE_RECORD, record);
                        resolve(record);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    },
    loadReceiptList({ commit }, accountId) {
        return new Promise((resolve, reject) => {
            api.getReceiptList(accountId)
                .then(res => {
                    if (res && res.status) {
                        receiptList = res.data;
                        commit(types.CHANGE_RECEIPT_LIST, receiptList);
                        resolve(receiptList);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    },
    loadReceiptDetail({ commit }, param) {
        return new Promise((resolve, reject) => {
            api.getReceiptDetail(param.accountId, param.type)
                .then(res => {
                    if (res && res.status) {
                        receiptDetail = res.data;
                        commit(types.CHANGE_RECEIPT_DETAIL, receiptDetail);
                        resolve(receiptDetail);
                    }
                    else {
                        reject(res.message)
                    }
                });
        });
    }
};


// 最后统一导出
export default {
    state,
    getters,
    actions,
    mutations
};