Utils.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Network;
  4. use App\Entity\Network\NetworkOrganization;
  5. use App\Entity\Organization\Organization;
  6. use App\Enum\Network\NetworkEnum;
  7. use App\Service\Utils\DatesUtils;
  8. use App\Tests\Service\Network\UtilsTest;
  9. /**
  10. * Class Utils : service rassemblant des fonctions d'aides pour les questions se rapportant au réseau
  11. * @package App\Service\Network
  12. */
  13. class Utils
  14. {
  15. // TODO: Renommer en NetworkUtils
  16. /**
  17. * Test si l'organisation appartient au réseau de la CMF
  18. * @param Organization $organization
  19. * @return bool
  20. * @see UtilsTest::testIsCmf()
  21. */
  22. public function isCMF(Organization $organization): bool {
  23. return $this->isOrganizationBelongToTheNetwork($organization, NetworkEnum::CMF());
  24. }
  25. /**
  26. * Test si l'organisation appartient au réseau de la CMF Actuellement
  27. * @param Organization $organization
  28. * @return bool
  29. * @see UtilsTest::testIsCmfAndActiveNow()
  30. */
  31. public function isCMFAndActiveNow(Organization $organization): bool {
  32. return $this->isOrganizationBelongToTheNetwork($organization, NetworkEnum::CMF(), true);
  33. }
  34. /**
  35. * Test si l'organisation appartient à un réseau
  36. * @param Organization $organization
  37. * @param NetworkEnum $network id du réseau
  38. * @param bool $activeNow si true, on test en plus l'activité aujourd'hui
  39. * @return boolean
  40. * @see UtilsTest::testIsOrganizationBelongToTheNetwork()
  41. */
  42. public function isOrganizationBelongToTheNetwork(Organization $organization, NetworkEnum $network, ?bool $activeNow = false): bool {
  43. $networksOrganizations = $organization->getNetworkOrganizations();
  44. /** @var NetworkOrganization $networksOrganization */
  45. foreach ($networksOrganizations as $networksOrganization) {
  46. if ($networksOrganization->getNetwork()->getId() === $network->getValue()) {
  47. return $activeNow ? $this->doesNetworkOrganizationIsActiveNow($networksOrganization) : true;
  48. }
  49. }
  50. return false;
  51. }
  52. /**
  53. * @param NetworkOrganization $networksOrganization
  54. * @return bool
  55. * @throws \Exception
  56. */
  57. public function doesNetworkOrganizationIsActiveNow(NetworkOrganization $networksOrganization): bool{
  58. return DatesUtils::isIntervalIsValidNow($networksOrganization->getStartDate(), $networksOrganization->getEndDate());
  59. }
  60. }