package cokr.xit.fims.excl.service.bean;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import cokr.xit.fims.excl.LevyExcl;
import cokr.xit.fims.excl.ExclQuery;
import cokr.xit.fims.excl.service.Excl01Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;

/**부과제외 대장 서비스 구현체.
 *
 * <p>상세 설명: 부과제외 대장 업무 기능을 구현한 클래스
 *
 * <pre>
 * ============ 변경 이력 ============
 * 2023-06-23	JoJH 최초 작성
 * ================================
 * </pre>
*/
@Service("excl01Service")
public class Excl01ServiceBean extends AbstractServiceBean implements Excl01Service {

	/* 부과제외 대장 정보 Bean */
	@Resource(name = "excl01Bean")
	protected Excl01Bean excl01Bean;

	@Override
	public List<DataObject> getLevyExclList(ExclQuery req) {
		return excl01Bean.getLevyExclList(req);
	}

	@Override
	public List<DataObject> getLevyExcls(ExclQuery req) {
		return excl01Bean.getLevyExcls(req);
	}

	@Override
	public DataObject getLevyExclInfo(ExclQuery req) {
		if (req.getCallPurpose() == null) {
			req.setCallPurpose("view");
		}

		if (req.getCallPurpose().equals("create")) {
			return excl01Bean.getCrdnInfo(req);
		} else {
			return excl01Bean.getLevyExclInfo(req);
		}
	}

	@Override
	public String createLevyExcl(LevyExcl levyExcl) {
		return excl01Bean.createLevyExcl(levyExcl);
	}

	@Override
	public String updateLevyExcl(LevyExcl levyExcl) {
		return excl01Bean.updateLevyExcl(levyExcl);
	}

	@Override
	public String removeLevyExcl(LevyExcl levyExcl) {
		return excl01Bean.removeLevyExcl(levyExcl);
	}

	@Override
	public String removeLevyExclList(ExclQuery req) {
		// 변수 선언
		String retMessage = "";							// 처리 결과 메시지

		// 부과제외 IDs 건수를 확인하여 1건이하면.. 종료
		if (req.getLevyExclIDs().length < 1) {
			retMessage = "작업 중 선택 자료가 존재하지 않습니다.";
			return retMessage;
		}

		// 부과제외 IDs 만큼 반복..
		for (int iLoop = 0; iLoop < req.getLevyExclIDs().length; iLoop++) {
			LevyExcl levyExcl = new LevyExcl();									// 부과제외(TB_LEVY_EXCL)

			levyExcl.setLevyExclId(req.getLevyExclIDs()[iLoop]);				// 부과제외 ID
			levyExcl.setDelRsn(req.getDelRsn());								// 삭제 사유

			// 부과제외 삭제 호출
			retMessage = excl01Bean.removeLevyExcl(levyExcl);
			// 오류가 발생하였으면 종료..
			if (retMessage.contains("[F]")) {
				return retMessage;
			}
		}

		return retMessage;
	}

}
