package incheon.uis.ums.web;

import incheon.com.security.util.SecurityUtil;
import incheon.uis.ums.service.RoadSearchService;
import incheon.uis.ums.vo.RoadNameVo;
import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("/api/uis")
public class RoadSearchController {

    private final RoadSearchService roadSearchService;

    public RoadSearchController(RoadSearchService roadSearchService) {
        this.roadSearchService = roadSearchService;
    }

    @GetMapping("/road/search.do")
    public Map<String, Object> searchRoad(@RequestParam("keyword") String keyword) {
        SecurityUtil.requirePermission("UIS", "PERM_FUNC_READ");
        Map<String, Object> res = new HashMap<>();
        try {
            List<RoadNameVo> list = roadSearchService.searchRoadNames(keyword);
            res.put("success", true);
            res.put("results", list);
        } catch (RuntimeException e) {
            res.put("success", false);
            res.put("message", "도로명 검색 중 오류가 발생했습니다.");
        }
        return res;
    }

    // 2) rn_cd 기준 도로구간 조회  🔵 추가
    @GetMapping("/road/sections.do")
    public Map<String, Object> searchRoadSections(@RequestParam("rnCd") String rnCd) {
        SecurityUtil.requirePermission("UIS", "PERM_FUNC_READ");
        Map<String, Object> res = new HashMap<>();
        List<Map<String, Object>> list = roadSearchService.searchRoadSections(rnCd);
        res.put("data", list);
        return res;
    }

    // UisRoadSearchController.java

    @GetMapping("/road/base-sections.do")
    @ResponseBody
    public Map<String, Object> searchBaseSections(
            @RequestParam("sigCd") String sigCd,
            @RequestParam("rdsManNo") String rdsManNo) {
        SecurityUtil.requirePermission("UIS", "PERM_FUNC_READ");
        List<Map<String, Object>> rows = roadSearchService.selectBaseSections(sigCd, rdsManNo);

        Map<String, Object> res = new HashMap<>();
        res.put("success", true);
        res.put("data", rows);
        return res;
    }

}
