src/Entity/Core/Publication.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core;
  3. use App\Entity\Core\Quiz\Quiz;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. #[ORM\Table('publication')]
  7. #[ORM\Entity(repositoryClass: PublicationRepository::class)]
  8. class Publication
  9. {
  10. /**
  11. * @var int
  12. */
  13. #[ORM\Column(name: 'id', type: 'integer')]
  14. #[ORM\Id]
  15. private int $id;
  16. /**
  17. * @var string
  18. */
  19. #[ORM\Column(name: 'isbn', type: 'string', length: 32, nullable: false, unique: true)]
  20. private string $isbn;
  21. /**
  22. * @var string
  23. */
  24. #[ORM\Column(name: 'name', type: 'string', length: 255, nullable: false)]
  25. private string $name;
  26. /**
  27. * @var int
  28. */
  29. #[ORM\Column]
  30. private int $timestamp;
  31. /**
  32. * @var bool
  33. */
  34. #[ORM\Column]
  35. private bool $deleted;
  36. /**
  37. * @var bool
  38. */
  39. #[ORM\Column]
  40. private bool $hidden;
  41. /**
  42. * @var bool
  43. */
  44. #[ORM\Column(name: 'available_for_be_user_creation')]
  45. private bool $availableForBackendUserCreation;
  46. /**
  47. * @var Publisher
  48. */
  49. #[ORM\JoinColumn(name: 'publisher', referencedColumnName: 'id', nullable: false)]
  50. #[ORM\ManyToOne(targetEntity: Publisher::class, inversedBy: 'publications', cascade: ['persist'])]
  51. private Publisher $publisher;
  52. /**
  53. * @var Collection
  54. */
  55. #[ORM\OneToMany(targetEntity: Quiz::class, mappedBy: 'publication', cascade: ['persist'])]
  56. private Collection $quizzes;
  57. public function getId(): int
  58. {
  59. return $this->id;
  60. }
  61. public function setId(int $id): void
  62. {
  63. $this->id = $id;
  64. }
  65. public function getName(): string
  66. {
  67. return $this->name;
  68. }
  69. public function setName(string $name): void
  70. {
  71. $this->name = $name;
  72. }
  73. public function getPublisher(): Publisher
  74. {
  75. return $this->publisher;
  76. }
  77. public function setPublisher(Publisher $publisher): void
  78. {
  79. $this->publisher = $publisher;
  80. }
  81. public function __toString() {
  82. return $this->name;
  83. }
  84. public function getQuizzes(): Collection
  85. {
  86. return $this->quizzes;
  87. }
  88. public function setQuizzes(Collection $quizzes): void
  89. {
  90. $this->quizzes = $quizzes;
  91. }
  92. public function getIsbn(): string
  93. {
  94. return $this->isbn;
  95. }
  96. public function setIsbn(string $isbn): void
  97. {
  98. $this->isbn = $isbn;
  99. }
  100. public function getTimestamp(): int
  101. {
  102. return $this->timestamp;
  103. }
  104. public function setTimestamp(int $timestamp): void
  105. {
  106. $this->timestamp = $timestamp;
  107. }
  108. public function isDeleted(): bool
  109. {
  110. return $this->deleted;
  111. }
  112. public function setDeleted(bool $deleted): void
  113. {
  114. $this->deleted = $deleted;
  115. }
  116. public function isHidden(): bool
  117. {
  118. return $this->hidden;
  119. }
  120. public function setHidden(bool $hidden): void
  121. {
  122. $this->hidden = $hidden;
  123. }
  124. public function getNumberOfEnabledQuizzes(): int
  125. {
  126. $enabledQuizzes = $this->quizzes->filter(function (Quiz $quiz) {
  127. return $quiz->getEnabled();
  128. });
  129. return $enabledQuizzes->count();
  130. }
  131. public function isAvailableForBackendUserCreation(): bool
  132. {
  133. return $this->availableForBackendUserCreation;
  134. }
  135. public function setAvailableForBackendUserCreation(bool $availableForBackendUserCreation): void
  136. {
  137. $this->availableForBackendUserCreation = $availableForBackendUserCreation;
  138. }
  139. }