package com.brilliance.isc.swift.objmtconvert.model.mx.pacs00900108;

import com.brilliance.isc.swift.objmtconvert.model.AbsMXCreator;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.Account;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.Agent;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.CtgyPurp;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.InstrForCdtrAgt;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.InstrForNxtAgt;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.Amt;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.LclInstrm;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.Purp;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.RmtInf;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.SttlmInf2;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.SvcLvl;
import com.brilliance.isc.swift.objmtconvert.model.mx.common.UndrlygCstmrCdtTrf;
import com.brilliance.isc.swift.objmtconvert.util.DateUtil;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @author zh
 * @create 2023-04-20-9:17
 */
@Data
public class MXPacs00900108Creator extends AbsMXCreator {

    public MXPacs00900108Creator(String identifier){
        super(identifier);
    }

    /**
     * 端到端标识号
     */
    private String endToEndId;

    /**
     * 端到端业务唯一参考号
     */
    private String uetr;

    /**
     * 结算信息
     */
    private SttlmInf2 sttlmInf;

    /**
     * 清算通道
     */
    private String clrChanl;

    /**
     * 交易所依据的服务
     */
    private List<SvcLvl> svcLvl;

    /**
     * 交易所依据的本地服务
     */
    private LclInstrm lclInstrm;

    /**
     * 交易用途
     */
    private CtgyPurp ctgyPurp;

    /**
     * 发报行给收报行的金额
     */
    private Amt intrBkSttlmAmt;

    /**
     * 结算日期
     */
    private String intrBkSttlmDt;

    /**
     * 之前的发报行1
     */
    private Agent prvsInstgAgt1;

    /**
     * 之前的发报行1账户
     */
    private Account prvsInstgAgt1Acct;

    /**
     * 之前的发报行2
     */
    private Agent prvsInstgAgt2;

    /**
     * 之前的发报行2账户
     */
    private Account prvsInstgAgt2Acct;

    /**
     * 之前的发报行3
     */
    private Agent prvsInstgAgt3;

    /**
     * 之前的发报行3账户
     */
    private Account prvsInstgAgt3Acct;

    /**
     * 中间行1
     */
    private Agent intrmyAgt1;

    /**
     * 中间行1账户
     */
    private Account intrmyAgt1Acct;

    /**
     * 中间行2
     */
    private Agent intrmyAgt2;

    /**
     * 中间行2账户
     */
    private Account intrmyAgt2Acct;

    /**
     * 中间行3
     */
    private Agent intrmyAgt3;

    /**
     * 中间行3账户
     */
    private Account intrmyAgt3Acct;

    /**
     * 汇款方
     */
    private Agent dbtr;

    /**
     * 汇款方账户
     */
    private Account dbtrAcct;

    /**
     * 汇款行
     */
    private Agent dbtrAgt;

    /**
     * 汇款行账户
     */
    private Account dbtrAgtAcct;

    /**
     * 收款行
     */
    private Agent cdtrAgt;

    /**
     * 收款行账户
     */
    private Account cdtrAgtAcct;

    /**
     * 收款人
     */
    private Agent cdtr;

    /**
     * 收款人账户
     */
    private Account cdtrAcct;

    /**
     * 付款指示
     */
    private List<InstrForCdtrAgt> instrForCdtrAgt;

    /**
     * 下一个代理行指令信息
     */
    private  List<InstrForNxtAgt> instrForNxtAgt;

    /**
     * 付款目的
     */
    private Purp purp;

    /**
     * 汇款信息
     */
    private RmtInf rmtInf;

    /**
     * 包含交易的数量，默认是1
     */
    private String nbOfTxs;

    /**
     * 包含的转账信息，此节点有值表示是202COV/205COV，对应MT seqB信息
     */
    private UndrlygCstmrCdtTrf undrlygCstmrCdtTrf;

    public void setIntrBkSttlmDt(Date intrBkSttlmDt) {
        this.intrBkSttlmDt = DateUtil.format(intrBkSttlmDt,"yyyy-MM-dd");
    }
}
