package nlib.cmm.service.impl;

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

import org.springframework.stereotype.Repository;

import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.cmm.service.NotificationVO;
import nlib.cmm.service.NlibProperty;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;

/**
 * <pre>
 * @Class Name : InformDAO.java
 * 
 * @Description : 이용안내 및 약관관련 정보 제공 DAO 
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * </pre>
 *
 * @ ------------    --------    ---------------------------
 * @ 수정일                     수정자             수정내용
 * @ ------------    --------    ---------------------------
 * @ 2021. 7. 27.    KNKIM       최초 생성
 *
 * 
 * @author 이씨플라자 * DIGITALSHIP KNKIM
 * @since 2021. 7. 27.
 * @version 1.0
 *
 */


@Repository("notificationDAO")
public class NotificationDAO extends EgovComAbstractDAO {

	/* 
	 * 사용자 알림 목록을 조회한다. 
	 */
	public List<NotificationVO> listNotifications(NotificationVO searchNotificationVO) throws Exception {
		
		return selectList("NotificationDAO.listNotifications", searchNotificationVO);
	}


	/** 
	 * 사용자 알림 목록의 건수를 조회한다.  
	 */
	public int countNotifications(String recvUserId) throws Exception {
		
		return selectOne("NotificationDAO.countNotifications", recvUserId);
	}
	
	/* 
	 * 사용자가 확인하지 않은 알림 건수를 조회한다. 
	 */
	public int countUnreadNotification(String recvUserId) throws Exception {
		
		return selectOne("NotificationDAO.countUnreadNotification", recvUserId);
	}
	
	/**
	 * 알림을 읽음으로 변경한다. 
	 * 만일, 이미 읽음표시된 경우에는 변경 없다. 
	 * 
	 * @param notiVO (notiId, recvUserId 필수)
	 * @return
	 * @throws Exception
	 */
	public int updateRead(NotificationVO notiVO) throws Exception {
		return update("NotificationDAO.updateRead", notiVO);
	}
	
	/**
	 * 알림내용 상세 조회 
	 * 
	 * @param notiVO (notiId, recvUserId 필수)
	 * @return
	 * @throws Exception
	 */
	public NotificationVO selectNotification(NotificationVO notiVO) throws Exception {
		return selectOne("NotificationDAO.selectNotification", notiVO);
	}
}
