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;
}