package incheon.ags.por.service.impl;

import java.util.List;

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

import incheon.ags.por.mapper.PorBoardMapper;
import incheon.ags.por.service.PorBoardService;
import incheon.ags.por.vo.PorBoardVO;
import lombok.RequiredArgsConstructor;

/**
 * 공지사항 관리를 위한 서비스 구현 클래스
 */
@Service("porBoardService")
@RequiredArgsConstructor
public class PorBoardServiceImpl extends EgovAbstractServiceImpl implements PorBoardService {

    private final PorBoardMapper porBoardMapper;
    
    /**
     * 게시판 목록 총건수를 조회한다.
     * @param PorBoardVO - 조회할 정보가 담긴 VO
     * @return 게시물 건수
     * @exception Exception
     */
    public int selectBoardListCount(PorBoardVO boardVO) throws Exception {
    	return porBoardMapper.selectBoardListCount(boardVO);
    }
    
    /**
     * 공지사항 목록을 조회한다.
     * @param boardVO - 조회할 정보가 담긴 VO
     * @return 공지사항 목록
     * @exception Exception
     */
    @Override
    public List<PorBoardVO> selectBoardList(PorBoardVO boardVO) throws Exception {
        return porBoardMapper.selectBoardList(boardVO);
    }
    
    /**
     * 공지사항 상세정보를 조회한다.
     * @param boardVO - 조회할 정보가 담긴 VO
     * @return 공지사항 상세정보
     * @exception Exception
     */
    @Override
    public PorBoardVO selectBoardDetail(PorBoardVO boardVO) throws Exception {
        // 조회수 증가
        porBoardMapper.updateBoardReadCount(boardVO);
        
        return porBoardMapper.selectBoardDetail(boardVO);
    }
    
    /**
     * 공지사항을 등록한다.
     * @param boardVO - 등록할 정보가 담긴 VO
     * @return 등록된 공지사항 ID
     * @exception Exception
     */
    @Override
    public Long insertBoard(PorBoardVO boardVO) throws Exception {
        return porBoardMapper.insertBoard(boardVO);
    }
    
    /**
     * 공지사항을 수정한다.
     * @param boardVO - 수정할 정보가 담긴 VO
     * @return void
     * @exception Exception
     */
    @Override
    public Integer updateBoard(PorBoardVO boardVO) throws Exception {
        return porBoardMapper.updateBoard(boardVO);
    }
    
    /**
     * 공지사항을 삭제한다.
     * @param boardVO - 삭제할 정보가 담긴 VO
     * @return void
     * @exception Exception
     */
    @Override
    public Integer deleteBoard(PorBoardVO boardVO) throws Exception {
        return porBoardMapper.deleteBoard(boardVO);
    }
    
    /**
     * 게시판 목록을 조회한다.
     * @param boardVO - 조회할 정보가 담긴 VO
     * @return 게시판 목록
     * @exception Exception
     */
    @Override
    public List<PorBoardVO> selectBoardMasterList(PorBoardVO boardVO) throws Exception {
        return porBoardMapper.selectBoardMasterList(boardVO);
    }
} 