package cokr.xit.fims.mngt;

import java.util.List;

import cokr.xit.foundation.AbstractEntity;
import cokr.xit.foundation.Assert;
import cokr.xit.foundation.data.DataObject;
import lombok.Getter;
import lombok.Setter;

/**위반 정보
 * @author JoJH
 */
@Getter
@Setter
public class Vltn extends AbstractEntity {
	/** 위반 ID */
	private String vltnId;
	/** 시군구 코드 */
	private String sggCd;
	/** 업무 구분 코드 */
	private String taskSeCd;
	/** 위반 코드 */
	private String vltnCd;
	/** 위반 항목 */
	private String vltnArtcl;
	/** 위반 법 명 */
	private String vltnLawNm;
	/** 위반 법1 */
	private String vltnLaw1;
	/** 위반 법2 */
	private String vltnLaw2;
	/** 위반 법 기타 */
	private String vltnLawEtc;
	/** 회계 구분 코드 */
	private String acntgSeCd;
	/** 회계 구분 명 */
	private String acntgSeNm;
	/** 세목 코드 */
	private String txitmCd;
	/** 세목 명 */
	private String txitmNm;
	/** 운영 항목 코드 */
	private String operItemCd;
	/** 운영 항목 명 */
	private String operItemNm;
	/** 특별회계 사업 코드 */
	private String spclBizCd;
	/** 사용 여부 */
	private String useYn;

	public static final String legalBasis(Object obj) {
		if (Assert.isEmpty(obj)) return "";

		List<String> strs = null;
		if (obj instanceof DataObject info)
			strs = List.of(info.string("VLTN_LAW_NM"), info.string("VLTN_LAW1"), info.string("VLTN_LAW2"), info.string("VLTN_LAW_ETC"));
		else if (obj instanceof Vltn vltn)
			strs = List.of(vltn.vltnLawNm, vltn.vltnLaw1, vltn.vltnLaw2, vltn.vltnLawEtc);
		else
			throw new IllegalArgumentException("Either Vltn or DataObject accepted");

		return Assert.isEmpty(strs) ? "" :
			String.join(" ",
				strs.stream()
					.filter(str -> !Assert.isEmpty(str))
					.toList()
			);
	}
}