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

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

import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import incheon.ags.dss.common.mapper.DssCommonMapper;
import incheon.ags.dss.common.service.DssCommonService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@RequiredArgsConstructor
@Slf4j
public class DssCommonServiceImpl implements DssCommonService {
    
    private final DssCommonMapper mapper;
    
    //1. '구' 목록 조회
    @Override
    public List<Map<String, Object>> selectGuList() throws Exception {
        return mapper.selectGuList();
    }
    
    //2. '동' 목록 조회
    @Override
    public List<Map<String, Object>> selectDongList(String sigCd) throws Exception {
        return mapper.selectDongList(sigCd);
    }
    
    @Override
    public Map selectEmdDataForDetail(String emdCd) throws Exception {
        return mapper.selectEmdDataForDetail(emdCd); 
    }
    
    //교차 영역 검색
    @Override
    public Map findIntersectingArea(Map<String, Object> params) throws Exception {
        String geomWkt = (String) params.get("geom");
        String layerType = (String) params.get("layerType");
        
        if (!StringUtils.hasText(geomWkt) || !StringUtils.hasText(layerType)) {
            throw new Exception("좌표(geom) 또는 레이어 유형(layerType)이 없습니다.");
        }

        if ("emd".equals(layerType)) {
            // 읍면동(5179) 검색
            return mapper.findEmdByGeom(geomWkt);
        } 
        else if ("cadastral".equals(layerType)) {
            // 연속지적도(5186) 검색
            return mapper.findCadastralByGeom(geomWkt);
        }
        
        return null; // 해당 사항 없음
    }
}