package cokr.xit.fims.payer;

import cokr.xit.foundation.component.QueryRequest;

/**납부자 대장 정보 조회 요청
 *
 * <p>상세 설명:
 *
 * <pre>
 * ============ 변경 이력 ============
 * 2023-08-18	mjkhan 최초 작성
 * ================================
 * </pre>
 */
public class PayerQuery extends QueryRequest {
	private static final long serialVersionUID = 1L;

	/** 납부자 Ids */
	private String[] rtpyrIds;
	/** 차량번호 */
	private String vhrno;
	/** 납부자 구분 코드 */
	private String rtpyrSeCd;
	/** 납부자번호 */
	private String rtpyrNo;
	/** 납부자 ID */
	private String rtpyrId;
	/** 주소 일련번호 */
	private String addrSn;
	/** 이력 일련번호 */
	private String hstrySn;
    /** 주소 이력 ID */
    private String addrHstryId;
	/** 주소 입력 구분 코드 */
	private String addrInptSeCd;
	/** 도로명 코드 */
	private String roadNmCd;
	/** 주소 */
	private String addr;
	/** 상세 주소 */
	private String dtlAddr;
	/** 단속 ID */
	private String crdnId;
	/** 호출 용도 */
	private String callPurpose;			// infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).

	/**납부자 Ids를 반환한다.
	 * @return 납부자 Ids
	 */
	public String[] getRtpyrIds() {
		return ifEmpty(rtpyrIds, () -> null);
	}

	/**납부자 Ids를 설정한다.
	 * @param rtpyrIds 납부자 Ids
	 * @return 현재 PayerQuery
	 */
	public PayerQuery setRtpyrIds(String... rtpyrIds) {
		this.rtpyrIds = rtpyrIds;
		return this;
	}

	/**납부자 ID를 반환한다.
	 * @return 납부자 ID
	 */
	public String getRtpyrId() {
		return !isEmpty(rtpyrIds) ? rtpyrIds[0] : rtpyrId;
	}

	/**납부자 ID를 설정한다.
	 * @param rtpyrId 납부자 ID
	 * @return 현재 PayerQuery
	 */
	public PayerQuery setRtpyrId(String rtpyrId) {
		this.rtpyrId = rtpyrId;
		return this;
	}

	/**주소 일련번호를 반환한다.
	 * @return 주소 일련번호
	 */
	public String getAddrSn() {
		return ifEmpty(addrSn, () -> null);
	}

	/**주소 일련번호를 설정한다.
	 * @param addrSn 주소 일련번호
	 * @return 현재 PayerQuery
	 */
	public PayerQuery setAddrSn(String addrSn) {
		this.addrSn = addrSn;
		return self();
	}

	/**이력 일련번호를 반환한다.
	 * @return 이력 일련번호
	 */
	public String getHstrySn() {
		return hstrySn;
	}

	/**이력 일련번호를 설정한다.
	 * @param hstrySn 이력 일련번호
	 * @return 현재 PayerQuery
	 */
	public PayerQuery setHstrySn(String hstrySn) {
		this.hstrySn = hstrySn;
		return this;
	}

    /**주소 이력 ID를 반환한다.
     * @return 주소 이력 ID
     */
    public String getAddrHstryId() {
        return addrHstryId;
    }

    /**주소 이력 ID를 설정한다.
     * @param addrHstryId 주소 이력 ID
     * @return 현재 PayerQuery
     */
    public PayerQuery setAddrHstryId(String addrHstryId) {
        this.addrHstryId = addrHstryId;
        return this;
    }

	/**차량번호를 반환한다.
	 * @return 차량번호
	 */
	public String getVhrno() {
		return vhrno;
	}

	/**차량번호를 설정한다.
	 * @param vhrno 차량번호
	 * @return 현재 PayerQuery
	 */
	public PayerQuery setVhrno(String vhrno) {
		this.vhrno = vhrno;
		return this;
	}

	/**납부자 구분 코드를 반환한다.
	 * @return 납부자 구분 코드
	 */
	public String getRtpyrSeCd() {
		return rtpyrSeCd;
	}

	/**납부자 구분 코드를 설정한다.
	 * @param rtpyrSeCd 납부자 구분 코드
	 * @return 현재 PayerQuery
	 */
	public void setRtpyrSeCd(String rtpyrSeCd) {
		this.rtpyrSeCd = rtpyrSeCd;
	}

	/**납부자 번호를 반환한다.
	 * @return 납부자 번호
	 */
	public String getRtpyrNo() {
		return rtpyrNo;
	}

	/**납부자 번호를 설정한다.
	 * @param rtpyrNo 납부자 번호
	 * @return 현재 PayerQuery
	 */
	public void setRtpyrNo(String rtpyrNo) {
		this.rtpyrNo = rtpyrNo;
	}

	/**주소 입력 구분 코드를 반환한다.
	 * @return 주소 입력 구분 코드
	 */
	public String getAddrInptSeCd() {
		return addrInptSeCd;
	}

	/**주소 입력 구분 코드를 설정한다.
	 * @param addrInptSeCd 주소 입력 구분 코드
	 * @return 현재 PayerQuery
	 */
	public void setAddrInptSeCd(String addrInptSeCd) {
		this.addrInptSeCd = addrInptSeCd;
	}

	/**도로명 코드를 반환한다.
	 * @return 도로명 코드
	 */
	public String getRoadNmCd() {
		return roadNmCd;
	}

	/**도로명 코드를 설정한다.
	 * @param roadNmCd 도로명 코드
	 * @return 현재 PayerQuery
	 */
	public void setRoadNmCd(String roadNmCd) {
		this.roadNmCd = roadNmCd;
	}

	/**주소를 반환한다.
	 * @return 주소
	 */
	public String getAddr() {
		return addr;
	}

	/**주소를 설정한다.
	 * @param addr 주소
	 * @return 현재 PayerQuery
	 */
	public void setAddr(String addr) {
		this.addr = addr;
	}

	/**상세 주소를 반환한다.
	 * @return 상세 주소
	 */
	public String getDtlAddr() {
		return dtlAddr;
	}

	/**상세 주소를 설정한다.
	 * @param dtlAddr 상세 주소
	 * @return 현재 PayerQuery
	 */
	public void setDtlAddr(String dtlAddr) {
		this.dtlAddr = dtlAddr;
	}

	public String getCrdnId() {
		return ifEmpty(crdnId, () -> null);
	}

	public <T extends PayerQuery> T setCrdnId(String crdnId) {
		this.crdnId = crdnId;
		return self();
	}

	public String getCallPurpose() {
		return ifEmpty(callPurpose, () -> null);
	}

	public <T extends PayerQuery> T setCallPurpose(String callPurpose) {
		this.callPurpose = callPurpose;
		return self();
	}

}
