<?php
declare(strict_types=1);
namespace App\Entity\Core;
use App\Entity\Core\Topic\Topic;
use App\Entity\User\User;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Table('student_difficulty')]
#[ORM\Entity(repositoryClass: StudentDifficultyRepository::class)]
class StudentDifficulty
{
public const int DEFAULT_DIFFICULTY = 1;
#[ORM\Column(name: 'id', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: 'AUTO')]
private int $id;
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: User::class)]
private User $user;
#[ORM\JoinColumn(name: 'topic_id', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: Topic::class)]
private Topic $topic;
#[ORM\Column(name: 'resp_array', type: 'array', nullable: true)]
private ?array $respArray = [0, 0, 0, 0];
#[ORM\Column(name: 'difficulty', type: 'integer')]
private int $difficulty = self::DEFAULT_DIFFICULTY;
#[ORM\Column(name: 'repetition_flag', type: 'boolean', nullable: true)]
private ?bool $repetitionFlag = false;
public function __construct(User $user, Topic $topic)
{
$this->user = $user;
$this->topic = $topic;
}
public function getId(): int
{
return $this->id;
}
public function setUser(User $user): void
{
$this->user = $user;
}
public function getUser(): User
{
return $this->user;
}
public function setTopic(Topic $topic): StudentDifficulty
{
$this->topic = $topic;
return $this;
}
public function getTopic(): Topic
{
return $this->topic;
}
public function setDifficulty(int $difficulty): StudentDifficulty
{
$this->difficulty = $difficulty;
return $this;
}
public function getDifficulty(): int
{
return $this->difficulty;
}
public function getRespArray(): array
{
return $this->respArray;
}
public function addResponse(int $value): StudentDifficulty
{
$responseArray = $this->getRespArray();
array_unshift($responseArray, $value);
$this->respArray = array_slice($responseArray, 0, 4);
return $this;
}
public function setRespArray(array $respArray): StudentDifficulty
{
$this->respArray = array_slice($respArray, 0, 4);
return $this;
}
public function getRepetitionFlag(): ?bool
{
return $this->repetitionFlag;
}
/**
* @param mixed $repetitionFlag
*/
public function setRepetitionFlag($repetitionFlag): void
{
$this->repetitionFlag = $repetitionFlag;
}
}