/** * Edit private message page. * * @param id {@link PrivateMessage} id * @return private message form view and populated form dto * @throws NotFoundException when message not found */ @RequestMapping(value = "/pm/drafts/{pmId}/edit", method = RequestMethod.GET) public ModelAndView editDraftPage(@PathVariable(PM_ID) Long id) throws NotFoundException { PrivateMessage pm = pmService.get(id); if (!pm.getStatus().equals(PrivateMessageStatus.DRAFT)) { // todo: 404? we need something more meaninful here throw new NotFoundException("Edit allowed only for draft messages."); } return new ModelAndView(PM_FORM).addObject(DTO, PrivateMessageDto.getFullPmDtoFor(pm)); }
/** * Checks if the private message should be marked as read. * The follwing conditions are checked: * <p>1. Current user is the recepient * <p>2. Message is not read already * <p>3. Message is not a draft * * @param pm private messag to be tested * @return if message should be marked as read */ private boolean ifMessageShouldBeMarkedAsRead(PrivateMessage pm) { return currentUserIsAuthor(userService.getCurrentUser(), pm) && !pm.isRead() && !pm.getStatus().equals(PrivateMessageStatus.DRAFT); }
private boolean hasCurrentUserAccessToPM(PrivateMessage privateMessage) throws NotFoundException { JCUser currentUser = userService.getCurrentUser(); PrivateMessageStatus messageStatus = privateMessage.getStatus(); if (currentUser.equals(privateMessage.getUserFrom()) && (messageStatus.equals(PrivateMessageStatus.DELETED_FROM_OUTBOX))) { return false; } return !(currentUserIsAuthor(currentUser, privateMessage) && (messageStatus.equals(PrivateMessageStatus.DELETED_FROM_INBOX))); }
switch (message.getStatus()) { case DRAFT: this.getDao().delete(message);