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

import org.springframework.stereotype.Service;

import incheon.ags.dss.decline.service.NaverLandService;
import incheon.ags.dss.config.mapper.SimZoneMstMapper;
import incheon.ags.dss.config.vo.SimZoneMstVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service("naverLandService")
@RequiredArgsConstructor
@Slf4j
public class NaverLandServiceImpl implements NaverLandService {

    private final SimZoneMstMapper simZoneMstMapper;

    @Override
    public String getNaverLandUrl(Long zoneNo) throws Exception {
        // 1. 기존 Mapper 메서드 재사용 (selectSimZoneMstDetail)
        SimZoneMstVO searchVO = new SimZoneMstVO();
        searchVO.setZoneNo(zoneNo);
        
        SimZoneMstVO resultVO = simZoneMstMapper.selectSimZoneMstDetail(searchVO);

        // 2. 좌표 추출 (WKT 파싱)
        // DB에서 ST_AsText(cepo_crdnt)로 가져온다고 가정: "POINT(126.1234 37.1234)"
        double lat = 37.4562557; // (기본값: 인천시청)
        double lng = 126.7052062;

        if (resultVO != null && resultVO.getCepoCrdnt() != null) {
            try {
                String wkt = resultVO.getCepoCrdnt(); // 예: POINT(126.705 37.456)
                // 간단한 파싱 로직
                String coordStr = wkt.replace("POINT(", "").replace(")", "");
                String[] coords = coordStr.split(" ");
                
                if (coords.length >= 2) {
                    lng = Double.parseDouble(coords[0]); // X (경도)
                    lat = Double.parseDouble(coords[1]); // Y (위도)
                }
            } catch (Exception e) {
            	// [보안 조치] 구체적인 파싱 에러 내용은 숨기고, 식별자(zoneNo)만 남김
                log.warn("WKT Parsing Error for zoneNo {}: (상세 내용은 디버그 로그 확인)", zoneNo);
                log.debug("WKT Parsing Error Detail", e);
            }
        }

        // 3. URL 생성
        // https://new.land.naver.com/offices?ms={lat},{lng}&a=...
        String baseUrl = "https://new.land.naver.com/offices";
        String params = String.format("?ms=%f,%f", lat, lng);

        log.info("Generated Naver URL for Zone {}: {}", zoneNo, params);
        
        return baseUrl + params;
    }
}