package incheon.sgp.tdr.web;



import incheon.sgp.tdr.vo.TdrComboVO;
import incheon.sgp.tdr.vo.DronePoiVO;
import incheon.ags.aip.vo.AipExtracVO;
import incheon.com.cmm.api.DefaultApiResponse;
import incheon.sgp.tdr.service.SgpTdrService;
import incheon.sgp.tdr.vo.DronePoiVO;
import incheon.sgp.tdr.vo.SgpNatureVO;
import incheon.sgp.tdr.vo.SgpTdrVO;
import incheon.sgp.tdr.vo.TdrRequestVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author : ShinYoung, Kim
 * @version 1.0
 * @Class Name  : SgpTdrController.java
 * @Description :
 * @Modification Information
 * 개정일자			     개정자                  개정내용
 * ------------------ ----------- --------------------------
 * 2025. 09. 23        ShinYoung, Kim         최초생성
 * <p>
 * <p>
 * Copyright 2025. 올포랜드 INC.All rights reserved.
 * @since : 2025. 09. 23
 */

@Controller
@RequestMapping("/sgp/tdr")
@RequiredArgsConstructor
@Slf4j
public class SgpTdrController {


    private final SgpTdrService sgpTdrService;

    @RequestMapping("/main.do")
    public String main(ModelMap model, HttpServletResponse response) {

    	List<TdrComboVO> tourCatList = sgpTdrService.selectTourCatList();
    	model.addAttribute("tourCatList", tourCatList);
    	
    	List<TdrComboVO> natureCatList = sgpTdrService.selectNatureCatList();
    	model.addAttribute("natureCatList", natureCatList);
    	model.addAttribute("pageTitle", "공간정보포털 인천투어드림");
        model.addAttribute("headerTitle", "공간정보포털 인천투어드림");
        
        return "/sgp/tdr/tdrMapMain";
    }

    @RequestMapping(value = "/tdrList.do", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
	@ResponseBody
    public List<SgpTdrVO> selectTrsptList(@RequestBody TdrRequestVO tdrRequestVO) {    

    	//log.info("before tdrRequestVO=" + tdrRequestVO.toString());
    	//구 설정    	
    	if(tdrRequestVO.getSigCd().equals("%"))
    		tdrRequestVO.setSigCd("");

    	//동 설정    	
    	if(tdrRequestVO.getEmdCd().equals("%"))
    		tdrRequestVO.setEmdCd("");
		
    	//카테고리 설정
    	if(tdrRequestVO.getCatGb().equals("%"))
    		tdrRequestVO.setCatGb("");
				
		//반경 설정		
		if (tdrRequestVO.getRadius() != null) tdrRequestVO.setRadius(tdrRequestVO.getRadius()*1000);
		
		
		log.info("after tdrRequestVO=" + tdrRequestVO.toString());
        //List<SgpTdrVO> tdr = sgpTdrService.getTdrList(tdrRequestVO);
        List<SgpTdrVO> tdr = sgpTdrService.getTourMapDreamList(tdrRequestVO);
        //log.info("SgpTdrVO=" + tdr.toString());
        //model.addAttribute("tdr", tdr);
        return tdr;

    }
     
     
     

    @RequestMapping(value = "/natureList.do", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
	@ResponseBody
    public List<SgpNatureVO> selectNatureList(@RequestBody TdrRequestVO tdrRequestVO) {

    	//구 설정    	
    	if(tdrRequestVO.getSigCd().equals("%"))
    		tdrRequestVO.setSigCd("");

    	//동 설정    	
    	if(tdrRequestVO.getEmdCd().equals("%"))
    		tdrRequestVO.setEmdCd("");
		
    	//카테고리 설정
    	if(tdrRequestVO.getCatGb().equals("%"))
    		tdrRequestVO.setCatGb("");
				
		//반경 설정		
		if (tdrRequestVO.getRadius() != null) tdrRequestVO.setRadius(tdrRequestVO.getRadius()*1000);
		
		//log.info("TdrRequestDTO=" + vo.toString());
        List<SgpNatureVO> nature = sgpTdrService.getNatureList(tdrRequestVO);
        log.info("SgpNatureVO=" + nature.toString());
        //model.addAttribute("tdr", tdr);
        return nature;

    }
    
    @PostMapping(value = "/getDronePoiList.do", produces = "application/json; charset=UTF-8")
    @ResponseBody
    public List<DronePoiVO> getDronePoiList(@RequestBody TdrRequestVO tdrRequestVO) {
        
            
        	//반경 설정		
    		if (tdrRequestVO.getRadius() != null) tdrRequestVO.setRadius(tdrRequestVO.getRadius()*1000);
    		
            List<DronePoiVO> droneList = sgpTdrService.getDronePoiList(tdrRequestVO);
            log.info("DronePoiVO=" + droneList.toString());
            return droneList;

       
    }
	

}