<?php
namespace App\Entity\Core\CrammingActivity;
use App\Entity\Core\Answer;
use App\Entity\Core\Mathproblem;
use App\Entity\Core\TemplateSet;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use JsonSerializable;
#[ORM\Table('cramming_activity_response')]
#[ORM\Entity(repositoryClass: CrammingActivityResponseRepository::class)]
class CrammingActivityResponse implements JsonSerializable
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
* @var CrammingActivityUnit
*/
#[ORM\JoinColumn(name: 'cramming_activity_unit', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: CrammingActivityUnit::class, inversedBy: 'crammingActivityResponses')]
private $crammingActivityUnit;
/**
* @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 Answer
*/
#[ORM\JoinColumn(name: 'second_answer', referencedColumnName: 'id', onDelete: 'RESTRICT')]
#[ORM\ManyToOne(targetEntity: Answer::class)]
private $secondAnswer;
#[ORM\Column(name: 'answer_text', type: 'text', nullable: true)]
private $answerText;
#[ORM\Column(name: 'second_answer_text', type: 'text', nullable: true)]
private $secondAnswerText;
/**
* @var DateTime
*/
#[ORM\Column(name: 'start_time', type: 'datetime')]
private $startTime;
/**
* @var DateTime
*/
#[ORM\Column(name: 'end_time', type: 'datetime', nullable: true)]
private $endTime = null;
/**
* @var int
*/
#[ORM\Column(name: 'seconds_delayed', type: 'integer', nullable: true, options: ['default' => 0])]
private $secondsDelayed = 0;
/**
* @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;
/**
* @var TemplateSet
*/
#[ORM\JoinColumn(name: 'template_set', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: TemplateSet::class)]
private $templateSet;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getCrammingActivityUnit(): CrammingActivityUnit
{
return $this->crammingActivityUnit;
}
public function setCrammingActivityUnit(CrammingActivityUnit $crammingActivityUnit): void
{
$this->crammingActivityUnit = $crammingActivityUnit;
}
public function getMathproblem(): Mathproblem
{
return $this->mathproblem;
}
public function setMathproblem(Mathproblem $mathproblem): void
{
$this->mathproblem = $mathproblem;
}
/**
* @return Answer
*/
public function getAnswerChosen(): ?Answer
{
return $this->answerChosen;
}
/**
* @param Answer $answerChosen
*/
public function setAnswerChosen(?Answer $answerChosen): void
{
$this->answerChosen = $answerChosen;
}
/**
* @return DateTime
*/
public function getEndTime(): ?DateTime
{
return $this->endTime;
}
/**
* @param DateTime $endTime
*/
public function setEndTime(?DateTime $endTime): void
{
$this->endTime = $endTime;
}
/**
* @return DateTime
*/
public function getStartTime(): DateTime
{
return $this->startTime;
}
/**
* @param DateTime $startTime
*/
public function setStartTime(DateTime $startTime): void
{
$this->startTime = $startTime;
}
public function getTemplateSet(): TemplateSet
{
return $this->templateSet;
}
public function setTemplateSet(TemplateSet $templateSet): void
{
$this->templateSet = $templateSet;
}
/**
* @return int
*/
public function getSecondsDelayed(): ?int
{
return $this->secondsDelayed;
}
/**
* @param int $secondsDelayed
*/
public function setSecondsDelayed(?int $secondsDelayed): void
{
$this->secondsDelayed = $secondsDelayed;
}
/**
* @return Answer
*/
public function getSecondAnswer(): ?Answer
{
return $this->secondAnswer;
}
public function setSecondAnswer(Answer $secondAnswer): void
{
$this->secondAnswer = $secondAnswer;
}
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 isValid(): bool
{
return $this->isValid;
}
public function setIsValid(bool $isValid): void
{
$this->isValid = $isValid;
}
/**
* @return DateTime|null
*/
public function getArchivedAt(): ?DateTime
{
return $this->archivedAt;
}
/**
* @param DateTime $archivedAt
*/
public function setArchivedAt(DateTime $archivedAt): void
{
$this->archivedAt = $archivedAt;
}
public function jsonSerialize(): array
{
return [
'id' => $this->id,
'answerChosen' => $this->answerChosen,
'secondAnswer' => $this->secondAnswer,
'isValid' => $this->isValid,
];
}
}