diff --git a/src/main/java/uk/ac/cam/cl/dtg/isaac/dos/content/Notification.java b/src/main/java/uk/ac/cam/cl/dtg/isaac/dos/content/Notification.java index a665967400..a560b89b9a 100644 --- a/src/main/java/uk/ac/cam/cl/dtg/isaac/dos/content/Notification.java +++ b/src/main/java/uk/ac/cam/cl/dtg/isaac/dos/content/Notification.java @@ -27,6 +27,7 @@ public class Notification extends Content { private ExternalReference externalReference; private Instant expiry; + private Instant startDate; /** * Notification object constructor taking a string value for the notification content. @@ -79,4 +80,25 @@ public Instant getExpiry() { public void setExpiry(final Instant expiry) { this.expiry = expiry; } + + + /** + * Gets the startDate. + * + * @return the startDate + */ + public Instant getStartDate() { + return startDate; + } + + /** + * Sets the startDate. + * + * @param startDate the startDate to set + */ + public void setStartDate(final Instant startDate) { + this.startDate = startDate; + } } + + diff --git a/src/main/java/uk/ac/cam/cl/dtg/isaac/dto/content/NotificationDTO.java b/src/main/java/uk/ac/cam/cl/dtg/isaac/dto/content/NotificationDTO.java index b4ca4838e5..244533b170 100644 --- a/src/main/java/uk/ac/cam/cl/dtg/isaac/dto/content/NotificationDTO.java +++ b/src/main/java/uk/ac/cam/cl/dtg/isaac/dto/content/NotificationDTO.java @@ -27,6 +27,7 @@ public class NotificationDTO extends ContentDTO { private ExternalReference externalReference; private Instant expiry; + private Instant startDate; /** * Notification object constructor taking a string value for the notification content. @@ -79,4 +80,23 @@ public Instant getExpiry() { public void setExpiry(final Instant expiry) { this.expiry = expiry; } + + +/** + * Gets the startDate. + * + * @return the startDate + */ + public Instant getStartDate() { + return startDate; +} + +/** + * Sets the startDate. + * + * @param startDate the startDate to set + */ + public void setStartDate(final Instant startDate) { + this.startDate = startDate; +} } diff --git a/src/main/java/uk/ac/cam/cl/dtg/segue/api/managers/NotificationPicker.java b/src/main/java/uk/ac/cam/cl/dtg/segue/api/managers/NotificationPicker.java index 828d96e474..81f8db95c3 100644 --- a/src/main/java/uk/ac/cam/cl/dtg/segue/api/managers/NotificationPicker.java +++ b/src/main/java/uk/ac/cam/cl/dtg/segue/api/managers/NotificationPicker.java @@ -68,7 +68,6 @@ public NotificationPicker(final GitContentManager contentManager, @Named(CONTENT /** * getAvailableNotificationsForUser. - * * @param user to select notifications for. * @return the list of content to show to the user. * @throws ContentManagerException if something goes wrong looking up the content. @@ -100,6 +99,11 @@ public List getAvailableNotificationsForUser(final RegisteredUserDTO continue; } + if (notification.getStartDate() != null && Instant.now().isBefore(notification.getStartDate())) { + // skip showing this notification yet + continue; + } + String roleTag = user.getRole().name().toLowerCase(); if (null == c.getTags() || !c.getTags().contains(roleTag)) { // Skip irrelevant notifications