package com.cku.oa.sys.zalog;

import com.cku.core.ZAErrorCode;
import com.cku.core.ZAException;

/**
 * Created with IntelliJ IDEA.
 * User: lyy
 * Date: 2016/7/8
 * Time: 17:05
 */
public class SysNoState implements SysState {
    @Override
    public void createOrder(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void payment(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void cancelApply(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void confirmSuccess(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void confirmFail(SysContext ckuContext, String info, String errorInfo,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void updateInfo(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber, SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void updateData(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }

    @Override
    public void offlineRefund(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String, ZAException> consumer) throws ZAException {
        throw new ZAException(ZAErrorCode.ZA_ERC_NO_STATE,"无此业务状态，无法进行此操作！");
    }
    @Override
    public void noStateExecute(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String,ZAException> consumer) throws ZAException{
        try {
            consumer.accept(info);
            ckuContext.getSysZaLog().setSuccessInfo(info+"操作成功！");
            ckuContext.getSysZaLog().setMemberCode(memberCode);
            ckuContext.getSysZaLog().setTableName(tableName);
            ckuContext.getSysZaLog().setBusinessId(businessId);
            ckuContext.getSysZaLog().setRunningNumber(runningNumber);
            ckuContext.zaLogDao.insert(ckuContext.getSysZaLog());
        } catch (ZAException ze) {
            ckuContext.getSysZaLog().setErrorInfo(info+"操作失败："+"错误代码："+ze.get_code()+"。错误信息："+ze.getMessage());
            ckuContext.zaLogDao.insert(ckuContext.getSysZaLog());
            throw ze;
        }
    }
}
