AdminAccessUtils.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Access;
  4. use App\ApiResources\Access\AdminAccess;
  5. use App\Entity\Organization\Organization;
  6. use App\Service\Core\ContactPointUtils;
  7. use App\Test\Service\Access\AdminAccessUtilsTest;
  8. /**
  9. * Class AdminAccessUtils : Service contenant les manipulations associés à la ressource AdminAccess
  10. * @package App\Service\Access
  11. */
  12. class AdminAccessUtils
  13. {
  14. public function __construct(
  15. private Utils $accessUtils,
  16. private ContactPointUtils $contactPointUtils
  17. )
  18. { }
  19. /**
  20. * Renvoie l'objet AdminAccess initialisé par rapport à l'organization passée en paramètre
  21. *
  22. * @param Organization $organization
  23. * @return AdminAccess|null
  24. * @throws \Exception
  25. * @see AdminAccessUtilsTest::testGetAdminAccess()
  26. */
  27. public function getAdminAccess(Organization $organization): ?AdminAccess{
  28. $administrator = $this->accessUtils->findAdminFor($organization);
  29. if(!$administrator) return null;
  30. $contactPoint = $this->contactPointUtils->getPersonContactPointPrincipal($administrator);
  31. if(!$contactPoint) return null;
  32. $adminAccess = new AdminAccess();
  33. $adminAccess
  34. ->setId($administrator->getId())
  35. ->setUsername($administrator->getPerson()->getUsername())
  36. ->setEmail($contactPoint->getEmail())
  37. ;
  38. return $adminAccess;
  39. }
  40. }