package cmm.service.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import cmm.Constant;
import cmm.service.CmmBbsService;
import cmm.service.CmmBbsVO;
import cmm.service.CmmCmsContentsVO;
//import cmm.service.CmmFileService;
import cmm.service.FileManagementVO;
import cmm.util.CmmUtil;
import cmm.util.DateUtil;
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
import egovframework.rte.fdl.cmmn.exception.EgovBizException;
import egovframework.rte.fdl.cmmn.exception.FdlException;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;


/**  
 * 게시판 관리에 대한 서비스 클래스를 구현한다.
 * @Class Name : CmmBbsServiceImpl.java
 * @author ecplaza 
 * @since 2018-04-16
 * @version 1.0
 */
@Service("cmmBbsService")
public class CmmBbsServiceImpl extends EgovAbstractServiceImpl implements CmmBbsService {

	/** LOGGER */
	@SuppressWarnings("unused")
	private static final Logger LOGGER = LoggerFactory.getLogger(CmmBbsServiceImpl.class);
	
	/** cmmBbsDAO */
    @Resource(name="cmmBbsDAO")
    private CmmBbsDAO cmmBbsDAO;
//
//    /** egovNttIdGnrService */
//    @Resource(name = "egovNttIdGnrService")
//    private EgovIdGnrService nttIdgenService;
    
//    /** CmmFileService */
//	@Resource(name = "cmmFileService")
//	private CmmFileService cmmFileService;

    public int selectCmmBbsListTotCnt(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	return (Integer)cmmBbsDAO.selectCmmBbsListTotCnt(cmmBbsVO);
    }
    public List<CmmBbsVO> selectCmmBbsList(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	return (List<CmmBbsVO>)cmmBbsDAO.selectCmmBbsList(cmmBbsVO);
	}
    public List<CmmBbsVO> selectCmmBbsTopList(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	return (List<CmmBbsVO>)cmmBbsDAO.selectCmmBbsTopList(cmmBbsVO);
	}
    public List<CmmBbsVO> selectCmmBbsCnList(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	return (List<CmmBbsVO>)cmmBbsDAO.selectCmmBbsCnList(cmmBbsVO);
	}
    public List<CmmBbsVO> selectCmmBbsMainList(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	cmmBbsVO.setSearchStartStr(DateUtil.getNowString("yyyyMMddHHmm"));// 쿼리에서 비교할 때는 분단위까지 비교
      	return (List<CmmBbsVO>)cmmBbsDAO.selectCmmBbsMainList(cmmBbsVO);
  	}
	public CmmBbsVO selectCmmBbsDetail(CmmBbsVO cmmBbsVO) throws EgovBizException{
		cmmBbsDAO.updateCmmBbsReadCnt(cmmBbsVO);
		CmmBbsVO rsVo = (CmmBbsVO)cmmBbsDAO.selectCmmBbsDetail(cmmBbsVO);
		if(rsVo != null && !rsVo.getBbsId().equals(Constant.BBS_ID_NOTICE)){
			if( !StringUtils.isBlank(rsVo.getNtceBgnde()) ){
				rsVo.setNtceBgnde(DateUtil.getDateFormatString(rsVo.getNtceBgnde()));
			}
			if( !StringUtils.isBlank(rsVo.getNtceEndde()) ){
				rsVo.setNtceEndde(DateUtil.getDateFormatString(rsVo.getNtceEndde()));
			}
			if(cmmBbsVO.isBr()){
				rsVo.setNttCn(CmmUtil.escapeNewlineToBr(rsVo.getNttCn()));
			}
		}
    	return rsVo;
	}
    public List<CmmBbsVO> selectPrevNextCmmBbsDetailList(CmmBbsVO cmmBbsVO) throws EgovBizException{
    	return (List<CmmBbsVO>)cmmBbsDAO.selectPrevNextCmmBbsDetailList(cmmBbsVO);
	}
	public String insertCmmBbs(CmmBbsVO cmmBbsVO, HttpServletRequest request) throws IOException, FdlException, EgovBizException{
		if( !StringUtils.isBlank(cmmBbsVO.getNtceBgnde()) ){
			cmmBbsVO.setNtceBgnde(cmmBbsVO.getNtceBgnde().replaceAll("-", ""));
		}
		if( !StringUtils.isBlank(cmmBbsVO.getNtceEndde()) ){
			cmmBbsVO.setNtceEndde(cmmBbsVO.getNtceEndde().replaceAll("-", ""));
		}
		cmmBbsVO.setNttSj(CmmUtil.unscript(cmmBbsVO.getNttSj()));	// XSS 방지
		//cmmBbsVO.setAtchFileId(cmmFileService.uploadFile(request, new FileManagementVO(true)));
		
		//String id =  String.valueOf(nttIdgenService.getNextLongId()).trim(); // TODO 필요여부 확인 DDDDDDDDDDDDDDDDDDDDDD 검색엔진 라이브러리 포함 처리하면서 들어온 모듈. 
		//cmmBbsVO.setNttId(id);
		//cmmBbsDAO.insertCmmBbs(cmmBbsVO);
		
		//return id;
		return null;
	}
	public void updateCmmBbs(CmmBbsVO cmmBbsVO, HttpServletRequest request) throws IOException, EgovBizException{
		if( !StringUtils.isBlank(cmmBbsVO.getNtceBgnde()) ){
			cmmBbsVO.setNtceBgnde(cmmBbsVO.getNtceBgnde().replaceAll("-", ""));
		}
		if( !StringUtils.isBlank(cmmBbsVO.getNtceEndde()) ){
			cmmBbsVO.setNtceEndde(cmmBbsVO.getNtceEndde().replaceAll("-", ""));
		}
		cmmBbsVO.setNttSj(CmmUtil.unscript(cmmBbsVO.getNttSj()));	// XSS 방지
		//cmmBbsVO.setAtchFileId(cmmFileService.uploadFile(request, new FileManagementVO(true)));
		cmmBbsDAO.updateCmmBbs(cmmBbsVO);
	}
	public void deleteCmmBbs(CmmBbsVO cmmBbsVO, HttpServletRequest request) throws EgovBizException{
		cmmBbsDAO.deleteCmmBbs(cmmBbsVO);
	}
	
	@Override
	public void updateLocalCultureRecommend(CmmBbsVO cmmBbsVO)
			throws EgovBizException {
		String idStr  = cmmBbsVO.getNttIdList().get(0).substring(0);
		String idArr[] = idStr.split(",");
		List<String> idList = new ArrayList<String>();
		for(int i=0; i<idArr.length; i++){
			idList.add(idArr[i]);
		}
		cmmBbsVO.setNttIdList(idList);
		cmmBbsDAO.updateLocalCultureRecommend(cmmBbsVO);
	}
}
