Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public SendNotificationVM sendNotification(ManagedSendNotificationVM notificationVM) {
- Set<User> users = getUsers(notificationVM);
- Notification notification = Notification.builder()
- .message(notificationVM.getMessage())
- .status(NotificationStatus.SENT)
- .messageType(notificationVM.getMessageType())
- .title(notificationVM.getTitle())
- .build();
- repository.save(notification);
- log.debug("Saved notification");
- users.forEach(user -> {
- NotificationHistory notificationHistory = NotificationHistory.builder()
- .user(user)
- .notification(notification)
- .readStatus(HistoryNotificationStatus.UNREAD)
- .build();
- notificationHistoryRepository.save(notificationHistory);
- log.debug("Updated notification history");
- });
- log.info("Notification[id={}] has been created for users{}. Producer: [{}]", notification.getId(), users.stream().map(User::getId).collect(Collectors.toList()), getCurrentUserLogin());
- return mapper.toDto(notification);
- }
- private Set<User> getUsers(ManagedSendNotificationVM notificationVM) {
- List<User> users = userService.findAllOrThrow(getList(notificationVM.getUsers()));
- List<Group> groups = groupService.findAllOrThrow(getList(notificationVM.getGroups()));
- List<User> usersFromGroup = groups.stream()
- .map(Group::getUsers)
- .flatMap(Collection::stream)
- .collect(Collectors.toList());
- users.addAll(usersFromGroup);
- if (users.isEmpty()) {
- log.warn("Cannot find valid users from [{}] idS and groups[]", notificationVM.getUsers(), notificationVM.getGroups());
- throw new com.longulf.net.errors.EntityNotFoundException("Cannot find any users to send notification");
- }
- return Sets.newHashSet(users);
- }
- @Override
- public HistoryNotificationStatus markNotificationForCurrentUser(HistoryNotificationStatus status, Long id) {
- User user = userService.getUserWithAuthority()
- .orElseThrow(() -> new EntityNotFoundException("User could not be found"));
- NotificationHistory notificationHistory = user.getNotifications()
- .stream()
- .filter(n -> n.getNotification().getId().equals(id))
- .findFirst()
- .orElseThrow(() -> new com.longulf.net.errors.EntityNotFoundException("Cannot find user's notification with notificationId=" + id));
- notificationHistory.setReadStatus(HistoryNotificationStatus.READ);
- log.info("Notification[id={}] status has been marked as READ by user[{}]",id, getCurrentUserLoginOrThrow());
- return status;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement