package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import net.gepafin.tendermanagement.dao.NotificationDao; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.NotificationEnum; import net.gepafin.tendermanagement.model.request.GlobalFilters; import net.gepafin.tendermanagement.model.request.NotificationReq; import net.gepafin.tendermanagement.model.request.NotificationRequestBean; import net.gepafin.tendermanagement.model.response.NotificationResponse; import net.gepafin.tendermanagement.model.response.PageableResponseBean; import net.gepafin.tendermanagement.service.NotificationService; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import java.util.List; import static org.hibernate.internal.util.collections.CollectionHelper.listOf; @Service @Slf4j public class NotificationServiceImpl implements NotificationService { @Autowired private NotificationDao notificationDao; @Autowired private Validator validator; @Override public NotificationResponse sendNotification(Long userId, NotificationReq notificationReq, Long companyId) { log.info("Sending notification to user {} with content: {}", userId, notificationReq.getMessage()); notificationReq.setUserId(userId); notificationReq.setCompanyIds(listOf(companyId)); return notificationDao.sendNotification(notificationReq); } @Override public NotificationResponse getNotificationById(HttpServletRequest servletRequest, Long id) { return notificationDao.getNotificationById(id); } @Override public List getNotificationByUserId(HttpServletRequest servletRequest, Long userId, Long companyId, List statuses) { return notificationDao.getNotificationByUserId(userId, companyId, statuses); } @Override public NotificationResponse updateNotificationStatus(HttpServletRequest request, Long id, NotificationEnum status) { return notificationDao.updateNotificationStatus(id, status); } @Override public void deleteNotification(HttpServletRequest request, Long id) { notificationDao.deleteNotification(id); return; } @Override public List getNotificationsByCompanyIdAndUserId(Long userId, Long companyId, List statuses) { return notificationDao.getNotificationByCompanyIdAndUserId(userId, companyId, statuses); } @Override public PageableResponseBean> getAllNotification(HttpServletRequest request, Long userId, NotificationRequestBean notificationRequestBean) { UserEntity userEntity = validator.validateUser(request); return notificationDao.getAllNotification(userId,notificationRequestBean); } @Override public PageableResponseBean> getNotificationsByUserIdAndCompanyIdByPagination(HttpServletRequest request, Long userId, Long companyId, NotificationRequestBean notificationRequestBean) { return notificationDao.getNotificationsByUserIdAndCompanyIdByPagination(userId,companyId,notificationRequestBean); } }