Search in sources :

Example 26 with Announcement

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;
}
Also used : DTAnnouncementUser(ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementUser) User(ca.corefacility.bioinformatics.irida.model.user.User) Announcement(ca.corefacility.bioinformatics.irida.model.announcements.Announcement) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 27 with Announcement

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";
}
Also used : Announcement(ca.corefacility.bioinformatics.irida.model.announcements.Announcement) IOException(java.io.IOException) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 28 with Announcement

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;
}
Also used : Announcement(ca.corefacility.bioinformatics.irida.model.announcements.Announcement) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 29 with Announcement

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);
}
Also used : PathVariable(org.springframework.web.bind.annotation.PathVariable) RequestParam(org.springframework.web.bind.annotation.RequestParam) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) Controller(org.springframework.stereotype.Controller) Announcement(ca.corefacility.bioinformatics.irida.model.announcements.Announcement) Model(org.springframework.ui.Model) DataTablesResponseModel(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.models.DataTablesResponseModel) AnnouncementSpecification(ca.corefacility.bioinformatics.irida.repositories.specification.AnnouncementSpecification) DataTablesResponse(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.DataTablesResponse) Logger(org.slf4j.Logger) DTAnnouncementUser(ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementUser) DataTablesRequest(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.config.DataTablesRequest) PageRequest(org.springframework.data.domain.PageRequest) RequestMethod(org.springframework.web.bind.annotation.RequestMethod) IOException(java.io.IOException) DTAnnouncementAdmin(ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementAdmin) Page(org.springframework.data.domain.Page) ResponseBody(org.springframework.web.bind.annotation.ResponseBody) Collectors(java.util.stream.Collectors) UserSpecification(ca.corefacility.bioinformatics.irida.repositories.specification.UserSpecification) List(java.util.List) Principal(java.security.Principal) UserService(ca.corefacility.bioinformatics.irida.service.user.UserService) Optional(java.util.Optional) AnnouncementUserJoin(ca.corefacility.bioinformatics.irida.model.announcements.AnnouncementUserJoin) User(ca.corefacility.bioinformatics.irida.model.user.User) AnnouncementService(ca.corefacility.bioinformatics.irida.service.AnnouncementService) Collections(java.util.Collections) DataTablesParams(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.DataTablesParams) PageRequest(org.springframework.data.domain.PageRequest) DTAnnouncementUser(ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementUser) User(ca.corefacility.bioinformatics.irida.model.user.User) Announcement(ca.corefacility.bioinformatics.irida.model.announcements.Announcement) DataTablesResponseModel(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.models.DataTablesResponseModel) DTAnnouncementUser(ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementUser) DataTablesResponse(ca.corefacility.bioinformatics.irida.ria.web.components.datatables.DataTablesResponse) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Aggregations

Announcement (ca.corefacility.bioinformatics.irida.model.announcements.Announcement)29 Test (org.junit.Test)20 WithMockUser (org.springframework.security.test.context.support.WithMockUser)17 User (ca.corefacility.bioinformatics.irida.model.user.User)15 Authentication (org.springframework.security.core.Authentication)9 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)7 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)6 PageRequest (org.springframework.data.domain.PageRequest)5 DTAnnouncementUser (ca.corefacility.bioinformatics.irida.ria.web.models.datatables.DTAnnouncementUser)4 IOException (java.io.IOException)3 Sort (org.springframework.data.domain.Sort)3 ExtendedModelMap (org.springframework.ui.ExtendedModelMap)3 EntityExistsException (ca.corefacility.bioinformatics.irida.exceptions.EntityExistsException)2 AnnouncementUserJoin (ca.corefacility.bioinformatics.irida.model.announcements.AnnouncementUserJoin)2 DataTablesResponse (ca.corefacility.bioinformatics.irida.ria.web.components.datatables.DataTablesResponse)2 DataTablesResponseModel (ca.corefacility.bioinformatics.irida.ria.web.components.datatables.models.DataTablesResponseModel)2 AnnouncementService (ca.corefacility.bioinformatics.irida.service.AnnouncementService)2 UserService (ca.corefacility.bioinformatics.irida.service.user.UserService)2 Principal (java.security.Principal)2 AccessDeniedException (org.springframework.security.access.AccessDeniedException)2