2424import pl .edu .icm .unity .engine .api .GroupsManagement ;
2525import pl .edu .icm .unity .engine .api .InvitationManagement ;
2626import pl .edu .icm .unity .engine .api .RegistrationsManagement ;
27- import pl .edu .icm .unity .engine .api .bulk .BulkGroupQueryService ;
28- import pl .edu .icm .unity .engine .api .bulk .GroupMembershipData ;
29- import pl .edu .icm .unity .engine .api .bulk .EntityInGroupData ;
3027import pl .edu .icm .unity .engine .api .endpoint .SharedEndpointManagement ;
3128import pl .edu .icm .unity .engine .api .project .ProjectInvitation ;
3229import pl .edu .icm .unity .engine .api .project .ProjectInvitationParam ;
3330import pl .edu .icm .unity .engine .api .project .ProjectInvitationsManagement ;
3431import pl .edu .icm .unity .engine .api .registration .PublicRegistrationURLSupport ;
3532import pl .edu .icm .unity .exceptions .EngineException ;
3633import pl .edu .icm .unity .stdext .identity .EmailIdentity ;
37- import pl .edu .icm .unity .stdext .utils .ContactEmailMetadataProvider ;
38- import pl .edu .icm .unity .types .basic .Attribute ;
3934import pl .edu .icm .unity .types .basic .EntityParam ;
4035import pl .edu .icm .unity .types .basic .GroupContents ;
4136import pl .edu .icm .unity .types .basic .GroupDelegationConfiguration ;
4237import pl .edu .icm .unity .types .basic .GroupMembership ;
43- import pl .edu .icm .unity .types .basic .Identity ;
4438import pl .edu .icm .unity .types .basic .IdentityParam ;
45- import pl .edu .icm .unity .types .basic .VerifiableElementBase ;
4639import pl .edu .icm .unity .types .confirmation .ConfirmationInfo ;
4740import pl .edu .icm .unity .types .registration .BaseForm ;
4841import pl .edu .icm .unity .types .registration .EnquiryForm ;
5649import pl .edu .icm .unity .types .registration .invite .PrefilledEntryMode ;
5750import pl .edu .icm .unity .types .registration .invite .RegistrationInvitationParam ;
5851
59- /**
60- * Implementation of {@link ProjectInvitationsManagement}
61- *
62- * @author P.Piernik
63- */
6452@ Component
6553@ Primary
6654public class ProjectInvitationsManagementImpl implements ProjectInvitationsManagement
@@ -71,37 +59,34 @@ public class ProjectInvitationsManagementImpl implements ProjectInvitationsManag
7159 private final SharedEndpointManagement sharedEndpointMan ;
7260 private final RegistrationsManagement registrationMan ;
7361 private final EnquiryManagement enquiryMan ;
74- private final BulkGroupQueryService bulkService ;
75- private final ProjectAttributeHelper attrHelper ;
7662 private final EntityManagement entityMan ;
63+ private final ExistingUserFinder existingUserFinder ;
7764
7865 public ProjectInvitationsManagementImpl (@ Qualifier ("insecure" ) InvitationManagement invitationMan ,
7966 @ Qualifier ("insecure" ) GroupsManagement groupMan ,
8067 @ Qualifier ("insecure" ) RegistrationsManagement registrationMan ,
8168 @ Qualifier ("insecure" ) EnquiryManagement enquiryMan ,
82- @ Qualifier ("insecure" ) BulkGroupQueryService bulkService ,
8369 @ Qualifier ("insecure" ) EntityManagement entityMan ,
84- ProjectAttributeHelper attrHelper ,
8570 SharedEndpointManagement sharedEndpointMan ,
86- ProjectAuthorizationManager authz )
71+ ProjectAuthorizationManager authz ,
72+ ExistingUserFinder existingUserFinder )
8773 {
8874 this .invitationMan = invitationMan ;
8975 this .groupMan = groupMan ;
9076 this .entityMan = entityMan ;
9177 this .sharedEndpointMan = sharedEndpointMan ;
9278 this .registrationMan = registrationMan ;
9379 this .enquiryMan = enquiryMan ;
94- this .bulkService = bulkService ;
95- this .attrHelper = attrHelper ;
9680 this .authz = authz ;
81+ this .existingUserFinder = existingUserFinder ;
9782 }
9883
9984 @ Override
10085 public String addInvitation (ProjectInvitationParam param ) throws EngineException
10186 {
10287 authz .assertManagerAuthorization (param .project );
10388
104- Long entity = getEntityByContactAddress (param .contactAddress );
89+ Long entity = existingUserFinder . getEntityIdByContactAddress (param .contactAddress );
10590 String code = null ;
10691 if (entity == null )
10792 {
@@ -123,45 +108,6 @@ private void assertNotMemberAlready(long entityId, String projectGroup) throws E
123108 throw new AlreadyMemberException ();
124109 }
125110
126- private Long getEntityByContactAddress (String contactAddress ) throws EngineException
127- {
128- GroupMembershipData bulkMembershipData = bulkService .getBulkMembershipData ("/" );
129- Map <Long , EntityInGroupData > members = bulkService .getMembershipInfo (bulkMembershipData );
130-
131- for (EntityInGroupData info : members .values ())
132- {
133- Identity emailId = info .entity .getIdentities ().stream ()
134- .filter (id -> id .getTypeId ().equals (EmailIdentity .ID )
135- && id .getValue ().equals (contactAddress ))
136- .findAny ().orElse (null );
137- if (emailId != null )
138- {
139- return info .entity .getId ();
140- }
141-
142- }
143-
144- return searchEntityByEmailAttr (members , contactAddress );
145- }
146-
147- private Long searchEntityByEmailAttr (Map <Long , EntityInGroupData > membersWithGroups , String contactAddress )
148- throws EngineException
149- {
150- for (EntityInGroupData info : membersWithGroups .values ())
151- {
152- VerifiableElementBase contactEmail = attrHelper .searchVerifiableAttributeValueByMeta (ContactEmailMetadataProvider .NAME ,
153- info .groupAttributesByName .values ().stream ().map (e -> (Attribute ) e )
154- .collect (Collectors .toList ()));
155- if (contactEmail != null && contactEmail .getValue () != null
156- && contactEmail .getValue ().equals (contactAddress ))
157- {
158- return info .entity .getId ();
159- }
160- }
161-
162- return null ;
163- }
164-
165111 private EnquiryInvitationParam getEnquiryInvitation (ProjectInvitationParam param , Long entityId )
166112 throws EngineException
167113 {
0 commit comments