package incheon.res.rdm.com.digplan.service.impl;


import incheon.res.rdm.com.digplan.mapper.RdmComDigplanMapper;
import incheon.res.rdm.com.digplan.service.RdmComDigplanService;
import incheon.res.rdm.com.digplan.vo.RdmComDigplanVO;
import incheon.res.rdm.com.digsize.vo.RdmComDigsizeVO;
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.egovframe.rte.psl.dataaccess.util.EgovMap;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;



@Service
public class RdmComDigplanServiceImpl extends EgovAbstractServiceImpl implements RdmComDigplanService {

	protected Log log = LogFactory.getLog(this.getClass());
	
	
    @Resource(name = "propertiesService")
    protected EgovPropertyService propertiesService;
	
	@Resource
    private RdmComDigplanMapper rdmComDigplanMapper;
	
	
	/**
	 * @MethodDESC : 굴착예정지 목록
	 */
	@Override
	public List selectDigplanList(RdmComDigplanVO vo) throws Exception {
		return rdmComDigplanMapper.selectDigplanList(vo);
	}

	/**
	 * @MethodDESC : 굴착예정지 조회 (현재정보)
	 */
	@Override
	public RdmComDigplanVO selectAppgul(RdmComDigplanVO vo) throws Exception {

		return rdmComDigplanMapper.selectDigplan(vo);
	}

	@Override
	public List selectDigplanDangaCUPTList(RdmComDigplanVO vo) throws Exception {
		return rdmComDigplanMapper.selectDigplanDangaCUPTList(vo);
	}

	@Override
	public int updateAppgul(RdmComDigplanVO vo, ArrayList digsizeList1, ArrayList digsizeList2, ArrayList digsizeList3) throws Exception {
		int result = 1;
		String dipIdn = vo.getDggPstnMngNo();
		try{
			//굴착예정지 정보 수정
			rdmComDigplanMapper.updateAppgul(vo);
			log.error("!!!!!!!!!공사시기업데이트!!!!!!!!!!");
			rdmComDigplanMapper.updateCotDtm(vo);
			log.error("!!!!!!!!!공사시기업데이트끝!!!!!!!!!!");
			RdmComDigsizeVO deleteDigsizeVO = new RdmComDigsizeVO();
			deleteDigsizeVO.setDggPstnMngNo(dipIdn);
			//굴착규모 삭제
			rdmComDigplanMapper.deleteDigsize(deleteDigsizeVO);
			
			//굴착규모 - 일시점용 점보 저장
			for(int i = 0; i < digsizeList1.size(); i++){
				RdmComDigsizeVO digsizeVO = new RdmComDigsizeVO();
				digsizeVO = (RdmComDigsizeVO)digsizeList1.get(i);
				rdmComDigplanMapper.insertDigsize(digsizeVO);
			}
			
			//굴착규모 - 영구점용 정보 저장
			for(int i = 0; i < digsizeList2.size(); i++){
				RdmComDigsizeVO digsizeVO = new RdmComDigsizeVO();
				digsizeVO = (RdmComDigsizeVO)digsizeList2.get(i);
				rdmComDigplanMapper.insertDigsize(digsizeVO);
			}
			
			//굴착규모 - 영구점용 정보 저장
			for(int i = 0; i < digsizeList3.size(); i++){
				RdmComDigsizeVO digsizeVO = new RdmComDigsizeVO();
				digsizeVO = (RdmComDigsizeVO)digsizeList3.get(i);
				rdmComDigplanMapper.insertDigsize(digsizeVO);
			}
			
		}catch(SQLException se){
			result = 0;
			log.error("Database error occurred");
		}
		return result;
	}

	@Override
	public int updateDigsize(RdmComDigsizeVO rdmComDigsizeVO) throws Exception {
		int result = 1;
		try{
			result = rdmComDigplanMapper.updateDigsize(rdmComDigsizeVO);
			
		}catch(SQLException se){
			result = 0;
			log.error("Database error occurred");
		}
		return result;
	}

	@Override
	public String selectNewDipidn(RdmComDigplanVO vo) throws Exception {
		List list = rdmComDigplanMapper.selectNewDipidn(vo);
		EgovMap egovmap = new EgovMap();
		egovmap = (EgovMap)list.get(0);
		String newDipIdn = (String)egovmap.get("dggPstnMngNo");
		return newDipIdn;
	}

	@Override
	public int duplicateAppgul(RdmComDigplanVO vo) throws Exception {
		int result = 1;
		try{
			rdmComDigplanMapper.duplicateAppgul(vo);
			rdmComDigplanMapper.duplicateDigsize(vo);
		}catch(SQLException se){
			result = 0;
			log.error("Database error occurred");
		}
		return result;
	}
	
	
}