package itn.let.cop.bbs.service;

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

import egovframework.rte.psl.dataaccess.util.EgovMap;
import itn.let.uss.umt.service.MberManageVO;

/**
 * 게시물 관리를 위한 서비스 인터페이스  클래스
 * @author 공통 서비스 개발팀 이삼섭
 * @since 2009.03.19
 * @version 1.0
 * @see
 *  
 * <pre>
 * << 개정이력(Modification Information) >>
 * 
 *   수정일      수정자          수정내용
 *  -------    --------    ---------------------------
 *  2009.03.19  이삼섭          최초 생성
 *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성 
 *  
 *  </pre>
 */
public interface EgovBBSManageService {

	/**
	 * 메인 폴라스토리 이미지 수정
	 * 
	 * @param Board
	 * @exception Exception Exception
	 */
	public void updateMainPolaImg(Board Board)
	  throws Exception;

	/**
	 * 게시물 한 건을 삭제 한다.
	 * 
	 * @param Board
	 * @exception Exception Exception
	 */
	public Board deleteBoardArticle(Board Board)
			throws Exception;
	
	/**
	 * 게시물 한 건을 사용처리 한다.
	 * 
	 * @param Board
	 * @exception Exception Exception
	 */
	public Board updateBoardArticleUseY(Board Board)
			throws Exception;	
	
	/**
	 * 게시판에 게시물 또는 답변 게시물을 등록 한다.
	 * 
	 * @param Board
	 * @return Board (게시물 변경이력을 위한 리턴)
	 * @exception Exception Exception
	 */
	public Board insertBoardArticle(Board Board)
	  throws Exception;

	/**
	 * 게시물 대하여 상세 내용을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public BoardVO selectBoardArticle(BoardVO boardVO)
	  throws Exception;

	/**
	 * 조건에 맞는 게시물 목록을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardArticles(BoardVO boardVO, String attrbFlag)
	  throws Exception;

	/**
	 * (사용자)조건에 맞는 게시물 목록을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardArticlesWeb(BoardVO boardVO, String attrbFlag)
			throws Exception;
	
	/**
	 * (사용자)Url 조건에 맞는 게시물 목록을 조회 한다.
	 * @return
	 * 
	 * @param BoardMasterVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardArticlesWebUrl(BoardMasterVO boardMasterVO, String attrbFlag)
			throws Exception;
	
	/**
	 * 게시물 한 건의 내용을 수정 한다.
	 * 
	 * @param Board
	 * @exception Exception Exception
	 */
	public Board updateBoardArticle(Board Board)
	  throws Exception;

	/**
     * 게시물 윗글/아랫글 게시물 번호, 제목을 조회한다
	 * @return EgovMap
	 * @param boardVO
	 * @exception Exception Exception
     */
    public EgovMap getUpDownNttIdNSj(BoardVO boardVO) throws Exception;

	/**
     * 공지사항 게시물 목록을 조회 한다.
	 * @return List<BoardVO>
	 * @param boardVO
	 * @exception Exception Exception
     */
    public List<BoardVO> selectBoardNotifyArticles(BoardVO boardVO, String attrbFlag) throws Exception;

	/**
	 * 조건에 맞는 게시물 변경이력 목록을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardChgHsts(BoardChgHst boardChgHst) throws Exception;

	/**
	 * 게시판 변경이력을 등록한다.
	 * 
	 * @param BoardChgHst
	 * @exception Exception Exception
	 */
	public void insertBoardChgHst(BoardChgHst boardChgHst) throws Exception;

	/**
	 * 게시물 변경이력 신규 ID(MAX) 조회
	 * 
	 * @param BoardChgHst
	 * @exception Exception Exception
	 */
    public int selectBoardChgHstId(BoardChgHst boardChgHst) throws Exception;
    
	/**
	 * 게시물 변경이력 대하여 상세 내용을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public BoardChgHst selectBoardChgHst(BoardChgHst boardChgHst)
	  throws Exception;
	
	/**
	 * (사용자)게시물 대하여 상세 내용을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public BoardVO selectBoardArticleWeb(BoardVO boardVO)
	  throws Exception;

	/**
	 * (사용자)게시물 조회수 업데이트
	 * @return
	 * 
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public void updateBoardArticleInqireCo(BoardVO boardVO)
			throws Exception;

	/**
	 * (메인)미답변 게시물
	 * @return
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public List<BoardVO> selectMainBoardListN(BoardVO boardVO) throws Exception;
	/**
	 * (메인)답변 게시물
	 * @return
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public List<BoardVO> selectMainBoardListY(BoardVO boardVO) throws Exception;

	/**
	 * (메인)최근게시물
	 * @return
	 * @param boardVO
	 * @exception Exception Exception
	 */
	public List<BoardVO> selectMainBoardRecent(BoardVO boardVO) throws Exception;

	public List<SearchTotalVO> selectBoardTotalSearch(SearchTotalVO searchTotalVO) throws Exception;

	public int selectBoardTotalSearchCnt(SearchTotalVO searchTotalVO) throws Exception;
	
	public List<BoardVO> selectAdminMainBoard(BoardVO boardVO) throws Exception;

	public List<BoardVO> selectAdminMainBoardByDash(BoardVO boardVO) throws Exception;
	
	public List<BoardVO> selectUserBbsWriteList(BoardVO boardVO) throws Exception;
	
	public int selectAdminMainNewBoardCnt(BoardVO boardVO) throws Exception;
	
	public int selectAdminMainYdaBoardCnt(BoardVO boardVO) throws Exception;

	public List<BoardVO> selectBoardAnswerList(BoardVO bdVO)  throws Exception;

	public BoardVO selectBbsTabIdByPubUrl(BoardVO boardVO) throws Exception;
	
	/**
	 * (사용자)조건에 맞는 게시물 목록을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardArticlesWebEvent(BoardVO boardVO, String attrbFlag)
			throws Exception;
	
	/**
	 * (사용자)조건에 맞는 게시물 목록을 조회 한다.
	 * @return
	 * 
	 * @param boardVO
	 * @param attrbFlag
	 * @exception Exception Exception
	 */
	public Map<String, Object> selectBoardArticlesWebEventEnd(BoardVO boardVO, String attrbFlag)
			throws Exception;
	
	
	public Map<String, Object> selectBoardArticlesWebUrlEventAll(BoardMasterVO boardMasterVO, String attrbFlag) throws Exception;
	
	public MberManageVO selectboardArticleWebQnaMberInfo(MberManageVO mberManageVO) throws Exception;
	
}