package incheon.ags.aip.service.impl;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;

import incheon.ags.aip.mapper.AipExtracMapper;
import incheon.ags.aip.service.AipExtracService;
import incheon.ags.aip.vo.AipExtracVO;
import incheon.ags.aip.vo.AipSearchVO;
import lombok.RequiredArgsConstructor;

@Service("AipExtracService")
@RequiredArgsConstructor
public class AipExtracServiceImpl extends EgovAbstractServiceImpl implements AipExtracService {

    private final AipExtracMapper aipExtracMapper;
    
    /**
     * 조서 count
     * @param vo
     * @return 조서 count
     * @exception Exception
     */
    @Override
    public int getExtracCount(AipSearchVO vo) throws Exception {
    	return aipExtracMapper.getExtracCount(vo);
    }
    
    /**
     * 조서 리스트 조회
     * @param vo
     * @return 조서 List
     * @exception Exception
     */
    @Override
    public List<AipExtracVO> getExtracList(AipSearchVO vo) throws Exception {
        return aipExtracMapper.getExtracList(vo);
    }
    
    /**
     * 조서 상세
     * @param vo
     * @return 조서 상세
     * @exception Exception
     */
    @Override
    public Map<String, Object> getExtracMap(Map<String, Object> param) throws Exception {
    	return aipExtracMapper.getExtracMap(param);
    }
    
    /**
     * 조서 파일 리스트
     * @param vo
     * @return 조서 File List
     * @exception Exception
     */
    @Override
    public List<Map<String, Object>> getExtracFileList(Map<String, Object> param) throws Exception {
    	return aipExtracMapper.getExtracFileList(param);
    }
    
    /**
     * 조서 등록
     * @param vo
     * @return 조서 등록
     * @exception Exception
     */
    @Override
    public int updateExtrac(AipExtracVO vo) throws Exception {
    	return aipExtracMapper.updateExtrac(vo);
    }
    
    /**
     * 파일 삭제
     * @param file
     * @return
     * @exception Exception
     */
    @Override
    public List<Map<String, Object>> deleteFiles(List<String> uuid) throws Exception {
        if(uuid == null || uuid.isEmpty()) return Collections.emptyList();
    	return aipExtracMapper.deleteFiles(uuid);
    }
    
    /**
     * 조서 파일 업로드
     * @param file
     * @return
     * @exception Exception
     */
    @Override
    public int insertExtracFile(Map<String, Object> file) throws Exception {
    	return aipExtracMapper.insertExtracFile(file);
    }
    
    /**
     * 북마크 등록
     * @param parma
     * @return
     * @exception Exception
     */
    @Override
    public String insertBmk(Map<String, Object> param) throws Exception {
    	aipExtracMapper.insertBmk(param);
        Object id = param.get("idx");
        return (id == null) ? null : String.valueOf(id);
    }
    
    /**
     * 북마크 삭제
     * @param parma
     * @return
     * @exception Exception
     */
    @Override
    public int deleteBmk(Map<String, Object> param) throws Exception {
    	return aipExtracMapper.deleteBmk(param);
    }
    
	/**
	 * 내용 : 엑셀 입력데이터 update
	 * @param list
	 * @return
	 * @throws Exception
	 */
	public void setExcelData(List<Map<String, Object>> list) throws Exception {
		for (Map<String,Object> row : list) {
			aipExtracMapper.setExcelData(row);
		}
    }
	
	/**
	 * 내용 : 엑셀 다운로드 속성조건 조회
	 * @param param
	 * @return
	 * @throws Exception
	 */
	public List<LinkedHashMap<String, Object>> selectExcelDownData(AipSearchVO vo) throws Exception {
		List<LinkedHashMap<String, Object>> list = aipExtracMapper.selectExcelDownData(vo);
		return list;
	}
	
	/**
	 * 내용 : 엑셀 다운로드 공간조건 조회
	 * @param param
	 * @return
	 * @throws Exception
	 */
	public List<LinkedHashMap<String, Object>> selectExcelDownDataByIds(List<Long> gidList) throws Exception {
		List<LinkedHashMap<String, Object>> list = aipExtracMapper.selectExcelDownDataByIds(gidList);
		return list;
	}

}