package incheon.res.mng.govoff.service.impl;


import incheon.com.cmm.EgovMessageSource;
import incheon.res.mng.danga.mapper.MngDangaMapper;
import incheon.res.mng.danga.vo.MngDangaVO;
import incheon.res.mng.govoff.mapper.RdmOeGovoffMapper;
import incheon.res.mng.govoff.service.RdmOeGovoffService;
import incheon.res.mng.govoff.vo.RdmOeGovoff;
import incheon.res.mng.govoff.vo.RdmOeGovoffVO;
import incheon.res.rdm.oe.perorg.mapper.RdmOePerorgMapper;
import incheon.res.rdm.oe.perorg.vo.RdmOePerorgVO;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class RdmOeGovoffServiceImpl extends EgovAbstractServiceImpl implements RdmOeGovoffService {

	protected Log log = LogFactory.getLog(this.getClass());

	@Resource
    private RdmOeGovoffMapper rdmOeGovoffMapper;
	@Resource
	private RdmOePerorgMapper rdmOePerorgMapper;

	@Resource
	private MngDangaMapper mngDangaMapper;


	/**
	 *   자치단체정보 목록
	 */
	public List selectGovoffList(RdmOeGovoffVO vo) throws Exception {
		return rdmOeGovoffMapper.selectGovoffList(vo);
	}

	/**
	 *   자치단체 정보목록 카운트
	 */
	public int countList(RdmOeGovoffVO vo) throws Exception {
		return rdmOeGovoffMapper.countList(vo);
	}

	/**
	 *   자치단체정보 조회
	 */
	public RdmOeGovoff selectGovoff(RdmOeGovoffVO vo) throws Exception {


		return rdmOeGovoffMapper.selectGovoff(vo);
	}

	/**
	 * 		처리로직 -관리기관  검색 팝업
	 */
	public List selectMngListPopup(RdmOeGovoffVO vo) throws Exception {
		return rdmOeGovoffMapper.selectMngListPopup(vo);
	}

	/**
	 * 	관리기관정보 목록 카운트
	 */
	public int countMngPopList(RdmOeGovoffVO vo) throws Exception {
		return rdmOeGovoffMapper.countMngPopList(vo);
	}

	/**
	 * 		자치단체정보 입력
	 */
	public void insertGovoff(RdmOeGovoffVO vo) throws Exception {

		String result = rdmOeGovoffMapper.checkMngNam(vo);

		// 자치단체명 중복 에러 메세지
		if ("Y".equals(result)) {
			throw new Exception("중복됩니다");
		}

		// Add Info
		// 업체정보 등록
		RdmOePerorgVO rdmOePerorgVO = new RdmOePerorgVO();
		rdmOePerorgVO.setBzentyInstMngNo(vo.getMngInstCd());
		rdmOePerorgVO.setBzentyNm(vo.getLclgvNm());

		rdmOePerorgVO.setTelno("");   // add
		rdmOePerorgVO.setZip("");
		rdmOePerorgVO.setAddr("");
		rdmOePerorgVO.setDaddr("");
		rdmOePerorgVO.setBrno("");
		rdmOePerorgVO.setCorpNo("");
		rdmOePerorgVO.setBzentyStts("USS002");  // USS002 : 사용승인
		rdmOePerorgVO.setExmptnKnd("EXE002");  // EXE002 : 지방자치단체(군)
		rdmOePerorgVO.setStdgEmdCd("");
		rdmOePerorgVO.setPbadmsEmdCd("");
		rdmOePerorgVO.setFcltSe("");
		rdmOePerorgVO.setAutzrId("");
		rdmOePerorgVO.setAprvDt("");
		rdmOePerorgVO.setBzentyIntrcnCn("");
		rdmOePerorgVO.setRegRqstr("");
		rdmOePerorgVO.setMtnSeCd("");
		rdmOePerorgVO.setMno("");
		rdmOePerorgVO.setSno("");
		rdmOePerorgVO.setUpBzentyInstMngNo(vo.getMngInstCd());

		// 기관코드 체크
		if ("TOB000".equals(vo.getTpbizCd())) {
			// 기관코드 (tobCde)
			rdmOePerorgVO.setTpbizCd("");
			rdmOePerorgVO.setGroupSe("");  //허가기관
		} else if ("TOB009".equals(vo.getTpbizCd())) {
			rdmOePerorgVO.setTpbizCd("TOB009");
			rdmOePerorgVO.setGroupSe("GDI002");
		}

		// 업체 Insert
		rdmOePerorgMapper.insertRmtCoogDt(rdmOePerorgVO);

		// 자치단체정보 등록
		vo.setCvlcptRcptDept("");
		rdmOeGovoffMapper.insertRmtGuifCt(vo);
		mngDangaMapper.insertNewGufe(vo);

		List<MngDangaVO> codeList = mngDangaMapper.selectGupCdeList();

		for(MngDangaVO codeVO : codeList){
			vo.setDggCd(codeVO.getWholCd());
			mngDangaMapper.insertNewGupp(vo);
		}
	}

	/**
	 * 		자치단체정보 수정
	 */
	public void updateGovoff(RdmOeGovoffVO vo) throws Exception {
		// 업체정보 수정
		RdmOePerorgVO rdmOePerorgVO = new RdmOePerorgVO();
		rdmOePerorgVO.setBzentyInstMngNo(vo.getMngInstCd());
		rdmOePerorgVO.setBzentyNm(vo.getLclgvNm());
		rdmOePerorgVO.setTelno("");
		rdmOePerorgVO.setExmptnKnd("");
		rdmOePerorgVO.setCnsltnNeedSe("");
		rdmOePerorgVO.setBzentyIntrcnCn("");
		rdmOePerorgVO.setZip("");
		rdmOePerorgVO.setAddr("");
		rdmOePerorgVO.setDaddr("");
		rdmOePerorgVO.setBrno("");
		rdmOePerorgVO.setCorpNo("");
		rdmOePerorgVO.setCeoNm(vo.getLclgvHed());
		rdmOePerorgVO.setStdgEmdCd("");
		rdmOePerorgVO.setPbadmsEmdCd("");
		rdmOePerorgVO.setFcltSe("");
		rdmOePerorgVO.setAutzrId("");
		rdmOePerorgVO.setAprvDt("");
		rdmOePerorgVO.setMtnSeCd("");
		rdmOePerorgVO.setMno("");
		rdmOePerorgVO.setSno("");
		rdmOePerorgVO.setUpBzentyInstMngNo(vo.getMngInstCd());

		if ("TOB000".equals(vo.getTpbizCd())) {
			rdmOePerorgVO.setTpbizCd("");
			rdmOePerorgVO.setGroupSe("");
		} else if ("TOB009".equals(vo.getTpbizCd())) {
			rdmOePerorgVO.setTpbizCd("TOB009");
			rdmOePerorgVO.setGroupSe("GDI002");
		}
		
		//업체정보 수정
		rdmOePerorgMapper.updateRmtCoogDt(rdmOePerorgVO);

		// 자치단체정보 수정
		rdmOeGovoffMapper.updateRmtGuifCt(vo);

	}

	/**
	 * 		자치단체정보 삭제
	 */
	public int deleteGovoff(RdmOeGovoffVO vo) throws Exception {

		RdmOePerorgVO rdmOePerorgVO = new RdmOePerorgVO();
		rdmOePerorgVO.setBzentyInstMngNo(vo.getMngInstCd());

		int result = 0;

		result += rdmOePerorgMapper.deleteRmtCoogDt(rdmOePerorgVO);
		result += rdmOeGovoffMapper.deleteRmtGuifCt(vo);

		return result;
	}

	@Override
	public RdmOeGovoff selectGovoffNew(RdmOeGovoffVO vo) throws Exception {
		return rdmOeGovoffMapper.selectGovoffNew(vo);
	}



}
