EntityUtils.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Utils;
  4. use App\Attribute\BillingSettingDefaultValue;
  5. use App\Attribute\OrganizationDefaultValue;
  6. use App\Entity\Access\Access;
  7. use ReflectionClass;
  8. use ReflectionException;
  9. /**
  10. * Class EntityUtils : Gestion des valeurs par défauts devant être présentes dans les entités.
  11. * @package App\Service\Utils
  12. */
  13. class EntityUtils
  14. {
  15. /**
  16. * @throws ReflectionException
  17. */
  18. public function defaultValueSettersByAccess(mixed $entity, Access $access): void
  19. {
  20. $this->organizationDefaultValue($entity, $access);
  21. $this->billingSettingDefaultValueDefaultValue($entity, $access);
  22. }
  23. /**
  24. * @param mixed $entity
  25. * @param Access $access
  26. * @throws ReflectionException
  27. */
  28. protected function organizationDefaultValue(mixed $entity, Access $access): void
  29. {
  30. $reflection = new ReflectionClass($entity::class);
  31. $organizationFaultValue = $reflection->getAttributes(OrganizationDefaultValue::class)[0] ?? null;
  32. $fieldName = $organizationFaultValue?->getArguments()['fieldName'] ?? null;
  33. if($fieldName){
  34. $entity->{sprintf('set%s', ucfirst($fieldName))}(...[$access->getOrganization()]);
  35. }
  36. }
  37. /**
  38. * @param mixed $entity
  39. * @param Access $access
  40. * @throws ReflectionException
  41. */
  42. protected function billingSettingDefaultValueDefaultValue(mixed $entity, Access $access): void
  43. {
  44. $reflection = new ReflectionClass($entity::class);
  45. $billingSettingDefaultValueDefault = $reflection->getAttributes(BillingSettingDefaultValue::class)[0] ?? null;
  46. $fieldName = $billingSettingDefaultValueDefault?->getArguments()['fieldName'] ?? null;
  47. if($fieldName){
  48. $entity->{sprintf('set%s', ucfirst($fieldName))}(...[$access->getOrganization()?->getBillingSetting()]);
  49. }
  50. }
  51. }