<?php
declare(strict_types=1);
namespace App\Entity\Core\ReadingTest;
use App\Entity\User\User;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Table('reading_test_unit')]
#[ORM\Entity(repositoryClass: ReadingTestUnitRepository::class)]
class ReadingTestUnit
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private $id;
/**
* @var ReadingTestSession
*/
#[ORM\JoinColumn(name: 'reading_test_session', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: ReadingTestSession::class, inversedBy: 'readingTestUnits')]
private $readingTestSession;
/**
* @var User
*/
#[ORM\JoinColumn(name: 'student', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: User::class)]
private $student;
/**
* @var DateTime
*/
#[ORM\Column(name: 'deadline', type: 'datetime', nullable: true)]
private $deadline;
/**
* @var bool
*/
#[ORM\Column(name: 'finished', type: 'boolean', options: ['default' => false])]
private $finished;
/**
* @var DateTime
*/
#[ORM\Column(name: 'reading_start_time', type: 'datetime', nullable: true)]
private $readingStartTime;
/**
* @var DateTime
*/
#[ORM\Column(name: 'reading_stop_time', type: 'datetime', nullable: true)]
private $readingStopTime;
/**
* @var float
*/
#[ORM\Column(name: 'words_per_minute', type: 'float', nullable: true)]
private $wordsPerMinute;
/**
* @var ReadingTestResponse[]
*/
#[ORM\OneToMany(targetEntity: ReadingTestResponse::class, mappedBy: 'readingTestUnit', cascade: ['persist'])]
private $readingTestResponses;
/**
* @var DateTime
*/
#[ORM\Column(name: 'extended_deadline', type: 'datetime', nullable: true)]
private $extendedDeadline;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getReadingTestSession(): ReadingTestSession
{
return $this->readingTestSession;
}
public function setReadingTestSession(ReadingTestSession $readingTestSession): void
{
$this->readingTestSession = $readingTestSession;
}
public function getStudent(): User
{
return $this->student;
}
public function setStudent(User $student): void
{
$this->student = $student;
}
/**
* @return DateTime
*/
public function getDeadline(): ?DateTime
{
return $this->deadline;
}
/**
* @param DateTime $deadline
*/
public function setDeadline(?DateTime $deadline): void
{
$this->deadline = $deadline;
}
public function isFinished(): bool
{
return $this->finished;
}
public function setFinished(bool $finished): void
{
$this->finished = $finished;
}
/**
* @return DateTime
*/
public function getReadingStartTime(): ?DateTime
{
return $this->readingStartTime;
}
/**
* @param DateTime $readingStartTime
*/
public function setReadingStartTime(?DateTime $readingStartTime): void
{
$this->readingStartTime = $readingStartTime;
}
/**
* @return DateTime
*/
public function getReadingStopTime(): ?DateTime
{
return $this->readingStopTime;
}
/**
* @param DateTime $readingStopTime
*/
public function setReadingStopTime(?DateTime $readingStopTime): void
{
$this->readingStopTime = $readingStopTime;
}
/**
* @return float
*/
public function getWordsPerMinute(): ?float
{
return $this->wordsPerMinute;
}
/**
* @param float $wordsPerMinute
*/
public function setWordsPerMinute(?float $wordsPerMinute): void
{
$this->wordsPerMinute = $wordsPerMinute;
}
/**
* @return ReadingTestResponse[]
*/
public function getReadingTestResponses()
{
return $this->readingTestResponses;
}
public function getExtendedDeadline(): ?DateTime
{
return $this->extendedDeadline;
}
public function setExtendedDeadline(DateTime $extendedDeadline): void
{
$this->extendedDeadline = $extendedDeadline;
}
}