import _ from 'lodash'

/**
 * 按钮报错信息处理
 *
 * @author fengjiansheng
 * @date 2022-02-09
 */
export default {
    saveAction: {
        commonMessage: "保存失败,请联系系统管理员。",
        customMessageList: [
            {
                preMessage: "More than one row with the given identifier was found",
                convertMessage: "multiBaseDataError"
            },
            {
                preMessage: "formulaError:",
                convertMessage: "backFormulaError",
            }
        ],
        getErrorBaseDataName(a) {
            if (!a || !_.isString(a)) {
                return "";
            }
            let reg = /(?<=datamodel\.).*?(?=;)/;
            let targetString = a.match(reg);
            return targetString ? targetString[0] : "";
        },
        getErrorMessage(a) {
            if (!a || !_.isString(a)) {
                return this.commonMessage;
            }
            let errorPreMessage = "";
            for (let i = 0; i < this.customMessageList.length; i++) {
                if (a.indexOf(this.customMessageList[i].preMessage) > -1) {
                    errorPreMessage = this.customMessageList[i].convertMessage;
                    break;
                }
            }
            return this.doDealWithErrorMessage(errorPreMessage, a);
        },
        getCommonMessage(){
            return this.commonMessage;
        },
        doDealWithErrorMessage(type,sourceMessage){
            if (!type || !_.isString(type)) {
                return sourceMessage?sourceMessage:this.commonMessage;
            }
            if (type === ""){
                return sourceMessage?sourceMessage:this.commonMessage;
            }
            if (type === "backFormulaError") {
                return sourceMessage.substring("formulaError:".length)
            }
            if (type === "multiBaseDataError") {
                return "保存失败,基础数据存在多条相同记录,基础数据标识:" + this.getErrorBaseDataName(sourceMessage);
            }
        }
    },
    tempSaveAction: {
        commonMessage: "暂存失败,请联系系统管理员。",
        customMessageList: [
            {
                preMessage: "More than one row with the given identifier was found",
                convertMessage: "multiBaseDataError"
            },
            {
                preMessage: "formulaError:",
                convertMessage: "backFormulaError",
            }
        ],
        getErrorBaseDataName(a) {
            if (!a || !_.isString(a)) {
                return "";
            }
            let reg = /(?<=datamodel\.).*?(?=;)/;
            let targetString = a.match(reg);
            return targetString ? targetString[0] : "";
        },
        getErrorMessage(a) {
            if (!a || !_.isString(a)) {
                return this.commonMessage;
            }
            let errorPreMessage = "";
            for (let i = 0; i < this.customMessageList.length; i++) {
                if (a.indexOf(this.customMessageList[i].preMessage) > -1) {
                    errorPreMessage = this.customMessageList[i].convertMessage;
                    break;
                }
            }
            return errorPreMessage === "" ? (a?a:this.commonMessage) : errorPreMessage + this.getErrorBaseDataName(a);
        },
        getCommonMessage(){
            return this.commonMessage;
        }
    },
    submitAction: {
        commonMessage: "提交失败,请联系系统管理员。",
        customMessageList: [
            {
                preMessage: "No participant founds for user task",
                convertMessage: "提交失败,没有找到下一步审批人",
            },
            {
                preMessage: "单据已提交,不能再次提交",
                convertMessage: "单据已提交,不能再次提交",
            }
        ],
        getErrorMessage(a) {
            if (!a || !_.isString(a)) {
                return this.commonMessage
            }
            let errorPreMessage = "";
            for (let i = 0; i < this.customMessageList.length; i++) {
                if (a.indexOf(this.customMessageList[i].preMessage) > -1) {
                    errorPreMessage = this.customMessageList[i].convertMessage
                    break
                }
            }
            return errorPreMessage === "" ? (a?a:this.commonMessage) : errorPreMessage
        }
    }
}