package cokr.xit.fims.mngt.dao;

import java.util.List;
import java.util.Map;

import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

import cokr.xit.fims.mngt.Schdl;
import cokr.xit.fims.mngt.SchdlQuery;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;

/**일정관리 DAO
 * @author leebj
 */
@Mapper("schdlMapper")
public interface SchdlMapper extends AbstractMapper {

	/**지정한 조건에 따라 일정관리 목록을 조회하여 반환한다.<br />
	 * @param req 일정관리 조회 조건
	 * @return 일정관리 목록
	 */
	List<DataObject> selectSchdlList(SchdlQuery req);

	/**지정한 조건에 따라 일정관리 객체를 반환한다.
	 * @param schdlId 일정관리 ID
	 * @return 일정관리 객체
	 */
	DataObject selectSchdlInfo(String schdlId);

	/**일정관리 정보를 등록한다.
	 * @param params 파라미터
	 * <ul><li>"schdl" - 일정관리</li>
	 *     <li>"currentUser" - 현재 접속한 사용자</li>
	 * </ul>
	 * @return 저장된 정보수
	 */
	int insertSchdl(Map<String, Object> params);

	/**일정관리 정보를 등록한다.
	 * @param schdl 일정관리
	 * @return 저장 여부
	 * <ul><li>저장됐으면 true</li>
	 *     <li>그렇지 않으면 false</li>
	 * </ul>
	 */
	default boolean insert(Schdl schdl) {
		if(schdl == null) {
			return false;
		}
		DataObject map = params().set("schdl", schdl);
		int effected = insertSchdl(map);
		return effected == 1;

	}

	/**일정관리 정보를 수정한다.
	 * @param params 파라미터
	 * <ul><li>"schdl" - 일정관리</li>
	 *     <li>"currentUser" - 현재 접속한 사용자</li>
	 * </ul>
	 * @return 저장된 정보수
	 */
	int updateSchdl(Map<String, Object> params);

	/**일정관리 정보를 수정한다.
	 * @param schdl 일정관리
	 * @return 저장 여부
	 * <ul><li>저장됐으면 true</li>
	 *     <li>그렇지 않으면 false</li>
	 * </ul>
	 */
	default boolean update(Schdl schdl) {
		return schdl != null && updateSchdl(params().set("schdl", schdl)) == 1;
	}

	/**지정한 일정관리을 삭제한다.
	 * @param params 파라미터
	 * <ul><li>"schdl" - 일정관리</li>
	 *     <li>"currentUser" - 현재 접속한 사용자</li>
	 * </ul>
	 * @return 저장된 정보수
	 */
	int deleteSchdl(Map<String, ?> params);

	/**일정관리 정보를 삭제한다.
	 * @param schdl 일정관리
	 * @return 저장 여부
	 * <ul><li>저장됐으면 true</li>
	 *     <li>그렇지 않으면 false</li>
	 * </ul>
	 */
	default boolean delete(Schdl schdl) {
		return schdl != null && deleteSchdl(params().set("schdl", schdl)) == 1;
	}

}
