public MemberRequest updateMemberRequest(long userId, long memberRequestId, int status)
      throws Exception {

    MemberRequest memberRequest = memberRequestPersistence.findByPrimaryKey(memberRequestId);

    validate(memberRequest, userId);

    memberRequest.setModifiedDate(new Date());
    memberRequest.setStatus(status);

    memberRequestPersistence.update(memberRequest, false);

    if (status == InviteMembersConstants.STATUS_ACCEPTED) {
      userLocalService.addGroupUsers(
          memberRequest.getGroupId(), new long[] {memberRequest.getReceiverUserId()});

      if (memberRequest.getInvitedRoleId() > 0) {
        userGroupRoleLocalService.addUserGroupRoles(
            new long[] {memberRequest.getReceiverUserId()},
            memberRequest.getGroupId(),
            memberRequest.getInvitedRoleId());
      }

      if (memberRequest.getInvitedTeamId() > 0) {
        userLocalService.addTeamUsers(
            memberRequest.getInvitedTeamId(), new long[] {memberRequest.getReceiverUserId()});
      }
    }

    return memberRequest;
  }