src/Domain/Whater/Model/WhaterOrganizationCode.php line 13

Open in your IDE?
  1. <?php
  2. namespace Whater\Domain\Whater\Model;
  3. use Ramsey\Uuid\Uuid;
  4. use Whater\Domain\Common\Exception\InvalidUUIDException;
  5. /**
  6. * Class WhaterOrganizationCode
  7. *
  8. * @package Whater\Domain\Whater\Model
  9. */
  10. class WhaterOrganizationCode
  11. {
  12. const EXTERNAL_SYSTEM_SINAC = "ES_SINAC";
  13. /**
  14. * @var string
  15. */
  16. private $uuid;
  17. /**
  18. * @var string
  19. */
  20. private $code;
  21. /**
  22. * @var string
  23. */
  24. private $externalSystem;
  25. /**
  26. * @var WhaterOrganization
  27. */
  28. private $whaterOrganization;
  29. /**
  30. * @var \DateTime
  31. */
  32. private $createdAt;
  33. /**
  34. * @param string $whaterOrganizationCodeId
  35. * @param string $name
  36. * @param string $details
  37. * @param string $slug
  38. * @param string $urlWeb
  39. */
  40. public function __construct(
  41. string $whaterOrganizationCodeId = null,
  42. WhaterOrganization $whaterOrganization,
  43. string $code,
  44. string $externalSystem = WhaterOrganizationCode::EXTERNAL_SYSTEM_SINAC
  45. ) {
  46. try {
  47. $this->uuid = Uuid::fromString($whaterOrganizationCodeId ?: Uuid::uuid4())->toString();
  48. } catch (\InvalidArgumentException $e) {
  49. throw new InvalidUUIDException();
  50. }
  51. $this->whaterOrganization = $whaterOrganization;
  52. $this->code = $code;
  53. $this->externalSystem = $externalSystem;
  54. $this->createdAt = new \DateTime();
  55. }
  56. /**
  57. * @return string
  58. */
  59. public function id(): string
  60. {
  61. return $this->uuid;
  62. }
  63. /**
  64. * @return WhaterOrganization
  65. */
  66. public function whaterOrganization(): WhaterOrganization
  67. {
  68. return $this->whaterOrganization;
  69. }
  70. /**
  71. * @return string
  72. */
  73. public function code(): string
  74. {
  75. return $this->code;
  76. }
  77. /**
  78. * @return string
  79. */
  80. public function externalSystem(): string
  81. {
  82. return $this->externalSystem;
  83. }
  84. /**
  85. * @return \DateTime
  86. */
  87. public function createdAt(): \DateTime
  88. {
  89. return $this->createdAt;
  90. }
  91. }