diff --git a/app/Jobs/PublishUserDeleted.php b/app/Jobs/PublishUserDeleted.php index 08a092f6..a38bfb11 100644 --- a/app/Jobs/PublishUserDeleted.php +++ b/app/Jobs/PublishUserDeleted.php @@ -1,6 +1,6 @@ user_id, $this->user_email)); + try { + $service->deleteExternalUserById($this->user_id); + } + catch (EntityNotFoundException $ex){ + Log::warning($ex); + } + catch (Exception $ex){ + Log::error($ex); + } } } diff --git a/app/Models/Foundation/Main/Member.php b/app/Models/Foundation/Main/Member.php index eee75271..7073c7f2 100644 --- a/app/Models/Foundation/Main/Member.php +++ b/app/Models/Foundation/Main/Member.php @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. **/ - use App\Models\Foundation\Main\IGroup; use models\summit\SummitMetric; use Illuminate\Support\Facades\App; @@ -38,7 +37,6 @@ use models\summit\SummitRoomReservation; use models\summit\SummitTrackChair; use models\utils\SilverstripeBaseModel; use Doctrine\ORM\Mapping AS ORM; - /** * @ORM\Table(name="`Member`") * @ORM\Entity(repositoryClass="App\Repositories\Summit\DoctrineMemberRepository") diff --git a/app/Services/Model/IMemberService.php b/app/Services/Model/IMemberService.php index 5cf08519..cb829bf0 100644 --- a/app/Services/Model/IMemberService.php +++ b/app/Services/Model/IMemberService.php @@ -66,6 +66,12 @@ interface IMemberService */ public function registerExternalUserById($user_external_id):Member; + /** + * @param mixed $user_external_id + * @throws EntityNotFoundException + */ + public function deleteExternalUserById($user_external_id):void; + /** * @param Member $member * @param array $groups diff --git a/app/Services/Model/Imp/MemberService.php b/app/Services/Model/Imp/MemberService.php index 5a7bff23..415a240a 100644 --- a/app/Services/Model/Imp/MemberService.php +++ b/app/Services/Model/Imp/MemberService.php @@ -370,6 +370,23 @@ final class MemberService }); } + /** + * @param mixed $user_external_id + * @throws EntityNotFoundException + */ + public function deleteExternalUserById($user_external_id): void + { + $this->tx_service->transaction(function () use ($user_external_id) { + Log::debug(sprintf("MemberService::deleteExternalUserById trying to get user by external id %s", $user_external_id)); + $member = $this->member_repository->getByExternalIdExclusiveLock(intval($user_external_id)); + // if we dont registered yet a member with that external id try to get by email + if(is_null($member)) { + throw new EntityNotFoundException(sprintf("Member not found (%s)", $user_external_id)); + } + Log::debug(sprintf("MemberService::deleteExternalUserById deleting user %s (%s)", $member->getId(), $member->getEmail())); + $this->member_repository->delete($member); + }); + } /** * @param Member $member * @param array $groups @@ -575,4 +592,5 @@ final class MemberService }); } + } \ No newline at end of file