@@ -74,41 +74,42 @@ public function __construct(ITeamInvitationRepository $invitation_repository,
7474 */
7575 public function sendInvitation (array $ data , ITeamInvitationSender $ invitation_sender ){
7676
77- $ team_repository = $ this ->team_repository ;
78- $ invitation_factory = $ this ->invitation_factory ;
79- $ validator_factory = $ this ->validator_factory ;
80- $ member_repository = $ this ->member_repository ;
81- $ invitation_repository = $ this ->invitation_repository ;
8277
83- return $ this ->tx_manager ->transaction (function () use ($ data , $ invitation_repository , $ team_repository , $ invitation_factory , $ validator_factory , $ member_repository , $ invitation_sender ){
84- $ validator = $ validator_factory ->buildValidatorForTeamInvitation ($ data );
78+ return $ this ->tx_manager ->transaction (function () use ($ data , $ invitation_sender ){
79+ $ validator = $ this -> validator_factory ->buildValidatorForTeamInvitation ($ data );
8580 if ($ validator ->fails ()) {
8681 throw new EntityValidationException ($ validator ->messages ());
8782 }
8883
89- $ team = $ team_repository ->getById ((int )$ data ['team_id ' ]);
84+ $ team = $ this -> team_repository ->getById ((int )$ data ['team_id ' ]);
9085 if (!$ team ) throw new NotFoundEntityException ('Team ' ,sprintf ('id %s ' ,$ data ['team_id ' ]));
9186
9287 $ member = false ;
9388 //is a already selected ICLA/CCLA Member
9489 if (isset ($ data ['member_id ' ])){
95- $ member = $ member_repository ->getById ((int )$ data ['member_id ' ]);
90+ $ member = $ this -> member_repository ->getById ((int )$ data ['member_id ' ]);
9691 if (!$ member ) throw new NotFoundEntityException ('Member ' ,sprintf ('id %s ' ,$ data ['member_id ' ]));
9792 }
9893 else {
99- $ member = $ member_repository ->findByEmail (trim ($ data ['email ' ]));
94+ $ member = $ this -> member_repository ->findByEmail (trim ($ data ['email ' ]));
10095 if ($ member && !$ member ->hasSignedCLA ())
10196 throw new MemberNotSignedCCLAException ('This user has not yet signed the ICLA. Please ensure they have followed the appropriate steps outlined here: https://wiki.openstack.org/wiki/How_To_Contribute#Contributor_License_Agreement ' );
10297 }
10398
10499 if ($ member && ($ team ->isMember ($ member ) || $ team ->isInvite ($ member )))
105100 throw new TeamMemberAlreadyExistsException ('Member Already exists on Team! ' );
106101
107- $ invitation = $ invitation_factory ->buildInvitation (new InvitationDTO ($ data ['first_name ' ], $ data ['last_name ' ], $ data ['email ' ], $ team , $ member ));
102+ $ invitation = $ this ->invitation_factory ->buildInvitation (new InvitationDTO ($ data ['first_name ' ], $ data ['last_name ' ], $ data ['email ' ], $ team , $ member ));
103+ $ token = null ;
104+ if ($ invitation ->isInviteRegisteredAsUser ()){
105+ do {
106+ $ token = $ invitation ->generateConfirmationToken ();
107+ } while ($ this ->invitation_repository ->existsConfirmationToken ($ token ));
108+ }
108109
109- $ invitation_repository ->add ($ invitation );
110+ $ this -> invitation_repository ->add ($ invitation );
110111
111- $ invitation_sender ->sendInvitation ($ invitation );
112+ $ invitation_sender ->sendInvitation ($ invitation, $ token );
112113
113114 return $ invitation ;
114115
0 commit comments