@@ -329,110 +329,120 @@ public function registerExternalUser(ExternalUserDTO $userDTO): Member
329329 }
330330
331331 /**
332- * @param $user_external_id
332+ * @param array $user_data
333333 * @return Member
334334 * @throws \Exception
335335 */
336- public function registerExternalUserById ($ user_external_id ): Member
337- {
338- $ member = $ this ->tx_service ->transaction (function () use ($ user_external_id ) {
339- // get external user from IDP
340- $ user_data = $ this ->user_ext_api ->getUserById ($ user_external_id );
341- if (is_null ($ user_data ) || !isset ($ user_data ['email ' ])){
342- Log::warning (sprintf ("MemberService::registerExternalUserById user_external_id %s does not exists. " , $ user_external_id ));
343- throw new EntityNotFoundException (sprintf ("MemberService::registerExternalUserById user_external_id %s does not exists. " , $ user_external_id ));
344- }
345- $ email = trim ($ user_data ['email ' ]);
346- // first by external id due email could be updated
347- Log::debug (sprintf ("MemberService::registerExternalUserById trying to get user by external id %s " , $ user_external_id ));
348- $ member = $ this ->member_repository ->getByExternalIdExclusiveLock (intval ($ user_external_id ));
349- // if we dont registered yet a member with that external id try to get by email
350- if (is_null ($ member )) {
351- Log::debug (sprintf ("MemberService::registerExternalUserById trying to get user by email %s " , $ email ));
352- $ member = $ this ->member_repository ->getByEmail ($ email );
353- }
354- $ is_new = false ;
355- if (is_null ($ member )) {
356- Log::debug (sprintf ("MemberService::registerExternalUserById %s does not exists , creating it ... " , $ email ));
357- $ member = MemberFactory::createFromExternalProfile ($ user_external_id , $ user_data );
358- $ this ->member_repository ->add ($ member , true );
359- $ is_new = true ;
360- }
361- else {
362- Log::debug (sprintf ("MemberService::registerExternalUserById %s already exists " , $ email ));
363- $ member = MemberFactory::populateFromExternalProfile ($ member , $ user_external_id , $ user_data );
364- }
336+ public function registerExternalUserByPayload (array $ user_data ):Member {
337+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload user_data %s " , json_encode ($ user_data )));
338+ $ email = trim ($ user_data ['email ' ]);
339+ $ user_external_id = $ user_data ['id ' ];
340+ // first by external id due email could be updated
341+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload trying to get user by external id %s " , $ user_external_id ));
342+ $ member = $ this ->member_repository ->getByExternalIdExclusiveLock (intval ($ user_external_id ));
343+ // if we dont registered yet a member with that external id try to get by email
344+ if (is_null ($ member )) {
345+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload trying to get user by email %s " , $ email ));
346+ $ member = $ this ->member_repository ->getByEmail ($ email );
347+ }
348+ $ is_new = false ;
349+ if (is_null ($ member )) {
350+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload %s does not exists , creating it ... " , $ email ));
351+ $ member = MemberFactory::createFromExternalProfile ($ user_external_id , $ user_data );
352+ $ this ->member_repository ->add ($ member , true );
353+ $ is_new = true ;
354+ }
355+ else {
356+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload %s already exists " , $ email ));
357+ $ member = MemberFactory::populateFromExternalProfile ($ member , $ user_external_id , $ user_data );
358+ }
365359
366- $ this ->synchronizeGroups ($ member , $ user_data ['groups ' ]);
367-
368- // check speaker registration request by email and no member set
369- Log::debug (sprintf ("MemberService::registerExternalUserById trying to get former registration request by email %s " , $ email ));
370- $ request = $ this ->speaker_registration_request_repository ->getByEmail ($ email );
371- if (!is_null ($ request ) && $ request ->hasSpeaker ()){
372- Log::debug (sprintf ("MemberService::registerExternalUserById got former registration request by email %s " , $ email ));
373- $ speaker = $ request ->getSpeaker ();
374- if (!is_null ($ speaker ))
375- if (!$ speaker ->hasMember ()) {
376- if ($ member ->hasSpeaker ()){
377- // member has a former speaker
378- $ former_speaker = $ member ->getSpeaker ();
379- Log::debug
360+ $ this ->synchronizeGroups ($ member , $ user_data ['groups ' ]);
361+
362+ // check speaker registration request by email and no member set
363+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload trying to get former registration request by email %s " , $ email ));
364+ $ request = $ this ->speaker_registration_request_repository ->getByEmail ($ email );
365+ if (!is_null ($ request ) && $ request ->hasSpeaker ()){
366+ Log::debug (sprintf ("MemberService::registerExternalUserByPayload got former registration request by email %s " , $ email ));
367+ $ speaker = $ request ->getSpeaker ();
368+ if (!is_null ($ speaker ))
369+ if (!$ speaker ->hasMember ()) {
370+ if ($ member ->hasSpeaker ()){
371+ // member has a former speaker
372+ $ former_speaker = $ member ->getSpeaker ();
373+ Log::debug
374+ (
375+ sprintf
380376 (
381- sprintf
382- (
383- "MemberService::registerExternalUserById Member %s (%s) has a former speaker profile %s " ,
384- $ member ->getEmail (),
385- $ member ->getFirstName (),
386- $ former_speaker ->getId (),
387- )
388- );
389- foreach ($ former_speaker ->getAllPresentations () as $ presentation ){
390- if (!$ presentation instanceof Presentation) continue ;
391- Log:debug
392- (
393- sprintf
394- (
395- "MemberService::registerExternalUserById Member %s (%s) moving presentation %s from speaker %s to speaker %s " ,
396- $ member ->getEmail (),
397- $ member ->getFirstName (),
398- $ presentation ->getId (),
399- $ former_speaker ->getId (),
400- $ speaker ->getId ()
401- )
402- );
403- $ presentation ->removeSpeaker ($ former_speaker );
404- $ presentation ->addSpeaker ($ speaker );
405- }
406- Log::debug
377+ "MemberService::registerExternalUserByPayload Member %s (%s) has a former speaker profile %s " ,
378+ $ member ->getEmail (),
379+ $ member ->getFirstName (),
380+ $ former_speaker ->getId (),
381+ )
382+ );
383+ foreach ($ former_speaker ->getAllPresentations () as $ presentation ){
384+ if (!$ presentation instanceof Presentation) continue ;
385+ Log:debug
407386 (
408387 sprintf
409388 (
410- "MemberService::registerExternalUserById Member %s (%s) former speaker %s will be deleted " ,
389+ "MemberService::registerExternalUserByPayload Member %s (%s) moving presentation %s from speaker %s to speaker %s " ,
411390 $ member ->getEmail (),
412391 $ member ->getFirstName (),
413- $ former_speaker ->getId ()
392+ $ presentation ->getId (),
393+ $ former_speaker ->getId (),
394+ $ speaker ->getId ()
414395 )
415396 );
397+ $ presentation ->removeSpeaker ($ former_speaker );
398+ $ presentation ->addSpeaker ($ speaker );
416399 }
417400 Log::debug
418401 (
419402 sprintf
420403 (
421- "MemberService::registerExternalUserById setting Member %s (%s) to speaker %s " ,
404+ "MemberService::registerExternalUserByPayload Member %s (%s) former speaker %s will be deleted " ,
422405 $ member ->getEmail (),
423406 $ member ->getFirstName (),
424- $ speaker ->getId ()
407+ $ former_speaker ->getId ()
425408 )
426409 );
427- // after this , former speaker will be deleted
428- $ speaker ->setMember ($ member );
429410 }
430- }
411+ Log::debug
412+ (
413+ sprintf
414+ (
415+ "MemberService::registerExternalUserByPayload setting Member %s (%s) to speaker %s " ,
416+ $ member ->getEmail (),
417+ $ member ->getFirstName (),
418+ $ speaker ->getId ()
419+ )
420+ );
421+ // after this , former speaker will be deleted
422+ $ speaker ->setMember ($ member );
423+ }
424+ }
431425
432- if ($ is_new )
433- Event::dispatch (new NewMember ($ member ->getId ()));
426+ if ($ is_new )
427+ Event::dispatch (new NewMember ($ member ->getId ()));
434428
435- return $ member ;
429+ return $ member ;
430+ }
431+ /**
432+ * @param $user_external_id
433+ * @return Member
434+ * @throws \Exception
435+ */
436+ public function registerExternalUserById ($ user_external_id ): Member
437+ {
438+ $ member = $ this ->tx_service ->transaction (function () use ($ user_external_id ) {
439+ // get external user from IDP
440+ $ user_data = $ this ->user_ext_api ->getUserById ($ user_external_id );
441+ if (is_null ($ user_data ) || !isset ($ user_data ['email ' ])){
442+ Log::warning (sprintf ("MemberService::registerExternalUserById user_external_id %s does not exists. " , $ user_external_id ));
443+ throw new EntityNotFoundException (sprintf ("MemberService::registerExternalUserById user_external_id %s does not exists. " , $ user_external_id ));
444+ }
445+ return $ this ->registerExternalUserByPayload ($ user_data );
436446 });
437447
438448 Event::dispatch (new MemberDataUpdatedExternally ($ member ->getId ()));
0 commit comments