use of ca.corefacility.bioinformatics.irida.model.announcements.Announcement in project irida by phac-nml.
the class AnnouncementsController method markAnnouncementRead.
/**
* Marks the announcement as read by the current user
*
* @param aID
* ID of the {@link Announcement} to be marked
* @param principal
* The current user
* @return The fragment for viewing announcements in the dashboard
*/
@RequestMapping(value = "/read/{aID}", method = RequestMethod.POST)
public String markAnnouncementRead(@PathVariable Long aID, Principal principal) {
User user = userService.getUserByUsername(principal.getName());
Announcement announcement = announcementService.read(aID);
announcementService.markAnnouncementAsReadByUser(announcement, user);
return ANNOUNCEMENT_VIEW;
}
use of ca.corefacility.bioinformatics.irida.model.announcements.Announcement in project irida by phac-nml.
the class AnnouncementsController method submitUpdatedAnnouncement.
/**
* Updates an existing announcement object in the database
*
* @param announcementID
* The ID of the announcement to be updated
* @param message
* The content of the updated announcement
* @param model
* The model for the view
* @return A redirect to the announcement control center page
*/
@RequestMapping(value = "/{announcementID}/details", method = RequestMethod.POST)
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String submitUpdatedAnnouncement(@PathVariable long announcementID, @RequestParam(required = false) String message, Model model) {
Announcement announcement = announcementService.read(announcementID);
announcement.setMessage(message);
try {
announcementService.update(announcement);
} catch (Exception e) {
model.addAttribute("errors", "Announcement was not updated successfully");
logger.error("Announcement could not be updated or saved to the database.", e.getMessage());
}
return "redirect:/announcements/admin";
}
use of ca.corefacility.bioinformatics.irida.model.announcements.Announcement in project irida by phac-nml.
the class AnnouncementsController method getAnnouncementDetailsPage.
/**
* Get the details page for a particular announcement
*
* @param announcementID
* The announcement whose data will be displayed
* @param model
* The model for the view
* @return Returns the detail page for the announcement
*/
@RequestMapping(value = "/{announcementID}/details", method = RequestMethod.GET)
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String getAnnouncementDetailsPage(@PathVariable long announcementID, Model model) {
Announcement announcement = announcementService.read(announcementID);
long numberOfReads = announcementService.countReadsForOneAnnouncement(announcement);
long totalUsers = userService.count();
logger.trace("Announcement " + announcement.getId() + ": " + announcement.getMessage());
model.addAttribute("announcement", announcement);
model.addAttribute("numReads", numberOfReads);
model.addAttribute("numTotal", totalUsers);
return ANNOUNCEMENT_DETAILS;
}
use of ca.corefacility.bioinformatics.irida.model.announcements.Announcement in project irida by phac-nml.
the class AnnouncementsController method getUserAnnouncementInfoTable.
/**
* Get user read status for current announcement
* @param announcementID {@link Long} identifier for the {@link Announcement}
* @param params {@link DataTablesParams} parameters for current DataTable
* @return {@link DataTablesResponse} containing the list of users.
*/
@RequestMapping(value = "/{announcementID}/details/ajax/list", method = RequestMethod.GET)
@PreAuthorize("hasRole('ROLE_ADMIN')")
@ResponseBody
public DataTablesResponse getUserAnnouncementInfoTable(@PathVariable Long announcementID, @DataTablesRequest final DataTablesParams params) {
final Announcement currentAnnouncement = announcementService.read(announcementID);
final Page<User> page = userService.search(UserSpecification.searchUser(params.getSearchValue()), new PageRequest(params.getCurrentPage(), params.getLength(), params.getSort()));
final List<DataTablesResponseModel> announcementUsers = page.getContent().stream().map(user -> new DTAnnouncementUser(user, userHasRead(user, currentAnnouncement))).collect(Collectors.toList());
return new DataTablesResponse(params, page, announcementUsers);
}
Aggregations