public ModelAndView getEditPropertiesView()

in teamcity-invitations-plugin-server/src/main/java/org/jetbrains/teamcity/invitations/JoinProjectInvitationType.java [60:94]


    public ModelAndView getEditPropertiesView(@NotNull SUser user, @NotNull SProject project, @Nullable InvitationImpl invitation) {
        ModelAndView modelAndView = new ModelAndView(core.getPluginResourcesPath("joinProjectInvitationProperties.jsp"));
        modelAndView.getModel().put("name", invitation == null ? getDescription() : invitation.getName());

        List<Role> availableRoles = getAvailableRoles(user, project);
        modelAndView.getModel().put("roles", availableRoles);

        List<SUserGroup> availableGroups = getAvailableGroups(user, project);
        modelAndView.getModel().put("groups", availableGroups);

        modelAndView.getModel().put("multiuser", invitation == null ? "true" : invitation.multi);

        String preselectedRole = null;
        String preselectedGroup = null;

        if (invitation != null) {
            preselectedGroup = invitation.groupKey;
            preselectedRole = invitation.roleId;
        } else {
            preselectedRole = availableRoles.stream()
                    .filter(role -> role.getPermissions().contains(Permission.RUN_BUILD))
                    .sorted(Comparator.comparing(role -> role.getPermissions().toList().size()))
                    .findFirst()
                    .map(Role::getId)
                    .orElse(null);
            if (preselectedRole == null) {
                preselectedGroup = availableGroups.stream().findFirst().map(SUserGroup::getKey).orElse(null);
            }
        }

        modelAndView.getModel().put("roleId", preselectedRole);
        modelAndView.getModel().put("groupKey", preselectedGroup);
        modelAndView.getModel().put("welcomeText", invitation == null ? user.getDescriptiveName() + " invites you to join the " + project.getFullName() + " project" : invitation.welcomeText);
        return modelAndView;
    }