CriteriaNotationOptionalRole.php 883 B

123456789101112131415161718192021222324252627282930
  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\Service\Access\Utils;
  8. use App\Enum\Access\FunctionEnum;
  9. class CriteriaNotationOptionalRole implements OptionalsRolesInterface {
  10. public function __construct(
  11. private Utils $accessUtils,
  12. private AccessRepository $accessRepository
  13. )
  14. {
  15. }
  16. public function support(Access $access): bool
  17. {
  18. $isActiveTeacher = $this->accessRepository->hasGotFunctionAtThisDate($access, FunctionEnum::TEACHER(), new \DateTime('now'));
  19. return $isActiveTeacher && !$access->getOrganization()->getParameters()->getEditCriteriaNotationByAdminOnly();
  20. }
  21. public function getRole(): string
  22. {
  23. return 'ROLE_CRITERIANOTATION';
  24. }
  25. }