<?php
namespace App\Entity\Core\Peer;
use DateTime;
use DateTimeImmutable;
use DateTimeInterface;
use DateTimeZone;
use Doctrine\ORM\Mapping as ORM;
use Exception;
#[ORM\Table('peer_feedback')]
#[ORM\Entity(repositoryClass: PeerFeedbackRepository::class)]
class PeerFeedback
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
* @var PeerUnit
*/
#[ORM\JoinColumn(name: 'peer_unit', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: PeerUnit::class, inversedBy: 'peerFeedbacks')]
private $peerUnit;
/**
* @var PeerSolution
*/
#[ORM\JoinColumn(name: 'peer_solution', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: PeerSolution::class, inversedBy: 'peerFeedbacks')]
private $peerSolution;
#[ORM\OneToOne(targetEntity: PeerFeedback2nd::class, mappedBy: 'peerFeedback', cascade: ['persist', 'remove'])]
private ?PeerFeedback2nd $peerFeedback2nd;
#[ORM\Column(name: 'feedback_text', type: 'text', nullable: true)]
private ?string $feedbackText;
/**
* @var DateTime
*/
#[ORM\Column(name: 'updated_at', type: 'datetime', nullable: true)]
private $updatedAt;
#[ORM\Column(type: 'integer', nullable: true)]
private ?int $rating = null;
public function getId(): int
{
return $this->id;
}
public function getPeerUnit(): PeerUnit
{
return $this->peerUnit;
}
public function setPeerUnit(PeerUnit $peerUnit)
{
$this->peerUnit = $peerUnit;
}
public function getPeerSolution(): PeerSolution
{
return $this->peerSolution;
}
public function setPeerSolution(PeerSolution $peerSolution)
{
$this->peerSolution = $peerSolution;
}
public function getFeedbackText(): ?string
{
return $this->feedbackText;
}
/**
* @param string $feedbackText
* @throws Exception
*/
public function setFeedbackText(string $feedbackText)
{
$this->feedbackText = $feedbackText;
$this->updatedAt = new DateTimeImmutable('now', new DateTimeZone('Europe/Copenhagen'));
}
public function getRating(): ?int
{
return $this->rating;
}
/**
* @throws Exception
*/
public function setRating(int $rating)
{
$this->rating = $rating;
$this->updatedAt = new DateTimeImmutable('now', new DateTimeZone('Europe/Copenhagen'));
}
public function getPeerFeedback2nd(): ?PeerFeedback2nd
{
return $this->peerFeedback2nd;
}
public function setPeerFeedback2nd(PeerFeedback2nd $peerFeedback2nd)
{
$this->peerFeedback2nd = $peerFeedback2nd;
}
public function getUpdatedAt(): ?DateTimeInterface
{
return $this->updatedAt;
}
}