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


import incheon.com.cmm.api.DefaultApiResponse;
import incheon.com.security.vo.LoginVO;
import incheon.res.rdm.com.code.service.RdmComCodeService;
import incheon.res.rdm.com.pjtplan.service.RdmComPjtplanService;
import incheon.res.rdm.com.pjtplan.vo.RdmComPjtplan;
import incheon.res.rdm.com.pjtplan.vo.RdmComPjtplanVO;
import incheon.res.rdm.com.unitcst.service.RdmComUnitcstService;
import incheon.res.rdm.com.unitcst.vo.RdmComUnitcstVO;
import incheon.res.rdm.dd.pjtplan.service.RdmDdPjtplanService;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.http.ResponseEntity;
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.HashMap;
import java.util.List;
import java.util.Map;

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

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


	/**
	 * @MethodDESC : 보완요청 사업계획서 목록 조회
	 */
	@RequestMapping(value = "/RdmDdPjtplanL010.do")
	public String selectPjtplanList(
			@ModelAttribute("loginUser") LoginVO loginVO,
			@ModelAttribute RdmComPjtplanVO 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());

        //접수 신청중 사업계획서 코드
        String[] bpaCdeSe = {"BPA005", "BPA006"};
        //처리상태가 여러개 일때 체크
        vo.setInCheck("Y");
        vo.setBizPlanPrcsSttsArray(bpaCdeSe);
		vo.setMngInstCd(sessionUserMngCde);
		vo.setExseStpoDngCd(vo.getStdgEmdCdSe());

		List resultList = rdmComPjtplanService.selectPjtplanList(vo);			//사업계획서 목록
		List planYearList = rdmComCodeService.selectPlanYearList("Y");	// 년도
		List dbqCdeList = rdmComCodeService.selectDbqList("Y");			// 심의분기
		List bjdCdeList = rdmComCodeService.selectDocdList("Y");			// 지역

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

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

		return "res/rdm/dd/pjtplan/RdmDdPjtplanL010";
	}

	/**
	 * @MethodDESC : 사업계획서 상세조회
	 */
	@RequestMapping(value = "/RdmDdPjtplanR010.do")
	public String selectPjtplan(
			@ModelAttribute("loginUser") LoginVO loginVO, @ModelAttribute RdmComPjtplanVO vo, ModelMap model
	) throws Exception{

		//사업계획서 조회
		RdmComPjtplan result = rdmComPjtplanService.selectPjtplan(vo);

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

		//협의정보 조회
		List conferList = rdmComPjtplanService.selectConferList(vo);

		//사업예정지 조회
		RdmComUnitcstVO rdmComUnitcstVO = new RdmComUnitcstVO();
		rdmComUnitcstVO.setBizPlanAplyMngNo(vo.getBizPlanAplyMngNo());
		List unitcstList = rdmComUnitcstService.selectPlanUnitcstList(rdmComUnitcstVO);

		model.addAttribute("conferList", conferList);
		model.addAttribute("unitcstList", unitcstList);
		model.addAttribute("result", result);
        model.addAttribute("searchVo", vo);

		return "res/rdm/dd/pjtplan/RdmDdPjtplanR010";
	}

	/**
	 * @MethodDESC : 보완요청 취소 처리
	 */
	@RequestMapping(value = "/RdmDdPjtplanU010.do")
	public ResponseEntity<DefaultApiResponse<Map<String, Object>>> updatePjtplanState(
			@ModelAttribute RdmComPjtplanVO vo
	) throws Exception{

		Map<String, Object> resultMap = new HashMap<String, Object>();

		int result = rdmDdPjtplanService.updatePjtplanState(vo);
		if (result > 0) {
			resultMap.put("result", result);
		} else {
			return ResponseEntity.badRequest().build();
		}
		return ResponseEntity.ok(DefaultApiResponse.success(resultMap));
	}


}