package incheon.res.rdm.dc.cstcom.service.impl;


import incheon.com.cmm.context.RequestContext;
import incheon.com.security.vo.LoginVO;
import incheon.res.rdm.com.msgnlog.service.RdmComMsgnlogService;
import incheon.res.rdm.com.msgnlog.vo.RdmComMsgnlogVO;
import incheon.res.rdm.com.perinfo.mapper.RdmComPerinfoMapper;
import incheon.res.rdm.com.perinfo.vo.RdmComPerinfoVO;
import incheon.res.rdm.dc.cstcom.mapper.RdmDcCstcomMapper;
import incheon.res.rdm.dc.cstcom.service.RdmDcCstcomService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;


@Service
public class RdmDcCstcomServiceImpl extends EgovAbstractServiceImpl implements RdmDcCstcomService {
	protected Log log = LogFactory.getLog(this.getClass());
	
	@Resource
	private RdmDcCstcomMapper rdmDcCstcomMapper;
	@Resource
	private RdmComMsgnlogService rdmComMsgnlogService;
	@Resource
	private RdmComPerinfoMapper rdmComPerinfoMapper;
    @Resource(name = "propertiesService")
    protected EgovPropertyService propertiesService;
    
	
	
    /**
	 * @MethodDESC : 착공계 접수 처리
	 */
	public int receiveCstcom(RdmComPerinfoVO vo) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String sessionUserId = loginVO.getUserUnqId();
	    
		String rdhCde = "RDH403";
		vo.setRoadDggPrcsStts(rdhCde);
		int result = rdmDcCstcomMapper.receiveCstcom(vo);

		//로그저장
		RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
		rdmComMsgnlogVO.setStateCde("RDH403");
		rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
		rdmComMsgnlogVO.setRoadDggMngNo(vo.getRoadDggMngNo());
		rdmComMsgnlogVO.setRoadDggPrcsStts(vo.getRoadDggPrcsStts());
		rdmComMsgnlogService.insertDigMsgNLog2(rdmComMsgnlogVO);

		return result;
	}
	
	/**
	 * @MethodDESC : 착공계 보완요청 처리
	 */
	public int demandCstcom(RdmComPerinfoVO vo) throws Exception {

		LoginVO loginVO = RequestContext.getCurrentUser();
		String sessionUserId = loginVO.getUserUnqId();
		
		String rdhCde = "RDH404";
		vo.setRoadDggPrcsStts(rdhCde);
		int result = rdmDcCstcomMapper.demandCstcom(vo);

		//로그저장
		RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
		rdmComMsgnlogVO.setStateCde("RDH404");
		rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
		rdmComMsgnlogVO.setRoadDggMngNo(vo.getRoadDggMngNo());
		rdmComMsgnlogVO.setRoadDggPrcsStts(vo.getRoadDggPrcsStts());
		rdmComMsgnlogService.insertDigMsgNLog2(rdmComMsgnlogVO);

		return result;
	}


	/**
	 * @MethodDESC : 검토완료
	 */
	public void checkCompleteCstcom(RdmComPerinfoVO vo) throws Exception{

		LoginVO loginVO = RequestContext.getCurrentUser();
		String sessionUserId = loginVO.getUserUnqId();
		
		String roadDggMngNo = vo.getRoadDggMngNo();
		String roadDggPrcsStts = "RDH406";
		RdmComPerinfoVO perinfoDVO  = rdmComPerinfoMapper.selectPerinfo(vo);

		try{
			//접수 상태가 아닐경우
			if( !("RDH403".equals(perinfoDVO.getRoadDggPrcsStts())) ){
				throw new Exception("해당 내용이 삭제되었거나 상태가 변경되어 요청내용을 처리 할 수 없습니다.");
			}
		}catch(RuntimeException e){
			log.error("해당 내용이 삭제되었거나 상태가 변경되어 요청내용을 처리 할 수 없습니다.");
		}
		RdmComPerinfoVO rdmComPerinfoVO = new RdmComPerinfoVO();
		rdmComPerinfoVO.setRoadDggPrcsStts(roadDggPrcsStts);
		rdmComPerinfoVO.setRoadDggMngNo(roadDggMngNo);
		rdmDcCstcomMapper.checkCompleteCstcom(rdmComPerinfoVO);

		//로그저장
		RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
		rdmComMsgnlogVO.setStateCde("RDH406");
		rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
		rdmComMsgnlogVO.setRoadDggMngNo(roadDggMngNo);
		rdmComMsgnlogVO.setRoadDggPrcsStts(roadDggPrcsStts);
		rdmComMsgnlogService.insertDigMsgNLog2(rdmComMsgnlogVO);
	}
}
