package incheon.uis.ums.web;

import javax.servlet.http.HttpServletRequest;

import org.springframework.http.ResponseEntity;
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.RestController;

import incheon.com.cmm.api.DefaultApiResponse;
import incheon.com.security.util.SecurityUtil;
import incheon.uis.ums.service.UisCrossSectionService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * 횡단면도 조회 Controller
 *
 * @author 호지원
 * @since 2025.01.26
 */
@RestController
@RequestMapping("/api/uis/crossSection")
@RequiredArgsConstructor
@Slf4j
public class UisCrossSectionController {

    private final UisCrossSectionService uisCrossSectionService;

    /**
     * 횡단면도 데이터 조회
     * @param lineWkt 라인 WKT 문자열
     * @return JSON 형태의 횡단면도 데이터
     */
    @GetMapping("/select.do")
    public ResponseEntity<DefaultApiResponse<String>> selectCrossSection(
            @RequestParam(name = "lineWkt", required = true) String lineWkt) {

        SecurityUtil.requirePermission("UIS", "PERM_FUNC_READ");

        try {
            log.info("횡단면도 조회 요청: lineWkt={}", lineWkt);

            String result = uisCrossSectionService.selectCrossSection(lineWkt);

            log.info("횡단면도 조회 완료");
            return ResponseEntity.ok(DefaultApiResponse.success(result, "횡단면도 조회 성공"));

        } catch (Exception e) {
            log.error("횡단면도 조회 중 오류 발생", e);
            return ResponseEntity.status(500)
                    .body(DefaultApiResponse.error(500, "횡단면도 조회 중 오류가 발생했습니다.", "InternalServerError"));
        }
    }
}