src/Entity/Core/Peer/PeerFeedback.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core\Peer;
  3. use DateTime;
  4. use DateTimeImmutable;
  5. use DateTimeInterface;
  6. use DateTimeZone;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Exception;
  9. #[ORM\Table('peer_feedback')]
  10. #[ORM\Entity(repositoryClass: PeerFeedbackRepository::class)]
  11. class PeerFeedback
  12. {
  13. /**
  14. * @var int
  15. */
  16. #[ORM\Column(name: 'id', type: 'integer')]
  17. #[ORM\Id]
  18. #[ORM\GeneratedValue(strategy: 'AUTO')]
  19. private $id;
  20. /**
  21. * @var PeerUnit
  22. */
  23. #[ORM\JoinColumn(name: 'peer_unit', referencedColumnName: 'id', onDelete: 'CASCADE')]
  24. #[ORM\ManyToOne(targetEntity: PeerUnit::class, inversedBy: 'peerFeedbacks')]
  25. private $peerUnit;
  26. /**
  27. * @var PeerSolution
  28. */
  29. #[ORM\JoinColumn(name: 'peer_solution', referencedColumnName: 'id', onDelete: 'CASCADE')]
  30. #[ORM\ManyToOne(targetEntity: PeerSolution::class, inversedBy: 'peerFeedbacks')]
  31. private $peerSolution;
  32. #[ORM\OneToOne(targetEntity: PeerFeedback2nd::class, mappedBy: 'peerFeedback', cascade: ['persist', 'remove'])]
  33. private ?PeerFeedback2nd $peerFeedback2nd;
  34. #[ORM\Column(name: 'feedback_text', type: 'text', nullable: true)]
  35. private ?string $feedbackText;
  36. /**
  37. * @var DateTime
  38. */
  39. #[ORM\Column(name: 'updated_at', type: 'datetime', nullable: true)]
  40. private $updatedAt;
  41. #[ORM\Column(type: 'integer', nullable: true)]
  42. private ?int $rating = null;
  43. public function getId(): int
  44. {
  45. return $this->id;
  46. }
  47. public function getPeerUnit(): PeerUnit
  48. {
  49. return $this->peerUnit;
  50. }
  51. public function setPeerUnit(PeerUnit $peerUnit)
  52. {
  53. $this->peerUnit = $peerUnit;
  54. }
  55. public function getPeerSolution(): PeerSolution
  56. {
  57. return $this->peerSolution;
  58. }
  59. public function setPeerSolution(PeerSolution $peerSolution)
  60. {
  61. $this->peerSolution = $peerSolution;
  62. }
  63. public function getFeedbackText(): ?string
  64. {
  65. return $this->feedbackText;
  66. }
  67. /**
  68. * @param string $feedbackText
  69. * @throws Exception
  70. */
  71. public function setFeedbackText(string $feedbackText)
  72. {
  73. $this->feedbackText = $feedbackText;
  74. $this->updatedAt = new DateTimeImmutable('now', new DateTimeZone('Europe/Copenhagen'));
  75. }
  76. public function getRating(): ?int
  77. {
  78. return $this->rating;
  79. }
  80. /**
  81. * @throws Exception
  82. */
  83. public function setRating(int $rating)
  84. {
  85. $this->rating = $rating;
  86. $this->updatedAt = new DateTimeImmutable('now', new DateTimeZone('Europe/Copenhagen'));
  87. }
  88. public function getPeerFeedback2nd(): ?PeerFeedback2nd
  89. {
  90. return $this->peerFeedback2nd;
  91. }
  92. public function setPeerFeedback2nd(PeerFeedback2nd $peerFeedback2nd)
  93. {
  94. $this->peerFeedback2nd = $peerFeedback2nd;
  95. }
  96. public function getUpdatedAt(): ?DateTimeInterface
  97. {
  98. return $this->updatedAt;
  99. }
  100. }