package incheon.sgp.rst.web;



import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import incheon.sgp.rst.service.RstPrcService;
import incheon.sgp.rst.vo.RstPrcBldgResultVO;
import incheon.sgp.rst.vo.RstPrcDetailVO;
import lombok.RequiredArgsConstructor;

/**
 * @ClassName : RstPrcController.java
 * @Description : 전세가율 가격통계 컨트롤러
 *
 * @author : 이주훈
 * @since : 2025. 11. 14
 * @version : 1.0
 *
 */
@Controller
@RequestMapping("/sgp/rst")
@RequiredArgsConstructor
public class RstPrcController {
	
	private final RstPrcService rstPrcService;
	
    // 건물/필지 목록 조회
    @GetMapping("/prc/bldgList.do")
    @ResponseBody
    public Map<String, Object> bldgList(@RequestParam String emdCd) throws Exception {
    	Map<String, Object> result = new HashMap<>();
    	
    	// 건물 존재 여부 확인 
        String existYn = rstPrcService.selectBldgExistYn(emdCd);
        result.put("existYn", existYn);
        
        // 건물 리스트 가져오기
        if ("Y".equals(existYn)) {
            List<RstPrcBldgResultVO> list = rstPrcService.selectBldgList(emdCd);
            result.put("bldgList", list);
        }
    	
        return result;
    }
    
    // 건물 상세조회 (전세/매매)
    @GetMapping("/prc/detail.do")
    @ResponseBody
    public Map<String, Object> detailPrc(
        @RequestParam String sggCd,
        @RequestParam String emdCd,
        @RequestParam String bldgKey,
        @RequestParam(required = false) Integer area,
        @RequestParam(defaultValue = "1") int page
    ) throws Exception {

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

        // bldgKey 파싱
        String[] parts = bldgKey.split("\\|");
        String mno = parts[1].split("-")[0];
        String sno = parts[1].split("-")[1];

        // 1. 전체 건수 조회
        int totalCount = rstPrcService.selectPrcDetailCount("28", sggCd, emdCd, mno, sno, area);

        // 2. 페이징 설정
        PaginationInfo paginationInfo = new PaginationInfo();
        paginationInfo.setCurrentPageNo(page);
        paginationInfo.setRecordCountPerPage(10);
        paginationInfo.setPageSize(10);
        paginationInfo.setTotalRecordCount(totalCount);

        // 3. 목록 조회
        List<RstPrcDetailVO> list = rstPrcService.selectPrcDetail("28", sggCd, emdCd, mno, sno, area, paginationInfo.getFirstRecordIndex(), paginationInfo.getRecordCountPerPage());

        result.put("list", list);
        result.put("pagination", paginationInfo);

        return result;
    }
	
}
    
