package incheon.ags.dss.facility.service.impl;

import java.util.List;
import java.util.Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.stream.Collectors;

import org.springframework.stereotype.Service;

import incheon.ags.dss.facility.service.DssFacilitySearchService;
// import incheon.ags.dss.mapper.SimZoneMstMapper; // (DB 검색 시)
// import incheon.ags.dss.mapper.UrbTrgtClsfDtlMapper; // (DB 검색 시)

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@RequiredArgsConstructor
@Slf4j
public class DssFacilitySearchServiceImpl implements DssFacilitySearchService {

    // private final SimZoneMstMapper simZoneMstMapper;
    // private final UrbTrgtClsfDtlMapper urbTrgtClsfDtlMapper;

    /**
     * 통합검색 목록 조회 (더미 데이터)
     */
    @Override
    public List<Map<String, Object>> selectIntegratedSearchList(String keyword) throws Exception {
        log.info("Requesting Integrated Search (Dummy Data) for keyword: {}", keyword);
        
        // (임시) 더미 데이터 생성
        List<Map<String, Object>> dummyList = new ArrayList<>();
        
        dummyList.add(new HashMap<>() {{
            put("name", "구월힐스테이트/롯데캐슬골드");
            put("address", "인천광역시 남동구 구월동 23");
            put("category", "건축물대장");
            put("pnu", "1110010100123450001"); // (중요) 이 PNU로 팝업을 띄움
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "남동구 구월동 1138");
            put("address", "인천광역시 남동구 구월동 1138");
            put("category", "토지대장");
            put("pnu", "1110010100113800000");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "A초등학교 (시설물)");
            put("address", "인천광역시 연수구 ... 123");
            put("category", "교육시설");
            put("pnu", "FAC_1001"); // (시설물 PK)
        }});
        
        dummyList.add(new HashMap<>() {{
            put("name", "인천광역시청");
            put("address", "남동구 구월동 1138대 산73");
            put("category", "공공, 사회기관 > 특별,광역시청");
            put("pnu", "1138");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "인천시청역");
            put("address", "남동구 구월동 1137");
            put("category", "교통시설 > 지하철역");
            put("pnu", "1137");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "구월중학교");
            put("address", "남동구 구월동 493");
            put("category", "교육시설 > 중학교");
            put("pnu", "493");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "인천대학교");
            put("address", "연수구 송도동 119");
            put("category", "교육시설 > 대학교");
            put("pnu", "119");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "송도국제병원");
            put("address", "연수구 송도동 909");
            put("category", "의료시설 > 종합병원");
            put("pnu", "909");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "인천종합버스터미널");
            put("address", "미추홀구 용현동 481");
            put("category", "교통시설 > 버스터미널");
            put("pnu", "481");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "인천공항");
            put("address", "중구 운서동 503");
            put("category", "교통시설 > 공항");
            put("pnu", "503");
        }});
        dummyList.add(new HashMap<>() {{
            put("name", "인천아트센터");
            put("address", "연수구 송도동 933도");
            put("category", "문화시설 > 공연장");
            put("pnu", "933");
        }});

        // (임시) 키워드로 필터링 (DB 검색 모방)
        if (keyword == null || keyword.isEmpty()) {
            return dummyList;
        }
        
        return dummyList.stream()
            .filter(item -> 
                ((String)item.get("name")).contains(keyword) || 
                ((String)item.get("address")).contains(keyword)
            )
            .collect(Collectors.toList());
    }
}