Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------
- // controllers/InvitationController
- //-----------------
- @RequestMapping(value = "/invite/{link}", method = RequestMethod.GET)
- public ModelAndView acceptingInvitation(@PathVariable String link) {
- User user = getLoggedUser();
- Result result = invitationService.tryAcceptInvitation(link, user);
- ModelAndView view;
- if (result.getType() != ResultType.ERROR) {
- view = new ModelAndView(new RedirectView("/tasks/" + (Long)result.getObject(), true));
- view.addObject("permissionMessage", result.getMessage());
- }
- else {
- view = new ModelAndView("/home/index");
- view.addObject("invalidLinkMessage", result.getMessage());
- }
- return view;
- }
- //---------------------
- // service/implementations/InvitationService
- //--------------------
- @Override
- public Result tryAcceptInvitation(String link, User user) {
- if (this.isInvitationValid(link)) {
- Invitation invitation = this.getInvitationByLink(link);
- Permission existingPermission = permissionService.findPermissionByUserAndTask(user, invitation.getTask());
- if (existingPermission == null) {
- Permission newPermission = new Permission();
- newPermission.setId(new PermissionKey(user, invitation.getTask()));
- newPermission.setPermission(invitation.getPermission());
- permissionService.addPermission(newPermission);
- return new Result(ResultType.SUCCESS, "Permission to the task has been granted!", invitation.getTask().getId());
- } else if (existingPermission.getPermission() == invitation.getPermission()) {
- return new Result(ResultType.ENTITY_EXISTS, "You already have permission to the note!", invitation.getTask().getId());
- } else {
- existingPermission.setPermission(invitation.getPermission());
- permissionService.updatePermission(existingPermission);
- return new Result(ResultType.ENTITY_UPDATED,"Permission to the note has been changed!", invitation.getTask().getId());
- }
- } else {
- return new Result(ResultType.ERROR, "Invalid link!");
- }
- }
- // ----------------------
- // updatePermission() potom volá metodu z repozitáře která provede manuální update (ačkoliv možná by na to stačil opět jen save())
- // ----------------------
- @Modifying
- @Transactional
- @Query("UPDATE Permission p SET p.permission = :permission WHERE p.id.user.id = :userId and p.id.task.id = :taskId")
- void updateByUserAndTaskId(@Param("userId") long userId, @Param("taskId") long taskId, @Param("permission") UserRight permission);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement