package incheon.res.rdm.dc.archamdaccess.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.archamd.vo.RdmDcArchamdVO;
import incheon.res.rdm.dc.archamdaccess.mapper.RdmDcArchamdaccessMapper;
import incheon.res.rdm.dc.archamdaccess.service.RdmDcArchamdaccessService;
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 RdmDcArchamdaccessServiceImpl extends EgovAbstractServiceImpl implements RdmDcArchamdaccessService {
	
	protected Log log = LogFactory.getLog(this.getClass());

	@Resource
	private RdmDcArchamdaccessMapper rdmDcArchamdaccessMapper;
	@Resource
	private RdmComPerinfoMapper rdmComPerinfoMapper;
	@Resource
	private RdmComMsgnlogService rdmComMsgnlogService;
    @Resource(name = "propertiesService")
    protected EgovPropertyService propertiesService;
    
    /**
	 * @MethodDESC : 허가 취소 처리
	 */
	public int insertArchamdaccess(RdmDcArchamdVO vo) throws Exception{
		int result = 0;
		String roadDggMngNo = vo.getRoadDggMngNo();
		String roadDggPrcsStts = "RDH907";
		vo.setRoadDggPrcsStts(roadDggPrcsStts);
		
		RdmComPerinfoVO perinfoParam = new RdmComPerinfoVO();
		perinfoParam.setRoadDggMngNo(roadDggMngNo);
		RdmComPerinfoVO perinfoDVO = null;
		try{
			perinfoDVO = rdmComPerinfoMapper.selectPerinfo(perinfoParam);
		}catch(RuntimeException e){
			log.error("해당 내용이 삭제되었거나 상태가 변경되어 요청내용을 처리 할 수 없습니다.");
		}
		
		result = rdmDcArchamdaccessMapper.insertArchamdaccess(vo);

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

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

		return result;
	}
	
	public int insertArchamdaccessApproval(RdmDcArchamdVO vo) throws Exception {
		int result = 0;
		String roadDggMngNo = vo.getRoadDggMngNo();
		String roadDggPrcsStts = "RDH907";
		vo.setRoadDggPrcsStts(roadDggPrcsStts);
		
		RdmComPerinfoVO perinfoParam = new RdmComPerinfoVO();
		perinfoParam.setRoadDggMngNo(roadDggMngNo);
		RdmComPerinfoVO perinfoDVO = null;
		try{
			perinfoDVO = rdmComPerinfoMapper.selectPerinfo(perinfoParam);
			
		}catch(RuntimeException e){
			log.error("해당 내용이 삭제되었거나 상태가 변경되어 요청내용을 처리 할 수 없습니다.");
		}
		
		result = rdmDcArchamdaccessMapper.insertArchamdaccessApproval(vo);

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();

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

		return result;
	}
	
	/**
	 * @MethodDESC : 허가 사유 수정 처리
	 */
	public int updateArchamdaccess(RdmDcArchamdVO vo) throws Exception{
		int result = 0;
		String roadDggMngNo = vo.getRoadDggMngNo();
		RdmComPerinfoVO perinfoParam = new RdmComPerinfoVO();
		perinfoParam.setRoadDggMngNo(roadDggMngNo);
		RdmComPerinfoVO perinfoDVO = null;
		try{
			perinfoDVO = rdmComPerinfoMapper.selectPerinfo(perinfoParam);
			//검토완료 상태가 아닐경우
			if(!("RDH907".equals(perinfoDVO.getRoadDggPrcsStts()) )){
				throw new Exception("");
			}
		}catch(RuntimeException e){
			log.error("해당 내용이 삭제되었거나 상태가 변경되어 요청내용을 처리 할 수 없습니다.");
		}
		
		result = rdmDcArchamdaccessMapper.updateArchamdaccess(vo);

		LoginVO loginVO = RequestContext.getCurrentUser();
		String userAcntMngNo = loginVO.getUserUnqId();
		String roadDggPrcsStts = perinfoDVO.getRoadDggPrcsStts();

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

		return result;
	}
	

	
}
