package incheon.res.rdm.dd.unitcst.web;


import incheon.com.security.vo.LoginVO;
import incheon.res.rdm.com.code.service.RdmComCodeService;
import incheon.res.rdm.com.unitcst.service.RdmComUnitcstService;
import incheon.res.rdm.com.unitcst.vo.RdmComUnitcst;
import incheon.res.rdm.com.unitcst.vo.RdmComUnitcstVO;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

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

@Controller
@RequestMapping("${api.rps-path}")
public class RdmDdUnitcstController {

	@Resource
    private RdmComUnitcstService rdmComUnitcstService;
    @Resource
    protected RdmComCodeService rdmComCodeService;
	@Resource(name = "propertiesService")
    protected EgovPropertyService propertiesService;


	/**
	 * @MethodDESC : 사업예정지 목록 조회(심의조정 상태)
	 */
	@RequestMapping(value = "/RdmDdUnitcstL010.do")
	public String selectUnitcstList1(
			@ModelAttribute("loginUser") LoginVO loginVO,
			@ModelAttribute RdmComUnitcstVO vo,
			@RequestParam(defaultValue = "1") int pageIndex,
			ModelMap model
	) throws Exception{

		String sessionUserMngCde = loginVO.getRoadMngInstCd();

		vo.setPageIndex(pageIndex);

		/*페이징*/
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(pageIndex);
		paginationInfo.setRecordCountPerPage(vo.getRecordCountPerPage());
		paginationInfo.setPageSize(vo.getPageSize());

		vo.setFirstIndex(paginationInfo.getFirstRecordIndex());
		vo.setLastIndex(paginationInfo.getLastRecordIndex());
		vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());

        //심의조정 상태 코드
        vo.setBizPlanPrcsStts("BPA007");
        vo.setMngInstCd(sessionUserMngCde);

        List resultList = rdmComUnitcstService.selectUnitcstList(vo);

        //년도
        List planYearList = rdmComCodeService.selectPlanYearList("Y");

        //심의분기
        List dbqCdeList = rdmComCodeService.selectDbqList("Y");

        model.addAttribute("resultList", resultList);

        int totCnt = rdmComUnitcstService.countList(vo);
        paginationInfo.setTotalRecordCount(totCnt);

        model.addAttribute("planYearList", planYearList);
        model.addAttribute("dbqCdeList", dbqCdeList);
        model.addAttribute("paginationInfo", paginationInfo);
        model.addAttribute("searchVo", vo);

