src/Security/Api/Authorization/Voter/MedicalSurveillance/CaseEntityValidationVoter.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Security\Api\Authorization\Voter\MedicalSurveillance;
  3. use App\Helper\Api\Entity\RequestDataContainer;
  4. use App\Security\Api\Authorization\Voter\AbstractCrudValidationVoter;
  5. use App\Security\Api\Authorization\VoterAttribute\MedicalSurveillance\CaseEntityVoterAttribute;
  6. use App\Validator\Api\Data\CoreModule\OrgUnitDataValidator;
  7. use App\Validator\Api\Data\MedicalSurveillance\CaseEntityDataValidator;
  8. /**
  9.  * Validation voter.
  10.  *
  11.  * @package API
  12.  * @author fmt.hodzic
  13.  * @internal
  14.  */
  15. class CaseEntityValidationVoter extends AbstractCrudValidationVoter
  16. {
  17.     /**
  18.      * Organizational unit validator interface.
  19.      *
  20.      * @var OrgUnitDataValidator
  21.      */
  22.     private OrgUnitDataValidator $orgUnitDataValidator;
  23.     /**
  24.      * Constructor.
  25.      *
  26.      * @param CaseEntityDataValidator $validator The standard validator.
  27.      * @param OrgUnitDataValidator $orgUnitDataValidator The org unit validator.
  28.      */
  29.     public function __construct(CaseEntityDataValidator $validatorOrgUnitDataValidator $orgUnitDataValidator)
  30.     {
  31.         // prevent false-positive php:S1185
  32.         $this->validator $validator;
  33.         $this->orgUnitDataValidator $orgUnitDataValidator;
  34.         parent::__construct($validator);
  35.     }
  36.     /**
  37.      * Returns a list of supported attributes.
  38.      *
  39.      * @return array
  40.      * @noinspection PhpClassConstantAccessedViaChildClassInspection
  41.      */
  42.     protected function getSupportedAttributes(): array
  43.     {
  44.         return [
  45.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_CREATE),
  46.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_DELETE),
  47.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_LIST),
  48.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_READ),
  49.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_UPDATE),
  50.             CaseEntityVoterAttribute::getAttribute(
  51.                 CaseEntityVoterAttribute::METHOD_ID_UPDATE_ACTIVE_STATUS
  52.             ),
  53.             CaseEntityVoterAttribute::getAttribute(CaseEntityVoterAttribute::METHOD_ID_LIST_ORG_UNIT),
  54.         ];
  55.     }
  56.     /**
  57.      * Validation check.
  58.      *
  59.      * @param RequestDataContainer $subject The request data object to validate.
  60.      */
  61.     protected function listOrgUnit(RequestDataContainer $subject): void
  62.     {
  63.         $this->orgUnitDataValidator->validateInputList($subject->getInput());
  64.     }
  65. }