<?php
declare(strict_types=1);
namespace App\Entity\Core\Dictate;
use App\Entity\User\User;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
#[ORM\Table('dictate_unit')]
#[ORM\Entity(repositoryClass: DictateUnitRepository::class)]
class DictateUnit
{
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private int $id;
/**
* @var
*/
#[ORM\JoinColumn(name: 'dictate_session', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: DictateSession::class, inversedBy: 'dictateUnits')]
private DictateSession $dictateSession;
/**
* @var
*/
#[ORM\JoinColumn(name: 'student', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: User::class)]
private User $student;
#[ORM\Column(name: 'deadline', type: 'datetime', nullable: true)]
private ?DateTime $deadline;
/**
* @var
*/
#[ORM\Column(name: 'finished', type: 'boolean', options: ['default' => false])]
private bool $finished;
/**
* @var DictateResponse[]
*/
#[ORM\OneToMany(targetEntity: DictateResponse::class, mappedBy: 'dictateUnit', cascade: ['persist'])]
private PersistentCollection $dictateResponses;
#[ORM\Column(name: 'extended_deadline', type: 'datetime', nullable: true)]
private ?DateTime $extendedDeadline;
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getDictateSession(): DictateSession
{
return $this->dictateSession;
}
public function setDictateSession(DictateSession $dictateSession): void
{
$this->dictateSession = $dictateSession;
}
public function getStudent(): User
{
return $this->student;
}
public function setStudent(User $student): void
{
$this->student = $student;
}
public function getDeadline(): ?DateTime
{
return $this->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;
}
public function getValidDictateResponses(): array
{
$quizResponses = [];
foreach ($this->dictateResponses as $response) {
$quizResponses[] = $response;
}
return $quizResponses;
}
public function getExtendedDeadline(): ?DateTime
{
return $this->extendedDeadline;
}
public function setExtendedDeadline(DateTime $extendedDeadline): void
{
$this->extendedDeadline = $extendedDeadline;
}
}