package incheon.res.rdm.dd.accept.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.pjtplan.mapper.RdmComPjtplanMapper;
import incheon.res.rdm.com.pjtplan.vo.RdmComPjtplanVO;
import incheon.res.rdm.dd.accept.mapper.RdmDdAcceptMapper;
import incheon.res.rdm.dd.accept.service.RdmDdAcceptService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

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

@Service
public class RdmDdAcceptServiceImpl extends EgovAbstractServiceImpl implements RdmDdAcceptService {
	protected Log log = LogFactory.getLog(this.getClass());
	
	@Resource
	private RdmDdAcceptMapper rdmDdAcceptMapper;
	@Resource
	private RdmComPjtplanMapper rdmComPjtplanMapper;
	@Resource
	private RdmComMsgnlogService rdmComMsgnlogService;
	

	@Override
	public int updateAcceptPjtplan(RdmComPjtplanVO vo) throws Exception{
		return rdmDdAcceptMapper.updateAcceptPjtplan(vo);
	}
	
	/**
	 * @MethodDESC : 접수처리
	 */
	@Override
	public int updateAcceptPjt(RdmComPjtplanVO vo) throws Exception{
		int result = 1;
		try{

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

			//상태코드 BPA007으로 변경
			rdmComPjtplanMapper.updatePjtplanState(vo);
			//접수일 등록
			Calendar now = Calendar.getInstance();	
			StringBuffer sb = new StringBuffer();
			sb.append(now.get(Calendar.YEAR));
			int month=now.get(Calendar.MONTH)+1;
			if(month<10){sb.append('0');}
			sb.append(month);			
			int day=now.get(Calendar.DAY_OF_MONTH);
			if(day<10){	sb.append('0');	}	
			sb.append(day);
			String accYmd = sb.toString();
			vo.setRcptYmd(accYmd);
			rdmComPjtplanMapper.updateAccDate(vo);

			RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
			rdmComMsgnlogVO.setStateCde("BPA062");
			rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
			rdmComMsgnlogVO.setBizPlanAplyMngNo(vo.getBizPlanAplyMngNo());
			rdmComMsgnlogVO.setBizPlanPrcsStts(vo.getBizPlanPrcsStts());
			rdmComMsgnlogService.insertPlanMsgNLog2(rdmComMsgnlogVO);

		}catch (NullPointerException npe) {
			result = 0;
			log.error("필수 데이터 누락으로 처리 실패");
		} catch (DataAccessException dae) {
			result = 0;
			log.error("데이터베이스 처리 중 오류 발생");
		} catch (RuntimeException re) {
			result = 0;
			log.error("시스템 실행 중 예외 발생");
		}
		return result;
	}
	
	/**
	 * @MethodDESC : 접수취소처리
	 */
	@Override
	public int updateAcceptCancel(RdmComPjtplanVO vo) throws Exception{
		int result = 1;
		try{

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

			//BPA004로 변경
			rdmComPjtplanMapper.updatePjtplanState(vo);
			
			//접수일 null처리
			vo.setRcptYmd("");
			rdmComPjtplanMapper.updateAccDate(vo);

			RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
			rdmComMsgnlogVO.setStateCde("BPA063");
			rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
			rdmComMsgnlogVO.setBizPlanAplyMngNo(vo.getBizPlanAplyMngNo());
			rdmComMsgnlogVO.setBizPlanPrcsStts(vo.getBizPlanPrcsStts());
			rdmComMsgnlogService.insertPlanMsgNLog2(rdmComMsgnlogVO);

		} catch (NullPointerException npe) {
			result = 0;
			log.error("필수 데이터가 누락되었습니다");
		} catch (DataAccessException de) {
			result = 0;
			log.error("데이터베이스 처리 중 오류 발생");
		} catch (RuntimeException e) {
			result = 0;
			log.error("프로세스 실행 중 오류 발생");
		}
		return result;
	}
	
	/**
	 * @MethodDESC : 보완요청 처리
	 */
	@Override
	public int updateRevDes(RdmComPjtplanVO vo) throws Exception{

		int result = 1;
		try{

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

			//BPA005로 변경
			rdmComPjtplanMapper.updatePjtplanState(vo);
			//보완요청 내용 입력
			rdmComPjtplanMapper.updateRevDes(vo);

			RdmComMsgnlogVO rdmComMsgnlogVO = new RdmComMsgnlogVO();
			rdmComMsgnlogVO.setStateCde("BPA064");
			rdmComMsgnlogVO.setSeUserAcntMngNo(sessionUserId);
			rdmComMsgnlogVO.setBizPlanAplyMngNo(vo.getBizPlanAplyMngNo());
			rdmComMsgnlogVO.setBizPlanPrcsStts(vo.getBizPlanPrcsStts());
			rdmComMsgnlogService.insertPlanMsgNLog2(rdmComMsgnlogVO);

		}catch (NullPointerException npe) {
			result = 0;
			log.error("필수 데이터 누락으로 처리 실패");
		} catch (DataAccessException dae) {
			result = 0;
			log.error("데이터베이스 처리 중 오류 발생");
		} catch (RuntimeException re) {
			result = 0;
			log.error("시스템 실행 중 예외 발생");
		}
		return result;
	}
}
