<?php
namespace App\Entity\Core\Training;
use App\Entity\Core\Answer;
use App\Entity\Core\Mathproblem;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
#[ORM\Table('training_response')]
#[ORM\Entity(repositoryClass: TrainingResponseRepository::class)]
class TrainingResponse implements JsonSerializable
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
* @var TrainingUnit
*/
#[ORM\JoinColumn(name: 'training_unit', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: TrainingUnit::class, inversedBy: 'TrainingResponses')]
private $trainingUnit;
/**
* @var Mathproblem
*/
#[ORM\JoinColumn(name: 'mathproblem', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: Mathproblem::class)]
private $mathproblem;
/**
* @var Answer
*/
#[ORM\JoinColumn(name: 'answer', referencedColumnName: 'id', onDelete: 'RESTRICT')]
#[ORM\ManyToOne(targetEntity: Answer::class)]
private $answerChosen;
/**
* @var DateTime
*/
#[ORM\Column(name: 'end_time', type: 'datetime', nullable: true)]
private $endTime = null;
/**
* @var DateTime
*/
#[ORM\Column(name: 'start_time', type: 'datetime')]
private $startTime;
#[ORM\JoinColumn(name: 'second_answer', referencedColumnName: 'id', onDelete: 'RESTRICT', nullable: true)]
#[ORM\ManyToOne(targetEntity: Answer::class)]
private ?Answer $secondAnswer = null;
/**
* @var bool
*/
#[ORM\Column(name: 'repetition_flag', type: 'boolean', nullable: true)]
private $repetitionFlag;
/**
* @var string|null
*/
#[ORM\Column(name: 'answer_text', type: 'text', nullable: true)]
private string|null $answerText = null;
/**
* @var string|null
*/
#[ORM\Column(name: 'second_answer_text', type: 'text', nullable: true)]
private string|null $secondAnswerText = null;
/**
* @var bool
*/
#[ORM\Column(name: 'is_valid', type: 'boolean', nullable: true, options: ['default' => true])]
private $isValid = true;
/**
* @var DateTime
*/
#[ORM\Column(name: 'archived_at', type: 'datetime', nullable: true)]
private $archivedAt;
/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set TrainingUnit.
*
* @param TrainingUnit $TrainingUnit
*
* @return TrainingResponse
*/
public function setTrainingUnit($TrainingUnit)
{
$this->trainingUnit = $TrainingUnit;
return $this;
}
/**
* Get TrainingUnit.
*
* @return TrainingUnit
*/
public function getTrainingUnit()
{
return $this->trainingUnit;
}
/**
* Set mathproblem.
*
* @param Mathproblem $mathproblem
*
* @return TrainingResponse
*/
public function setMathproblem($mathproblem)
{
$this->mathproblem = $mathproblem;
return $this;
}
/**
* Get mathproblem.
*
* @return Mathproblem
*/
public function getMathproblem()
{
return $this->mathproblem;
}
/**
* Set answerChosen.
*
* @param Answer $answerChosen
*
* @return TrainingResponse
*/
public function setAnswerChosen($answerChosen)
{
$this->answerChosen = $answerChosen;
return $this;
}
/**
* Get answerChosen.
*
* @return Answer
*/
public function getAnswerChosen()
{
return $this->answerChosen;
}
/**
* @param DateTime $endTime
*/
public function setEndTime($endTime)
{
$this->endTime = $endTime;
}
/**
* @return DateTime
*/
public function getEndTime()
{
return $this->endTime;
}
/**
* @param DateTime $startTime
*/
public function setStartTime($startTime)
{
$this->startTime = $startTime;
}
/**
* @return DateTime
*/
public function getStartTime()
{
return $this->startTime;
}
public function getSecondAnswer(): ?Answer
{
return $this->secondAnswer;
}
/**
* @param Answer $secondAnswer
*/
public function setSecondAnswer($secondAnswer)
{
$this->secondAnswer = $secondAnswer;
}
public function getRepetitionFlag(): ?bool
{
return $this->repetitionFlag;
}
public function setRepetitionFlag(?bool $repetitionFlag)
{
$this->repetitionFlag = $repetitionFlag;
}
public function isValid(): bool
{
return $this->isValid;
}
public function setIsValid(bool $isValid): void
{
$this->isValid = $isValid;
}
public function getArchivedAt(): ?DateTime
{
return $this->archivedAt;
}
public function setArchivedAt(DateTime $archivedAt): void
{
$this->archivedAt = $archivedAt;
}
function getAnswerText(): string|null {
return $this->answerText;
}
/**
* @return $this
*/
function setAnswerText(string $answerText):self {
$this->answerText = $answerText;
return $this;
}
function getSecondAnswerText(): string|null {
return $this->secondAnswerText;
}
/**
* @return $this
*/
function setSecondAnswerText(string $secondAnswerText):self {
$this->secondAnswerText = $secondAnswerText;
return $this;
}
public function jsonSerialize(): mixed
{
return [
"id" => $this->getId(),
"answer" => $this->getAnswerChosen(),
"secondAnswer" => $this->getSecondAnswer(),
];
}
}