CriteriaNotationOptionalRole.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Access\OptionalsRoles;
  4. use App\Entity\Access\Access;
  5. use App\Repository\Access\AccessRepository;
  6. use App\Service\Access\OptionalsRolesInterface;
  7. use App\Enum\Access\FunctionEnum;
  8. class CriteriaNotationOptionalRole implements OptionalsRolesInterface {
  9. public function __construct(
  10. private readonly AccessRepository $accessRepository
  11. )
  12. {}
  13. /**
  14. * Return true if the given access is an active teacher and administration has not restricted criteria edition to
  15. * the admin users.
  16. *
  17. * @param Access $access
  18. * @return bool
  19. */
  20. public function support(Access $access): bool
  21. {
  22. $isActiveTeacher = $this->accessRepository->hasGotFunctionAtThisDate($access, FunctionEnum::TEACHER, new \DateTime('now'));
  23. return $isActiveTeacher && !$access->getOrganization()->getParameters()->getEditCriteriaNotationByAdminOnly();
  24. }
  25. public function getRole(): string
  26. {
  27. return 'ROLE_CRITERIANOTATION';
  28. }
  29. }