		return "res/rdm/dd/unitcst/RdmDdUnitcstL010";
	}

	/**
	 * @MethodDESC : 사업예정지 목록 조회(심의완료 상태)
	 */
	@RequestMapping(value = "/RdmDdUnitcstL030.do")
	public String selectUnitcstList2(
			@ModelAttribute("loginUser") LoginVO loginVO,
			@ModelAttribute RdmComUnitcstVO vo,
			@RequestParam(defaultValue = "1") int pageIndex,
			ModelMap model
	) throws Exception{

		String sessionUserMngCde = loginVO.getRoadMngInstCd();

		vo.setPageIndex(pageIndex);

		/*페이징*/
		PaginationInfo paginationInfo = new PaginationInfo();
		paginationInfo.setCurrentPageNo(pageIndex);
		paginationInfo.setRecordCountPerPage(vo.getRecordCountPerPage());
		paginationInfo.setPageSize(vo.getPageSize());

		vo.setFirstIndex(paginationInfo.getFirstRecordIndex());
		vo.setLastIndex(paginationInfo.getLastRecordIndex());
		vo.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());

        //심의조정 상태 코드
        vo.setBizPlanPrcsStts("BPA008");
        vo.setMngInstCd(sessionUserMngCde);

        List resultList = rdmComUnitcstService.selectUnitcstList(vo);

        //년도
        List planYearList = rdmComCodeService.selectPlanYearList("Y");

        //심의분기
        List dbqCdeList = rdmComCodeService.selectDbqList("Y");

        model.addAttribute("resultList", resultList);

        int totCnt = rdmComUnitcstService.countList(vo);
        paginationInfo.setTotalRecordCount(totCnt);

        model.addAttribute("planYearList", planYearList);
        model.addAttribute("dbqCdeList", dbqCdeList);
        model.addAttribute("paginationInfo", paginationInfo);
        model.addAttribute("searchVo", vo);

		return "res/rdm/dd/unitcst/RdmDdUnitcstL030";
	}

	/**
	 * @MethodDESC : 사업예정지 상세 조회
	 */
	@RequestMapping(value = {"/RdmDdUnitcstR010.do", "/RdmDdUnitcstR030.do"})
	public String selectUnitcst(
			@ModelAttribute("loginUser") LoginVO loginVO, @ModelAttribute RdmComUnitcstVO vo, ModelMap model
	) throws Exception{
	    
		//사업예정지 정보 조회
		RdmComUnitcstVO rdmComUnitcstVO = new RdmComUnitcstVO();
		rdmComUnitcstVO.setBizIntsptMngNo(vo.getBizIntsptMngNo());
		RdmComUnitcst resultUnitcst = rdmComUnitcstService.selectUnitcst(rdmComUnitcstVO);

		if(!loginVO.getRoadMngInstCd().equals(resultUnitcst.getMngInstCd())){
			return "redirect:/rps/RdmDdUnitcstL010.do";
		}

		// 주소 텍스트 생성 2009.09.22
		String mngNam = resultUnitcst.getMngInstNm();
		String dsdAdr = resultUnitcst.getDsdAdr();
		StringBuffer sb = new StringBuffer();
		sb.append(mngNam);
		sb.append(' ');
		sb.append(dsdAdr);
		if(resultUnitcst.getExseStpoMtnSeCd() != null) {
			if (resultUnitcst.getExseStpoMtnSeCd().equals("2")) {
				sb.append(" 산 ");
			}
		}
		String sjuAdr = resultUnitcst.getExseStpoMno();
		if(sjuAdr!= null){
			sb.append(' ');
			sb.append(sjuAdr) ;
		}
		String sbuAdr = resultUnitcst.getExseStpoSno();
		if(sbuAdr!= null){
			sb.append('-');
			sb.append(sbuAdr) ;
		}
		if(resultUnitcst.getExseStpoEtcAddr() != null ){
			sb.append(' ');
			sb.append(resultUnitcst.getExseStpoEtcAddr());
		}
		resultUnitcst.setDsdAdr(sb.toString());

		String dedAdr = resultUnitcst.getDedAdr();
		sb.append(" ~ ");
		sb.append(dedAdr);

		if(resultUnitcst.getExseEdpntMtnSeCd() != null){
			if(resultUnitcst.getExseEdpntMtnSeCd().equals("2")){
				sb.append(" 산 ");
			}
		}
		String ejuAdr = resultUnitcst.getExseEdpntMno();
		if(ejuAdr!= null){
			sb.append(' ');
			sb.append(ejuAdr);
		}
		String ebuAdr = resultUnitcst.getExseEdpntSno();
		if(ebuAdr!= null){
			sb.append('-');
			sb.append(ebuAdr) ;
		}
		if(resultUnitcst.getExseEdpntEtcAddr() != null ){
			sb.append(' ');
			sb.append(resultUnitcst.getExseEdpntEtcAddr());
		}
		resultUnitcst.setDedAdr(sb.toString());

		//굴착 규모정보 조회
		List scaleList = rdmComUnitcstService.selectScaleList(rdmComUnitcstVO);

		model.addAttribute("scaleList", scaleList);
		model.addAttribute("result", resultUnitcst);
        model.addAttribute("searchVo", vo);

		return "res/rdm/dd/unitcst/RdmDdUnitcstR010";
	}


}