@@ -329,110 +329,120 @@ public function registerExternalUser(ExternalUserDTO $userDTO): Member
329
329
}
330
330
331
331
/**
332
- * @param $user_external_id
332
+ * @param array $user_data
333
333
* @return Member
334
334
* @throws \Exception
335
335
*/
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
+ }
365
359
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
380
376
(
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
407
386
(
408
387
sprintf
409
388
(
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 " ,
411
390
$ member ->getEmail (),
412
391
$ member ->getFirstName (),
413
- $ former_speaker ->getId ()
392
+ $ presentation ->getId (),
393
+ $ former_speaker ->getId (),
394
+ $ speaker ->getId ()
414
395
)
415
396
);
397
+ $ presentation ->removeSpeaker ($ former_speaker );
398
+ $ presentation ->addSpeaker ($ speaker );
416
399
}
417
400
Log::debug
418
401
(
419
402
sprintf
420
403
(
421
- "MemberService::registerExternalUserById setting Member %s (%s) to speaker %s " ,
404
+ "MemberService::registerExternalUserByPayload Member %s (%s) former speaker %s will be deleted " ,
422
405
$ member ->getEmail (),
423
406
$ member ->getFirstName (),
424
- $ speaker ->getId ()
407
+ $ former_speaker ->getId ()
425
408
)
426
409
);
427
- // after this , former speaker will be deleted
428
- $ speaker ->setMember ($ member );
429
410
}
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
+ }
431
425
432
- if ($ is_new )
433
- Event::dispatch (new NewMember ($ member ->getId ()));
426
+ if ($ is_new )
427
+ Event::dispatch (new NewMember ($ member ->getId ()));
434
428
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 );
436
446
});
437
447
438
448
Event::dispatch (new MemberDataUpdatedExternally ($ member ->getId ()));
0 commit comments