public CreateNewProjectInvitationType()

in teamcity-invitations-plugin-server/src/main/java/org/jetbrains/teamcity/invitations/CreateNewProjectInvitationType.java [41:63]


    public CreateNewProjectInvitationType(@NotNull InvitationsStorage invitationsStorage,
                                          @NotNull TeamCityCoreFacade core,
                                          @NotNull EventDispatcher<ProjectsModelListener> events,
                                          @NotNull InvitationLandingProvider customLandingRegistry) {
        super(invitationsStorage, core, customLandingRegistry);
        this.core = core;
        events.addListener(new ProjectsModelListenerAdapter() {
            @Override
            public void projectCreated(@NotNull String projectId, @Nullable SUser user) {
                SProject created = core.findProjectByIntId(projectId);
                if (created != null && user != null) {
                    Optional<InvitationInProgress> processingInvitation = myInvitationInProgresses.stream().filter(i -> i.isOurProjectCreation(created, user)).findFirst();
                    if (processingInvitation.isPresent()) {
                        core.addRole(user, processingInvitation.get().invitation.getRole(), projectId);
                        processingInvitation.get().dispose();
                        myInvitationInProgresses.removeIf(i -> i.isOurProjectCreation(created, user));
                        invitationWorkflowFinished(processingInvitation.get().invitation);
                        Loggers.ACTIVITIES.info("User " + user.describe(false) + " creates " + created.describe(false) + " project using the invitation " + processingInvitation.get().invitation.describe(false) + "");
                    }
                }
            }
        });
    }