/** 
 * CommonMapper.java
 * @author 임새미 
 * @since 2016. 10. 13.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 13. 	    임새미				       최초생성
 * 
 */
package kcg.faics.cmmn.service.impl;

import java.util.HashMap;
import java.util.List;

import kcg.faics.cmmn.vo.CodeVO;

import org.springframework.stereotype.Repository;

import egovframework.rte.psl.dataaccess.EgovAbstractMapper;

/**
 * 코드 관련 Mapper.
 * 
 * @author kimnomin
 *
 */
@Repository("codeMapper")
public class CodeMapper extends EgovAbstractMapper {
	/**
	 * 코드를 가져온다.
	 * 
	 * @param code1
	 *            대분류코드
	 * @param code2
	 *            중분류코드
	 * @return CodeVO 객체 리스트
	 * @throws Exception
	 *             기본 예외 처리
	 */
	public List<CodeVO> getCodeValues(final String code1, final String code2)
			throws Exception {

		CodeVO codeVO = new CodeVO();
		codeVO.setCode1(code1);
		codeVO.setCode2(code2);

		return selectList("Code.getCodeValues", codeVO);
	}

	/**
	 * 소속 1 Detph를 반환한다.
	 * 
	 * @param onlyCentral
	 *            중앙부처만 반환 - true, 모든 목록반환 - false
	 * @return 소속 1 목록
	 * @throws Exception 기본 예외 처리
	 */
	public List<CodeVO> getPlace1List(final boolean onlyCentral) throws Exception {
		return selectList("Code.getPlace1List", onlyCentral);
	}

	/**
	 * 계급 코드 리스트를 반환한다.
	 * @return 계급 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getPositionList() throws Exception {
		return selectList("Code.getPositionList");
	};

	/**
	 * 하위소속 코드 리스트를 반환한다.
	 * @param codeVO 상위소속 코드
	 * @return 소속 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getPlace2List(CodeVO codeVO) throws Exception {
		return selectList("Code.getPlace2List", codeVO);
	};	
	
	/**
	 * 세부소속 코드 리스트를 반환한다.
	 * @param codeVO 상위소속 코드
	 * @return 소속 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getPlace3List(CodeVO codeVO) throws Exception {
		return selectList("Code.getPlace3List", codeVO);
	};	
	
	/**
	 * 직위 코드 리스트를 반환한다.
	 * @return 직위 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getDutiesList() throws Exception {
		return selectList("Code.getDutiesList");
	};	
	
	/**
	 * 직별 코드 리스트를 반환한다.
	 * @return 직별 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getJobTypeList() throws Exception {
		return selectList("Code.getJobTypeList");
	};	
	
	/**
	 * 학력 코드 리스트를 반환한다.
	 * @return 학력 코드 리스트
	 * @throws Exception
	 */
	public List<CodeVO> getScholarshipList() throws Exception {
		return selectList("Code.getScholarshipList");
	};	
	
	/**
	 * 코드에 해당하는 소속기관의 이름을 가져온다.
	 * 
	 * @param code 소속기관 코드
	 * @param  
	 * @return 소속기관 명
	 */
	public String getPlace1NameByCode(String code, boolean yak) {
		CodeVO codeVO = selectOne("Code.getPlace1NameByCode", code);
		return (yak) ? codeVO.getCodenmYak() : codeVO.getCodenm();
	}
	
	/**
	 * 코드에 해당하는 이름을 가져온다.
	 * 
	 * @param place1 소속기관 코드
	 * @param place2 소속부서 코드
	 * @return 소속부서 명
	 */
	public String getPlace2NameByCode(String code1, String code2) {
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("code1", code1);
		map.put("code2", code2);
		return selectOne("Code.getPlace2NameByCode", map);
	}
	
	/**
	 * 코드에 해당하는 이름을 가져온다.
	 * 
	 * @param place1 소속기관 코드
	 * @param place2 소속부서 코드
	 * @return 소속부서 명
	 */
	public String getPlace3NameByCode(String code2) {
		return selectOne("Code.getPlace3NameByCode", code2);
	}
	
	/**
	 * 코드에 해당하는 계급의 이름을 가져온다.
	 * 
	 * @param code 계급 코드
	 * @return 계급 명
	 */
	public String getPositionNameByCode(String code) {
		return selectOne("Code.getPositionNameByCode", code);
	}
	
	/**
	 * 코드에 해당하는 직위의 이름을 가져온다.
	 * 
	 * @param code 직위 코드
	 * @return 직위 명
	 */
	public String getDutiesNameByCode(String code) {
		return selectOne("Code.getDutiesNameByCode", code);
	}
	
	/**
	 * 코드에 해당하는 직별의 이름을 가져온다.
	 * 
	 * @param code 직별 코드
	 * @return 직별 명
	 */
	public String getJobtypeNameByCode(String code) {
		return selectOne("Code.getJobtypeNameByCode", code);
	}
	
	/**
	 * 코드에 해당하는 학위의 이름을 가져온다.
	 * 
	 * @param code 학위 코드
	 * @return 학위 명
	 */
	public String getScholarshipNameByCode(String code) {
		return selectOne("Code.getScholarshipNameByCode", code);
	}
	
	/**
	 * code를 수정한다.
	 * 
	 * @param codeVO CodeVO 객체
	 * @return 성공 - 1, 실패 - 0
	 * @throws Exception 기본 예외 처리
	 */
	public int updateCode(final CodeVO codeVO) throws Exception {
		return update("Code.updateCode", codeVO);
	}
	
	/**
	 * code를 추가한다.
	 * 
	 * @param codeVO CodeVO 객체
	 * @return 성공 - 1, 실패 - 0
	 * @throws Exception 기본 예외 처리
	 */
	public int insertCode(final CodeVO codeVO) throws Exception {
		return insert("Code.insertCode", codeVO);
	}

	/**
	 * code를 삭제한다.
	 * 
	 * @param codeVO CodeVO 객체
	 * @return 성공 - 1, 실패 - 0
	 * @throws Exception 기본 예외 처리
	 */
	public int deleteCode(CodeVO codeVO) {
		return delete("Code.deleteCode", codeVO);
	}
	
}
