package nlib.cmm.service.impl;

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

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import nlib.cmm.service.NotificationService;
import nlib.cmm.service.NotificationVO;
import nlib.cmm.service.NlibProperty;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;

@Service("notificationService")
public class NotificationServiceImpl implements NotificationService
{
	private static final Logger log = LoggerFactory.getLogger(NotificationServiceImpl.class);
	
	@Resource(name="notificationDAO")
	private NotificationDAO notificationDAO;

	/** 
	 * 사용자 알림 목록을 조회한다. 
	 */
	public List<NotificationVO> listNotifications(NotificationVO notificationVO) throws Exception {
		
		return notificationDAO.listNotifications(notificationVO);
	}
	
	/** 
	 * 사용자 알림 목록의 건수를 조회한다.  
	 */
	public int countNotifications(String recvUserId) throws Exception {
		
		return notificationDAO.countNotifications(recvUserId);
	}
	
	/**
	 * 읽지 않은 알림 건수를 조회한다. 
	 * 
	 * @param mbInfoId
	 * @return
	 * @throws Exception
	 */
	public int countUnreadNotification(String recvUserId) throws Exception {
		
		return notificationDAO.countUnreadNotification(recvUserId);
	}

	/**
	 * 알림을 읽음으로 변경한다. 
	 * 만일, 이미 읽음표시된 경우에는 변경 없다. 
	 * 
	 * @param notiVO (notiId, recvUserId 필수)
	 * @return
	 * @throws Exception
	 */
	public int updateRead(NotificationVO notiVO) throws Exception {
		return notificationDAO.updateRead(notiVO);
	}
	
	/**
	 * 알림내용 상세 조회 
	 * 
	 * @param notiVO (notiId, recvUserId 필수)
	 * @return
	 * @throws Exception
	 */
	public NotificationVO selectNotification(NotificationVO notiVO) throws Exception {
		updateRead(notiVO);
		return notificationDAO.selectNotification(notiVO);
	}
	
}