package incheon.ags.por.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;

import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;

import incheon.ags.por.mapper.PorBoardFileMapper;
import incheon.ags.por.mapper.PorBoardMapper;
import incheon.ags.por.mapper.PorRtmsMapper;
import incheon.ags.por.service.PorBoardFileService;
import incheon.ags.por.service.PorBoardService;
import incheon.ags.por.service.PorRtmsService;
import incheon.ags.por.vo.PorBoardFileVO;
import incheon.ags.por.vo.PorEstateResultVO;
import incheon.ags.por.vo.PorEstateVO;
import incheon.ags.por.vo.PorRtmsResultVO;
import incheon.ags.por.vo.PorRtmsVO;
import incheon.ags.por.vo.kb.PorRtmsInfoVO;
import incheon.ags.por.vo.kb.PorRtmsPriceVO;
import incheon.ags.por.vo.kb.PorRtmsPyongVO;
import incheon.com.cmm.service.FileVO;
import lombok.RequiredArgsConstructor;

/**
 * 게시물 파일 관리를 위한 서비스 구현 클래스
 */
@Service("porSampleService")
@RequiredArgsConstructor
public class PorRtmsServiceImpl extends EgovAbstractServiceImpl implements PorRtmsService {

    private final PorRtmsMapper porRtmsMapper;
    
    /**
     * 부동산 실거래가 매매 카테고리 목록을 조회한다.
     * @param PorRtmsVO - 조회할 정보가 담긴 PorRtmsVO
     * @return PorRtmsResultVO 목록
     * @exception Exception
     */
    @Override
    public List<PorRtmsResultVO> selectRtmsBuyCategoryList(PorRtmsVO vo) throws Exception {
        return porRtmsMapper.selectRtmsBuyCategoryList(vo);
    }
    
    /**
     * 부동산 실거래가 매매 목록을 조회한다.
     * @param PorRtmsVO - 조회할 정보가 담긴 PorRtmsVO
     * @return PorRtmsResultVO 목록
     * @exception Exception
     */
    @Override
    public List<PorRtmsResultVO> selectRtmsBuyList(PorRtmsVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsBuyList(vo);
    }
    
    /**
     * 부동산 실거래가 전월세 카테고리 목록을 조회한다.
     * @param PorRtmsVO - 조회할 정보가 담긴 PorRtmsVO
     * @return PorRtmsResultVO 목록
     * @exception Exception
     */
    public List<PorRtmsResultVO> selectRtmsRentCategoryList(PorRtmsVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsRentCategoryList(vo);
    }
    
    /**
     * 부동산 실거래가 전월세 목록을 조회한다.
     * @param PorRtmsVO - 조회할 정보가 담긴 PorRtmsVO
     * @return PorRtmsResultVO 목록
     * @exception Exception
     */
    public List<PorRtmsResultVO> selectRtmsRentList(PorRtmsVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsRentList(vo);
    }
    
    /**
     * 게시물 파일 목록을 조회한다.
     * @param PorBoardFileVO - 조회할 정보가 담긴 BoardFileVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorRtmsPriceVO> selectKbRtmsPrice(PorRtmsPriceVO vo) throws Exception {
    	return porRtmsMapper.selectKbRtmsPrice(vo);
    }
    
    /**
     * 게시물 파일 목록을 조회한다.
     * @param PorBoardFileVO - 조회할 정보가 담긴 BoardFileVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public PorRtmsInfoVO selectKbRtmsInfo(PorRtmsInfoVO vo) throws Exception {
    	return porRtmsMapper.selectKbRtmsInfo(vo);
    }
    
    /**
     * 게시물 파일 목록을 조회한다.
     * @param PorBoardFileVO - 조회할 정보가 담긴 BoardFileVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorRtmsPyongVO> selectKbRtmsPyong(PorRtmsPyongVO vo) throws Exception {
    	return porRtmsMapper.selectKbRtmsPyong(vo);
    }
    
    /**
     * KB UID 취득
     * @param String - 조회할 정보가 담긴 String
     * @return UID
     * @exception Exception
     */
    @Override
    public String selectKbRtmsUid(String value) throws Exception {
    	return porRtmsMapper.selectKbRtmsUid(value);
    }
    
    /**
     * 실거래가 매매 목록을 조회한다.
     * @param PorEstateResultVO - 조회할 정보가 담긴 PorEstateResultVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorEstateResultVO> selectRtmsTradeList(PorEstateVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsTradeList(vo);
    }
    
    /**
     * 실거래가 매매 목록을 조회한다.
     * @param PorEstateResultVO - 조회할 정보가 담긴 PorEstateResultVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorEstateResultVO> selectRtmsCharterList(PorEstateVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsCharterList(vo);
    }
    
    /**
     * 실거래가 월세 목록을 조회한다.
     * @param PorEstateResultVO - 조회할 정보가 담긴 PorEstateResultVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorEstateResultVO> selectRtmsRentalList(PorEstateVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsRentalList(vo);
    }
    
    /**
     * 실거래가 분양권/입주권 목록을 조회한다.
     * @param PorEstateResultVO - 조회할 정보가 담긴 PorEstateResultVO
     * @return 게시물 파일 목록
     * @exception Exception
     */
    @Override
    public List<PorEstateResultVO> selectRtmsPresaleList(PorEstateVO vo) throws Exception {
    	return porRtmsMapper.selectRtmsPresaleList(vo);
    }
} 