HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/dvpis2026/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;
    }
}