<?php
declare(strict_types=1);
namespace App\Entity\Core\CrammingActivity;
use App\Entity\User\User;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
#[ORM\Table('cramming_activity_unit')]
#[ORM\Entity(repositoryClass: CrammingActivityUnitRepository::class)]
class CrammingActivityUnit
{
/**
* @var int
*/
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private int $id;
/**
* @var CrammingActivity
*/
#[ORM\JoinColumn(name: 'cramming_activity', referencedColumnName: 'id', onDelete: 'CASCADE')]
#[ORM\ManyToOne(targetEntity: CrammingActivity::class, inversedBy: 'crammingActivityUnits')]
private CrammingActivity $crammingActivity;
/**
* @var User
*/
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: User::class)]
private User $student;
#[ORM\Column(name: 'start_time', type: 'datetime', nullable: true)]
protected ?DateTime $startTime;
#[ORM\Column(name: 'deadline', type: 'datetime', nullable: true)]
protected ?DateTime $deadline;
#[ORM\Column(name: 'seconds_left', type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $secondsLeft;
#[ORM\Column(name: 'seconds_paused', type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $secondsPaused;
#[ORM\Column(name: 'time_paused', type: 'datetime', nullable: true)]
private ?DateTime $timePaused;
#[ORM\Column(name: 'time_resumed', type: 'datetime', nullable: true)]
private ?DateTime $timeResumed;
#[ORM\Column(name: 'is_paused', type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $isPaused = 0;
#[ORM\Column(name: 'current_difficulties', type: 'string', length: 4096, nullable: true)]
private ?string $currentDifficulties;
#[ORM\Column(name: 'disabled_template_sets', type: 'string', length: 256, nullable: true)]
private ?string $disabledTemplateSets;
#[ORM\Column(name: 'extended_deadline', type: 'datetime', nullable: true)]
private ?DateTime $extendedDeadline;
#[ORM\OneToMany(targetEntity: CrammingActivityResponse::class, mappedBy: 'crammingActivityUnit', cascade: ['persist', 'remove'])]
private Collection $crammingActivityResponses;
public function __construct()
{
$this->crammingActivityResponses = new ArrayCollection();
}
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getCrammingActivity(): CrammingActivity
{
return $this->crammingActivity;
}
public function setCrammingActivity(CrammingActivity $crammingActivity): void
{
$this->crammingActivity = $crammingActivity;
}
public function getStudent(): User
{
return $this->student;
}
public function setStudent(User $student): void
{
$this->student = $student;
}
/**
* @return ArrayCollection|CrammingActivityResponse[]
*/
public function getCrammingActivityResponses(): Collection
{
return $this->crammingActivityResponses;
}
/**
* @param CrammingActivityResponse[]|ArrayCollection $crammingActivityResponses
*/
public function setCrammingActivityResponses(array|PersistentCollection $crammingActivityResponses): void
{
$this->crammingActivityResponses = $crammingActivityResponses;
}
public function getStartTime(): ?DateTime
{
return $this->startTime;
}
public function setStartTime(?DateTime $startTime): void
{
$this->startTime = $startTime;
}
public function getDeadline(): ?DateTime
{
return $this->deadline;
}
public function setDeadline(?DateTime $deadline): void
{
$this->deadline = $deadline;
}
public function getSecondsLeft(): ?int
{
return $this->secondsLeft;
}
public function setSecondsLeft(?int $secondsLeft): void
{
$this->secondsLeft = $secondsLeft;
}
public function getSecondsPaused(): ?int
{
return $this->secondsPaused;
}
public function setSecondsPaused(?int $secondsPaused): void
{
$this->secondsPaused = $secondsPaused;
}
public function addSecondsPaused(int $secondsPaused)
{
$this->secondsPaused += $secondsPaused;
}
public function getTimePaused(): ?DateTime
{
return $this->timePaused;
}
public function setTimePaused(?DateTime $timePaused): void
{
$this->timePaused = $timePaused;
}
public function getTimeResumed(): ?DateTime
{
return $this->timeResumed;
}
public function setTimeResumed(?DateTime $timeResumed): void
{
$this->timeResumed = $timeResumed;
}
public function getIsPaused(): int
{
return $this->isPaused;
}
public function setIsPaused(int $isPaused): void
{
$this->isPaused = $isPaused;
}
public function getCurrentDifficulties(): ?string
{
return $this->currentDifficulties;
}
public function setCurrentDifficulties(?string $currentDifficulties): void
{
$this->currentDifficulties = $currentDifficulties;
}
public function getDisabledTemplateSets(): ?string
{
return $this->disabledTemplateSets;
}
public function setDisabledTemplateSets(?string $disabledTemplateSets): void
{
$this->disabledTemplateSets = $disabledTemplateSets;
}
public function getExtendedDeadline(): ?DateTime
{
return $this->extendedDeadline;
}
public function setExtendedDeadline(DateTime $extendedDeadline): void
{
$this->extendedDeadline = $extendedDeadline;
}
}