File: /var/www/dvpis2025/dvpis.kaunokolegija.lt/src/Entity/StudiesProgramPlan.php
<?php
namespace App\Entity;
use App\Repository\StudiesProgramPlanRepository;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\UniqueConstraint;
use Doctrine\Common\Collections\ArrayCollection;
#[ORM\Entity(repositoryClass: StudiesProgramPlanRepository::class)]
#[ORM\Table(name: 'studies_program_plan')]
#[UniqueConstraint(name: 'unique_idx', columns: ['studies_program_id', 'studies_form_id', 'semester', 'studies_module_id'])]
class StudiesProgramPlan
{
#[ORM\Column]
#[ORM\Id]
#[ORM\GeneratedValue]
private ?int $id = null;
#[ORM\JoinColumn(name: 'studies_program_id', referencedColumnName: 'id', nullable: false)]
#[ORM\ManyToOne(targetEntity: StudiesProgram::class, inversedBy: 'studiesProgramPlans')]
private ?StudiesProgram $studiesProgram;
#[ORM\JoinColumn(name: 'studies_form_id', referencedColumnName: 'id', nullable: false)]
#[ORM\ManyToOne(targetEntity: StudiesForm::class, inversedBy: 'studiesProgramPlans')]
private ?StudiesForm $studiesForm;
#[ORM\Column(name: 'semester', type: 'integer')]
private int $semester;
#[ORM\JoinColumn(name: 'studies_module_id', referencedColumnName: 'id', nullable: false)]
#[ORM\ManyToOne(targetEntity: StudiesModule::class, inversedBy: 'studiesProgramPlans')]
private ?StudiesModule $studiesModule;
#[ORM\JoinColumn(name: 'studies_module_type_id', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: StudiesModuleType::class, inversedBy: 'studiesProgramPlans')]
private ?StudiesModuleType $studiesModuleType;
#[ORM\JoinColumn(name: 'teaching_language_id', referencedColumnName: 'id')]
#[ORM\ManyToOne(targetEntity: TeachingLanguage::class, inversedBy: 'studiesProgramPlans')]
private ?TeachingLanguage $teachingLanguage;
#[ORM\Column(name: 'theory_hours', type: 'integer', nullable: true)]
private ?int $theoryHours;
#[ORM\Column(name: 'practic_hours', type: 'integer', nullable: true)]
private ?int $practicHours;
#[ORM\Column(name: 'consultation_hours', type: 'integer', nullable: true)]
private ?int $consultationHours;
#[ORM\Column(name: 'homework_hours', type: 'integer', nullable: true)]
private ?int $homeworkHours;
#[ORM\Column(name: 'credits', type: 'integer')]
private int $credits;
#[ORM\OneToMany(mappedBy: 'studiesProgramPlan', targetEntity: AcademicGroupPlan::class)]
private Collection $academicGroupPlans;
#[ORM\OneToMany(mappedBy: 'studiesProgramPlan', targetEntity: FinalProject::class)]
private Collection $finalProjects;
#[ORM\OneToMany(mappedBy: 'studiesProgramPlan', targetEntity: FinalEgzam::class)]
private Collection $finalEgzams;
#[ORM\OneToMany(mappedBy: 'studiesProgramPlan', targetEntity: FinalProjectHistory::class)]
private Collection $finalProjectsHistory;
#[ORM\OneToMany(mappedBy: 'studiesProgramPlan', targetEntity: FinalEgzamHistory::class)]
private Collection $finalEgzamsHistory;
public function __construct()
{
$this->academicGroupPlans = new ArrayCollection();
$this->finalEgzams = new ArrayCollection();
$this->finalEgzamsHistory = new ArrayCollection();
$this->finalProjects = new ArrayCollection();
$this->finalProjectsHistory = new ArrayCollection();
}
public function __toString()
{
return $this->getStudiesprogramPlanName();
}
public function getStudiesProgramPlanName()
{
return $this->studiesModule . " " . $this->studiesForm . " " . $this->semester . " " . $this->studiesProgram->getName();
}
/**
* @return Collection<int, AcademicGroupPlan>
*/
public function getAcademicGroupPlans(): Collection
{
return $this->academicGroupPlans;
}
public function getStudiesModuleLecturerPlan()
{
return $this->studiesModuleLecturerPlan;
}
public function setAcademicGroupPlans($academicGroupPlans)
{
$this->academicGroupPlans = $academicGroupPlans;
return $this;
}
public function setStudiesModuleLecturerPlan($studiesModuleLecturerPlan)
{
$this->studiesModuleLecturerPlan = $studiesModuleLecturerPlan;
return $this;
}
public function getStudiesModule(): ?StudiesModule
{
return $this->studiesModule;
}
public function setStudiesModule(?StudiesModule $studiesModule): static
{
$this->studiesModule = $studiesModule;
return $this;
}
public function getTeachingLanguage(): ?TeachingLanguage
{
return $this->teachingLanguage;
}
public function setTeachingLanguage(?TeachingLanguage $teachingLanguage): static
{
$this->teachingLanguage = $teachingLanguage;
return $this;
}
public function getStudiesProgram(): ?StudiesProgram
{
return $this->studiesProgram;
}
public function getStudiesForm(): ?StudiesForm
{
return $this->studiesForm;
}
public function getStudiesModuleType(): ?StudiesModuleType
{
return $this->studiesModuleType;
}
public function setStudiesProgram(?StudiesProgram $studiesProgram): static
{
$this->studiesProgram = $studiesProgram;
return $this;
}
public function setStudiesForm(?StudiesForm $studiesForm): static
{
$this->studiesForm = $studiesForm;
return $this;
}
public function setStudiesModuleType(?StudiesModuleType $studiesModuleType): static
{
$this->studiesModuleType = $studiesModuleType;
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function setSemester(int $semester): static
{
$this->semester = $semester;
return $this;
}
public function getSemester(): ?int
{
return $this->semester;
}
public function setTheoryHours(?int $theoryHours): static
{
$this->theoryHours = $theoryHours;
return $this;
}
public function getTheoryHours(): ?int
{
return $this->theoryHours;
}
public function setPracticHours(?int $practicHours): static
{
$this->practicHours = $practicHours;
return $this;
}
public function getPracticHours(): ?int
{
return $this->practicHours;
}
public function setConsultationHours(?int $consultationHours): static
{
$this->consultationHours = $consultationHours;
return $this;
}
public function getConsultationHours(): ?int
{
return $this->consultationHours;
}
public function setHomeworkHours(?int $homeworkHours): static
{
$this->homeworkHours = $homeworkHours;
return $this;
}
public function getHomeworkHours(): ?int
{
return $this->homeworkHours;
}
public function setCredits(int $credits): static
{
$this->credits = $credits;
return $this;
}
public function getCredits(): ?int
{
return $this->credits;
}
/**
* @return Collection<int, FinalProject>
*/
public function getFinalProjects(): Collection
{
return $this->finalProjects;
}
/**
* @param ArrayCollection $finalProjects
*
* @return $this
*/
public function setFinalProjects($finalProjects): self
{
$this->finalProjects = $finalProjects;
return $this;
}
/**
* @return Collection<int, FinalEgzam>
*/
public function getFinalEgzams(): Collection
{
return $this->finalEgzams;
}
/**
* @param ArrayCollection $finalEgzams
*
* @return $this
*/
public function setFinalEgzams($finalEgzams): self
{
$this->finalEgzams = $finalEgzams;
return $this;
}
/**
* @return Collection<int, FinalProjectHistory>
*/
public function getFinalProjectsHistory(): Collection
{
return $this->finalProjectsHistory;
}
/**
* @param ArrayCollection $finalProjectsHistory
*
* @return $this
*/
public function setFinalProjectsHistory($finalProjectsHistory): self
{
$this->finalProjectsHistory = $finalProjectsHistory;
return $this;
}
/**
* @return Collection<int, FinalEgzamHistory>
*/
public function getFinalEgzamsHistory(): Collection
{
return $this->finalEgzamsHistory;
}
/**
* @param ArrayCollection $finalEgzamsHistory
*
* @return $this
*/
public function setFinalEgzamsHistory($finalEgzamsHistory): self
{
$this->finalEgzamsHistory = $finalEgzamsHistory;
return $this;
}
public function addAcademicGroupPlan(AcademicGroupPlan $academicGroupPlan): static
{
if (!$this->academicGroupPlans->contains($academicGroupPlan)) {
$this->academicGroupPlans->add($academicGroupPlan);
$academicGroupPlan->setStudiesProgramPlan($this);
}
return $this;
}
public function removeAcademicGroupPlan(AcademicGroupPlan $academicGroupPlan): static
{
if ($this->academicGroupPlans->removeElement($academicGroupPlan)) {
// set the owning side to null (unless already changed)
if ($academicGroupPlan->getStudiesProgramPlan() === $this) {
$academicGroupPlan->setStudiesProgramPlan(null);
}
}
return $this;
}
public function addFinalProject(FinalProject $finalProject): static
{
if (!$this->finalProjects->contains($finalProject)) {
$this->finalProjects->add($finalProject);
$finalProject->setStudiesProgramPlan($this);
}
return $this;
}
public function removeFinalProject(FinalProject $finalProject): static
{
if ($this->finalProjects->removeElement($finalProject)) {
// set the owning side to null (unless already changed)
if ($finalProject->getStudiesProgramPlan() === $this) {
$finalProject->setStudiesProgramPlan(null);
}
}
return $this;
}
public function addFinalEgzam(FinalEgzam $finalEgzam): static
{
if (!$this->finalEgzams->contains($finalEgzam)) {
$this->finalEgzams->add($finalEgzam);
$finalEgzam->setStudiesProgramPlan($this);
}
return $this;
}
public function removeFinalEgzam(FinalEgzam $finalEgzam): static
{
if ($this->finalEgzams->removeElement($finalEgzam)) {
// set the owning side to null (unless already changed)
if ($finalEgzam->getStudiesProgramPlan() === $this) {
$finalEgzam->setStudiesProgramPlan(null);
}
}
return $this;
}
public function addFinalProjectsHistory(FinalProjectHistory $finalProjectsHistory): static
{
if (!$this->finalProjectsHistory->contains($finalProjectsHistory)) {
$this->finalProjectsHistory->add($finalProjectsHistory);
$finalProjectsHistory->setStudiesProgramPlan($this);
}
return $this;
}
public function removeFinalProjectsHistory(FinalProjectHistory $finalProjectsHistory): static
{
if ($this->finalProjectsHistory->removeElement($finalProjectsHistory)) {
// set the owning side to null (unless already changed)
if ($finalProjectsHistory->getStudiesProgramPlan() === $this) {
$finalProjectsHistory->setStudiesProgramPlan(null);
}
}
return $this;
}
public function addFinalEgzamsHistory(FinalEgzamHistory $finalEgzamsHistory): static
{
if (!$this->finalEgzamsHistory->contains($finalEgzamsHistory)) {
$this->finalEgzamsHistory->add($finalEgzamsHistory);
$finalEgzamsHistory->setStudiesProgramPlan($this);
}
return $this;
}
public function removeFinalEgzamsHistory(FinalEgzamHistory $finalEgzamsHistory): static
{
if ($this->finalEgzamsHistory->removeElement($finalEgzamsHistory)) {
// set the owning side to null (unless already changed)
if ($finalEgzamsHistory->getStudiesProgramPlan() === $this) {
$finalEgzamsHistory->setStudiesProgramPlan(null);
}
}
return $this;
}
}