/** 
 * BoardService.java
 * @author 임새미 
 * @since 2016. 10. 25.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 25. 	    임새미				       최초생성
 * 
 */
package kcg.imis.notice.service;

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

import kcg.imis.notice.vo.NoticeSearchVO;
import kcg.imis.notice.vo.NoticeVO;

import org.springframework.web.multipart.MultipartFile;


/**
 * 
  * @FileName : BoardService.java
  * @Project : 국제해양프로젝트
  * @Date : 2018. 3. 21. 
  * @작성자 : Moon
  * @변경이력 : 
  * @프로그램 설명 :
 */
public interface NoticeService {
	
	/**
	 * 공지 목록 화면을 반환한다.
	 * 
	 * @param searchVO 검색, 페이지 정보 객체
	 * @return 게시물 리스트
	 * @throws Exception 기본 예외 처리
	 */
	public List<NoticeVO> selectList(final NoticeSearchVO searchVO) throws Exception ;
	
    /**
	 * 검색 키워드에 따른 총 게시물 개수를 조회한다.
	 * 
	 * @param searchVO 검색, 페이지 정보 객체
	 * @return 게시물 개수
	 * @exception Exception 기본 예외 처리
	 */
	public int selectListCnt(final NoticeSearchVO searchVO) throws Exception ;
	
	/**
	 * 전체 게시물 개수를 가져온다.
	 * 
	 * @return 게시물 개수
	 * @throws Exception 기본 예외 처리
	 */
	public int selectTotalCnt(final NoticeSearchVO searchVO) throws Exception ;
	

	/**
	 * 선택한 게시물의 내용을 반환한다.
	 * 
	 * @param bdSeq 공지 
	 * @return 선택한 게시물 내용 반환
	 * @throws Exception 기본 예외 처리
	 */
	public NoticeVO select(final NoticeVO noticeVO) throws Exception;
	
	
	
	/**
	 * 게시물을 추가한다.
	 * 
	 * @param noticeVO 공지 내용 구성 객체
	 * @param fileMap 업로드 파일정보체
	 * @return HashMap/ seq : 게시물 , result : 성공 - 1, 실패 - 0
	 * @exception Exception 기본 예외 처리
	 */
	public HashMap<String, Object> insert(final NoticeVO noticeVO) throws Exception;
	
	
	/**
	 * 게시물을 업데이트 한다.
	 * 
	 * @param noticeVO 게시물 VO
	 * @param fileMap MultipartFile형태의 파일정보 
	 * @param deleteFiles 삭제할 파일리스트
	 * @return HashMap/ seq : 게시물 번호 , result : 성공 - 1, 실패 - 0
	 */
	public HashMap<String, Object> update(final NoticeVO noticeVO) throws Exception;

	
	/**
	 * 게시물을 삭제한다.
	 * 
	 * @param bdSeq 게시물 번호
	 * @return HashMap/ seq : 게시물 번호 , result : 성공 - 1, 실패 - 0
	 */
	public HashMap<String, Object> delete(final NoticeVO noticeVO) throws Exception;

	public List<NoticeVO> selectNoticePopupList() throws Exception;
}
