src/Entity/Core/Peer/PeerUnit.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core\Peer;
  3. use App\Entity\Core\Classroom\ClassroomStudent;
  4. use App\Entity\User\User;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. #[ORM\Table('peer_unit')]
  9. #[ORM\Entity(repositoryClass: PeerUnitRepository::class)]
  10. class PeerUnit
  11. {
  12. /**
  13. * @var int
  14. */
  15. #[ORM\Column(name: 'id', type: 'integer')]
  16. #[ORM\Id]
  17. #[ORM\GeneratedValue(strategy: 'AUTO')]
  18. private $id;
  19. /**
  20. * @var string
  21. */
  22. #[ORM\Column(name: 'name', type: 'string', nullable: true)]
  23. private $name;
  24. /**
  25. * @var PeerGroup
  26. */
  27. #[ORM\JoinColumn(name: 'id_group', referencedColumnName: 'id', onDelete: 'CASCADE')]
  28. #[ORM\ManyToOne(targetEntity: PeerGroup::class, inversedBy: 'peerUnits')]
  29. private $peerGroup;
  30. /**
  31. * @var PeerMathproblem
  32. */
  33. #[ORM\JoinColumn(name: 'id_mathproblem', referencedColumnName: 'id', onDelete: 'CASCADE')]
  34. #[ORM\ManyToOne(targetEntity: PeerMathproblem::class, inversedBy: 'peerUnits')]
  35. private $peerMathproblem;
  36. /**
  37. * @var ClassroomStudent[]
  38. */
  39. #[ORM\JoinTable(name: 'peer_rel_unit_student')]
  40. #[ORM\JoinColumn(name: 'peer_unit_id', referencedColumnName: 'id')]
  41. #[ORM\ManyToMany(targetEntity: ClassroomStudent::class, inversedBy: 'peerUnits')]
  42. private $students;
  43. #[ORM\OneToMany(targetEntity: PeerStudent::class, mappedBy: 'peerUnit', cascade: ['persist'])]
  44. private Collection $peerStudents;
  45. /**
  46. * @var ArrayCollection PeerFeedback
  47. */
  48. #[ORM\OneToMany(targetEntity: PeerFeedback::class, mappedBy: 'peerUnit', cascade: ['persist'])]
  49. private $peerFeedbacks;
  50. #[ORM\OneToOne(targetEntity: PeerSolution::class, mappedBy: 'peerUnit', cascade: ['persist'])]
  51. private PeerSolution $peerSolution;
  52. /**
  53. * PeerUnit constructor.
  54. */
  55. public function __construct()
  56. {
  57. $this->peerFeedbacks = new ArrayCollection();
  58. $this->students = new ArrayCollection();
  59. $this->peerStudents = new ArrayCollection();
  60. }
  61. public function getId(): int
  62. {
  63. return $this->id;
  64. }
  65. public function getName()
  66. {
  67. return $this->name;
  68. }
  69. public function setName(string $name)
  70. {
  71. $this->name = $name;
  72. }
  73. public function getPeerGroup(): PeerGroup
  74. {
  75. return $this->peerGroup;
  76. }
  77. public function setPeerGroup(PeerGroup $peerGroup)
  78. {
  79. $this->peerGroup = $peerGroup;
  80. }
  81. public function getPeerMathproblem(): PeerMathproblem
  82. {
  83. return $this->peerMathproblem;
  84. }
  85. public function setPeerMathproblem(PeerMathproblem $peerMathproblem)
  86. {
  87. $this->peerMathproblem = $peerMathproblem;
  88. }
  89. /**
  90. * @return ClassroomStudent[]|ArrayCollection
  91. */
  92. public function getStudents()
  93. {
  94. return $this->students;
  95. }
  96. public function addStudent(ClassroomStudent $student)
  97. {
  98. $this->students->add($student);
  99. }
  100. public function getPeerFeedbacks(): ArrayCollection
  101. {
  102. return $this->peerFeedbacks;
  103. }
  104. public function addPeerFeedback(PeerFeedback $peerFeedback)
  105. {
  106. $peerFeedback->setPeerUnit($this);
  107. $this->peerFeedbacks->add($peerFeedback);
  108. }
  109. public function setPeerSolution(PeerSolution $peerSolution) : PeerUnit
  110. {
  111. $this->peerSolution = $peerSolution;
  112. return $this;
  113. }
  114. public function getPeerSolution(): PeerSolution
  115. {
  116. return $this->peerSolution;
  117. }
  118. public function addPeerStudent(PeerStudent $student)
  119. {
  120. $this->peerStudents->add($student);
  121. }
  122. /**
  123. * @return Collection|ArrayCollection|PeerStudent[]
  124. */
  125. public function getPeerStudents(): Collection
  126. {
  127. return $this->peerStudents;
  128. }
  129. public function getTeamleader(): ?User
  130. {
  131. foreach ($this->peerStudents as $peerStudent) {
  132. if ($peerStudent->getIsTeamLeader()) {
  133. return $peerStudent->getStudent();
  134. }
  135. }
  136. return null;
  137. }
  138. public function getSiblings()
  139. {
  140. $allUnits = $this->getPeerGroup()->getPeerUnits();
  141. $otherUnits = [];
  142. foreach ($allUnits as $unit) {
  143. if ($unit != $this) {
  144. $otherUnits[] = $unit;
  145. }
  146. }
  147. return $otherUnits;
  148. }
  149. }