<?php
namespace CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use UserBundle\Entity\User;
use JsonSerializable;
/**
* @ORM\Table("reading_test_session")
* @ORM\Entity(repositoryClass="CoreBundle\Entity\ReadingTestSessionRepository")
*/
class ReadingTestSession implements JsonSerializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var ReadingTest
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\ReadingTest")
* @ORM\JoinColumn(name="readingTest", referencedColumnName="id")
*/
private $readingTest;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User")
* @ORM\JoinColumn(name="created_by", referencedColumnName="id")
*/
private $createdBy;
/**
* @var Classroom
*
* @ORM\ManyToOne(targetEntity="CoreBundle\Entity\Classroom")
*/
private $classroom;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @var \DateTime
*
* @ORM\Column(name="startTime", type="datetime", nullable=true)
*/
private $startTime;
/**
* @var \DateTime
* @ORM\Column(name="deadline", type="datetime", nullable=true)
*/
private $deadline;
/**
* @var \DateTime
*
* @ORM\Column(name="createdAt", type="datetime", nullable=false)
*/
private $createdAt;
/**
* @var ReadingTestUnit[]
*
* @ORM\OneToMany(targetEntity="CoreBundle\Entity\ReadingTestUnit", mappedBy="readingTestSession", cascade={"persist"})
*/
private $readingTestUnits;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $deleted;
/**
* @var int
*
* @ORM\Column(type="smallint", nullable=true)
*/
private $duration;
/**
* ReadingTestSession constructor.
* @throws \Exception
*/
public function __construct()
{
$this->createdAt = new \DateTime('now', new \DateTimeZone('Europe/Copenhagen'));
$this->readingTestUnits = new ArrayCollection();
$this->startTime = new \DateTime("now");
$this->deadline = new \DateTime("+1DAY");
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return ReadingTest
*/
public function getReadingTest()
{
return $this->readingTest;
}
/**
* @param ReadingTest $readingTest
*/
public function setReadingTest(ReadingTest $readingTest): void
{
$this->readingTest = $readingTest;
}
/**
* @return User
*/
public function getCreatedBy()
{
return $this->createdBy;
}
/**
* @param User $createdBy
*/
public function setCreatedBy(User $createdBy): void
{
$this->createdBy = $createdBy;
}
/**
* @return Classroom
*/
public function getClassroom()
{
return $this->classroom;
}
/**
* @param Classroom $classroom
*/
public function setClassroom(Classroom $classroom): void
{
$this->classroom = $classroom;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
public function setName(?string $name): void
{
$this->name = $name;
}
/**
* @return \DateTime
*/
public function getStartTime()
{
return $this->startTime;
}
/**
* @param \DateTime $startTime
*/
public function setStartTime(\DateTime $startTime): void
{
$this->startTime = $startTime;
}
/**
* @return \DateTime
*/
public function getDeadline()
{
return $this->deadline;
}
/**
* @param \DateTime $deadline
*/
public function setDeadline(\DateTime $deadline): void
{
$this->deadline = $deadline;
}
/**
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* @param \DateTime $createdAt
*/
public function setCreatedAt(\DateTime $createdAt): void
{
$this->createdAt = $createdAt;
}
/**
* @return ReadingTestUnit[]
*/
public function getReadingTestUnits()
{
return $this->readingTestUnits;
}
/**
* @param ReadingTestUnit[] $readingTestUnits
*/
public function setReadingTestUnits(array $readingTestUnits): void
{
$this->readingTestUnits = $readingTestUnits;
}
/**
* @return bool|null
*/
public function isDeleted(): ?bool
{
return $this->deleted;
}
/**
* @param bool $deleted
* @return void
*/
public function setDeleted(bool $deleted): void
{
$this->deleted = $deleted;
}
public function getDuration(): ?int
{
return $this->duration;
}
public function setDuration(?int $duration)
{
$this->duration = $duration;
}
public function jsonSerialize(): mixed
{
return [
"duration" => $this->getDuration(),
"id" => $this->getId(),
"name" => $this->getName(),
"startTime" => $this->getStartTime(),
'deadline' => $this->getDeadline(),
];
}
}