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/6
 * Time: 14:46
 */
public class SysNoPayoutState 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_NOPAYOUT_STATE,"当前处于未支付状态，无法进行此操作！");
    }

    @Override
    public void payment(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String,ZAException> consumer)throws ZAException {
        try {
            consumer.accept(info);
            ckuContext.setSysState(new SysFinishPayoutState());
            ckuContext.setNowState(SysNowState.FinishPayout);
            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;
        }
    }

    @Override
    public void cancelApply(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().setSuccessInfo(info+"取消支付失败："+"错误代码："+ze.get_code()+"。错误信息："+ze.getMessage());
            ckuContext.zaLogDao.insert(ckuContext.getSysZaLog());
            throw ze;
        }
    }

    @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_NOPAYOUT_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_NOPAYOUT_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_NOPAYOUT_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_NOPAYOUT_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_NOPAYOUT_STATE,"当前处于未支付状态，无法进行此操作！");
    }
    @Override
    public void noStateExecute(SysContext ckuContext, String info,String memberCode,String tableName,String businessId,String runningNumber,  SysConsumer<String,ZAException> consumer) throws ZAException{
        throw new ZAException(ZAErrorCode.ZA_ERC_NOPAYOUT_STATE,"当前处于未支付状态，无法进行此操作！");
    }
}
