package incheon.ags.dss.config.web;

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

import javax.servlet.http.HttpServletRequest;

import incheon.com.cmm.api.DefaultApiResponse;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import incheon.ags.dss.config.service.AnaStatsMapDtlService;
import incheon.ags.dss.config.vo.AnaStatsMapDtlVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * 통계지도 설정(AnaStatsMap) 기능의 JSON 데이터를 반환하는 API 컨트롤러
 */
@RestController 
@RequiredArgsConstructor
@Slf4j
@RequestMapping("/dss/ana/statsMapDtl/api")
public class AnaStatsMapDtlApiController {

    private final AnaStatsMapDtlService anaStatsMapDtlService;

    /**
     * 통계지도 설정 이력 상세 데이터 조회 (JSON)
     * zoneNo로 최신 설정 조회
     */
    @GetMapping("/detail.do")
    public ResponseEntity<DefaultApiResponse> getAnaStatsMapDetail(
            @RequestParam("zoneNo") int zoneNo) throws Exception {
        
        log.info("API: getAnaStatsMapDetail (zoneNo: {})", zoneNo);
        
        AnaStatsMapDtlVO vo = new AnaStatsMapDtlVO();
        vo.setZoneNo(zoneNo);
        
        AnaStatsMapDtlVO resultSet = anaStatsMapDtlService.selectAnaStatsMapDtlDetail(vo);
        
        return ResponseEntity.ok(DefaultApiResponse.success(resultSet, "조회되었습니다."));
    }

    /**
     * 신규 통계지도 설정 생성 (JSON)
     */
    @PostMapping("/save.do")
    public ResponseEntity<DefaultApiResponse> saveAnaStatsMap(
            @RequestBody AnaStatsMapDtlVO vo,
            HttpServletRequest request) throws Exception {
        
        log.info("API: saveAnaStatsMap (zoneNo: {}, crtrYr: {})", vo.getZoneNo(), vo.getCrtrYr());
        
        // ServiceImpl에서 통계 분석 로직 수행 후 'statsRslt' 필드를 채우고 INSERT
        String stngNo = anaStatsMapDtlService.saveAnaStatsMapDtl(vo);
        
        return ResponseEntity.ok(DefaultApiResponse.success(stngNo, "생성되었습니다."));
    }

    /**
     * 통계지도 설정 이력 삭제 (JSON)
     */
    @PostMapping("/delete.do")
    public ResponseEntity<DefaultApiResponse> deleteAnaStatsMap(
            @RequestParam("stngNo") String stngNo,
            HttpServletRequest request) throws Exception {
        
        log.info("API: deleteAnaStatsMap (stngNo: {})", stngNo);
        
        AnaStatsMapDtlVO vo = new AnaStatsMapDtlVO();
        vo.setStngNo(stngNo);
        
        anaStatsMapDtlService.deleteAnaStatsMapDtl(vo);
        
        return ResponseEntity.ok(DefaultApiResponse.success(null, "삭제되었습니다."));
    }
}