package incheon.ags.drm.service;


import incheon.ags.drm.vo.DrmContentVO;
import incheon.ags.drm.vo.DrmOrthoVO;
import incheon.ags.drm.vo.DrmPoiVO;
import incheon.ags.drm.vo.DrmResultVO;
import incheon.cmm.g2f.layer.vo.TaskLayerSearchRequestDTO;
import incheon.cmm.g2f.layer.vo.TaskLayerVO;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

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

public interface agsDrmService {

    List<Map<String, Object>> selectColumnsExcludeGeom(String layerName) throws Exception;
    List<Map<String, Object>> selectColumnsCommentExcludeGeom(String layerName) throws Exception;
    List<TaskLayerVO> getLayerList(TaskLayerSearchRequestDTO request) throws Exception;
    List<Map<String, Object>> getAddressByPoint(String pnu) throws Exception;

    /* DRM_POI */
    Map<String, Integer> countByRelPoiId(Long relPoiId) throws Exception;
    void deleteByRelPoiId(Long relPoiId) throws Exception;
    List<DrmPoiVO> selectPOIList(DrmPoiVO drmPoiVO) throws Exception;
    int selectPOIListCnt(DrmPoiVO drmPoiVO) throws Exception;
    DrmPoiVO searchPoiDetail(DrmPoiVO drmPoiVO) throws Exception;
    void updatePoi(DrmPoiVO drmPoiVO) throws Exception;
    void deletePOI(DrmPoiVO drmPoiVO) throws Exception;
    void registerContent(DrmContentVO drmContentVO, MultipartFile file) throws Exception;
    void registerResult(DrmResultVO drmResultVO) throws Exception;

    /* CONTENT */
    List<DrmContentVO> selectContentList(DrmContentVO drmContentVO) throws Exception;
    int selectContentListCnt(DrmContentVO drmContentVO) throws Exception;
    DrmContentVO searchContentDetail(Long contsId) throws Exception;
    void updateContent(DrmContentVO drmContentVO) throws Exception;
    Map<String, Object> deleteContent(Long contsId) throws Exception;

    /* RESULT */
    List<DrmResultVO> selectResultList(DrmResultVO drmResultVO) throws Exception;
    int selectResultListCnt(DrmResultVO drmResultVO) throws Exception;
    DrmResultVO searchResultDetail(Long rsulId) throws Exception;
    void updateResult(DrmResultVO drmResultVO) throws Exception;
    void deleteResult(Long rsulId) throws Exception;

    /* ORTHO */
    List<DrmOrthoVO> selectOrthoList(DrmOrthoVO drmOrthoVO) throws Exception;
    int selectOrthoListCnt(DrmOrthoVO drmOrthoVO) throws Exception;
    void registerOrtho(DrmOrthoVO drmOrthoVO) throws Exception;
    DrmOrthoVO searchOrthoDetail(Long orthoId) throws Exception;
    void updateOrtho(DrmOrthoVO drmOrthoVO) throws Exception;
    void deleteOrtho(Long orthoId) throws Exception;

    ResponseEntity<Resource> downLoadExcel(List<Map<String, Object>> data, Map<String, String> columnMap, String fileName);
}
