<?php

namespace AppBundle\Entity\Organization;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Dunglas\ApiBundle\Annotation\Iri;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use AppBundle\Entity\Traits\TimestampableEntity;
use AppBundle\Entity\Traits\CreatorUpdaterEntity;

/**
 * OnlineRegistration Settings.
 *
 * @see http://schema.org/OnlineRegistrationSettings Documentation on Schema.org
 *
 * @Iri("http://schema.org/OnlineRegistrationSettings")
 */
#[ORM\Entity]
class OnlineRegistrationSettings
{
    use TimestampableEntity;
    use CreatorUpdaterEntity;
    /**
     * @var int
     */
    #[ORM\Column(type: 'integer')]
    #[ORM\Id]
    #[ORM\GeneratedValue(strategy: 'AUTO')]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit', 'onlineregistration_infos'])]
    private $id;
    /**
     * @var Organization
     */
    #[ORM\OneToOne(targetEntity: 'Organization', inversedBy: 'onlineRegistrationSettings', fetch: 'EAGER')]
    #[ORM\JoinColumn(nullable: false)]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings', 'onlineregistration_infos'])]
    private $organization;
    /**
     * @var ArrayCollection<OnlineRegistrationOpeningPeriod>
     */
    #[Assert\Valid]
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod', mappedBy: 'onlineRegistrationSettings', orphanRemoval: true, cascade: ['persist'])]
    #[Groups(['onlineregistrationsettings_onlineregistrationopeningperiod', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $openingPeriods;
    /**
     * @var string
     */
    #[ORM\Column(type: 'text', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $message;
    /**
     * @var array
     */
    #[ORM\Column(type: 'json_array', nullable: true)]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $fieldManagement;
    /**
     * @var array
     */
    #[ORM\Column(type: 'json_array', nullable: true)]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $fieldManagementResponsible;
    /**
     * @var ArrayCollection<OnlineRegistrationDocument>
     */
    #[Assert\Valid]
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Organization\OnlineRegistrationDocument', mappedBy: 'onlineRegistrationSettings', orphanRemoval: true, cascade: ['persist'])]
    #[Groups(['onlineregistrationsettings_onlineregistrationdocument', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $documents;
    /**
     * @var ArrayCollection<OnlineRegistrationDocument>
     */
    #[Assert\Valid]
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Organization\OnlineRegistrationDocument', mappedBy: 'guardiansOnlineRegistrationSettings', orphanRemoval: true, cascade: ['persist'])]
    #[Groups(['onlineregistrationsettings_onlineregistrationdocument', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $guardiansDocuments;
    /**
     * @var string
     */
    #[ORM\Column(type: 'text', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionMessage;
    /**
     * @var ArrayCollection<AppBundle\Entity\Core\File>.
     */
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Core\File', mappedBy: 'onlineRegistrationSetting', orphanRemoval: true)]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionFiles;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionReadMoreToContinue = false;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $approveRulesProcedureWish = false;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $receiveInformationsFromOrganizationWish = false;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $addNewStudents = false;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $addNewEducations = false;
    /**
     * @var string
     */
    #[ORM\Column(type: 'text', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionMessageNewEnrolments;
    /**
     * @var ArrayCollection<AppBundle\Entity\Core\File>.
     */
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Core\File', mappedBy: 'onlineRegistrationSettingNewEnrolments', orphanRemoval: true)]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionFilesNewEnrolments;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $introductionReadMoreToContinueNewEnrolments = false;
    /**
     * @var ArrayCollection<OnlineRegistrationOpeningPeriod>
     */
    #[Assert\Valid]
    #[ORM\OneToMany(targetEntity: 'AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod', mappedBy: 'onlineRegistrationSettingsNewEnrolments', orphanRemoval: true, cascade: ['persist'])]
    #[Groups(['onlineregistrationsettings_onlineregistrationopeningperiod', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $openingPeriodsNewEnrolments;
    /**
     * @var string
     */
    #[ORM\Column(type: 'text', nullable: true)]
    #[Assert\Type(type: 'string')]
    #[Groups(['onlineregistrationsettings', 'onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $messageNewEnrolments;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $approveRulesProcedureWishNewEnrolments = false;
    /**
     * @var bool
     */
    #[ORM\Column(type: 'boolean', options: ['default' => false])]
    #[Assert\Type(type: 'boolean')]
    #[Assert\NotNull]
    #[Groups(['onlineregistrationsettings_edit_onlineregistrationsettings', 'onlineregistration_infos'])]
    private $receiveInformationsFromOrganizationWishNewEnrolments = false;
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->openingPeriods = new \Doctrine\Common\Collections\ArrayCollection();
    }
    /**
     * Sets id.
     *
     * @param int $id
     *
     * @return $this
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }
    /**
     * Gets id.
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Sets organization.
     *
     * @param Organization $organization
     *
     * @return $this
     */
    public function setOrganization(Organization $organization)
    {
        $this->organization = $organization;

        return $this;
    }
    /**
     * Gets organization.
     *
     * @return Organization
     */
    public function getOrganization()
    {
        return $this->organization;
    }
    /**
     * Add openingPeriod
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriod
     *
     * @return OnlineRegistrationSettings
     */
    public function addOpeningPeriod(\AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriod)
    {
        $openingPeriod->setOnlineRegistrationSettings($this);
        $this->openingPeriods[] = $openingPeriod;

        return $this;
    }
    /**
     * Remove openingPeriod
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriod
     */
    public function removeOpeningPeriod(\AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriod)
    {
        $this->openingPeriods->removeElement($openingPeriod);
    }
    /**
     * Get openingPeriods
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getOpeningPeriods()
    {
        return $this->openingPeriods;
    }
    /**
     * Set message
     *
     * @param string $message
     *
     * @return OnlineRegistrationSettings
     */
    public function setMessage($message)
    {
        $this->message = $message;

        return $this;
    }
    /**
     * Get message
     *
     * @return string
     */
    public function getMessage()
    {
        return $this->message;
    }
    /**
     * Set fieldManagement
     *
     * @param array $fieldManagement
     *
     * @return OnlineRegistrationSettings
     */
    public function setFieldManagement($fieldManagement)
    {
        $this->fieldManagement = $fieldManagement;

        return $this;
    }
    /**
     * Get fieldManagementResponsible
     *
     * @return array
     */
    public function getFieldManagementResponsible()
    {
        return $this->fieldManagementResponsible;
    }
    /**
     * Set fieldManagementResponsible
     *
     * @param array $fieldManagementResponsible
     *
     * @return OnlineRegistrationSettings
     */
    public function setFieldManagementResponsible($fieldManagementResponsible)
    {
        $this->fieldManagementResponsible = $fieldManagementResponsible;

        return $this;
    }
    /**
     * Get fieldManagement
     *
     * @return array
     */
    public function getFieldManagement()
    {
        return $this->fieldManagement;
    }
    /**
     * Add document
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationDocument $document
     *
     * @return OnlineRegistrationSettings
     */
    public function addDocument(\AppBundle\Entity\Organization\OnlineRegistrationDocument $document)
    {
        $document->setOnlineRegistrationSettings($this);
        $this->documents[] = $document;

        return $this;
    }
    /**
     * Remove document
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationDocument $document
     */
    public function removeDocument(\AppBundle\Entity\Organization\OnlineRegistrationDocument $document)
    {
        $this->documents->removeElement($document);
    }
    /**
     * Get documents
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getDocuments()
    {
        return $this->documents;
    }
    /**
     * Set introductionReadMoreToContinue
     *
     * @param boolean $introductionReadMoreToContinue
     *
     * @return OnlineRegistrationSettings
     */
    public function setIntroductionReadMoreToContinue($introductionReadMoreToContinue)
    {
        $this->introductionReadMoreToContinue = $introductionReadMoreToContinue;

        return $this;
    }
    /**
     * Get introductionReadMoreToContinue
     *
     * @return boolean
     */
    public function getIntroductionReadMoreToContinue()
    {
        return $this->introductionReadMoreToContinue;
    }
    /**
     * Add introductionFile
     *
     * @param \AppBundle\Entity\Core\File $introductionFile
     *
     * @return OnlineRegistrationSettings
     */
    public function addIntroductionFile(\AppBundle\Entity\Core\File $introductionFile)
    {
        $introductionFile->setOnlineRegistrationSetting($this);
        $this->introductionFiles[] = $introductionFile;

        return $this;
    }
    /**
     * Remove introductionFile
     *
     * @param \AppBundle\Entity\Core\File $introductionFile
     */
    public function removeIntroductionFile(\AppBundle\Entity\Core\File $introductionFile)
    {
        $this->introductionFiles->removeElement($introductionFile);
    }
    /**
     * Get introductionFiles
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getIntroductionFiles()
    {
        return $this->introductionFiles;
    }
    /**
     * Set introductionMessage
     *
     * @param string $introductionMessage
     *
     * @return OnlineRegistrationSettings
     */
    public function setIntroductionMessage($introductionMessage)
    {
        $this->introductionMessage = $introductionMessage;

        return $this;
    }
    /**
     * Get introductionMessage
     *
     * @return string
     */
    public function getIntroductionMessage()
    {
        return $this->introductionMessage;
    }
    /**
     * Set approveRulesProcedureWish
     *
     * @param boolean $approveRulesProcedureWish
     *
     * @return OnlineRegistrationSettings
     */
    public function setApproveRulesProcedureWish($approveRulesProcedureWish)
    {
        $this->approveRulesProcedureWish = $approveRulesProcedureWish;

        return $this;
    }
    /**
     * Get approveRulesProcedureWish
     *
     * @return boolean
     */
    public function getApproveRulesProcedureWish()
    {
        return $this->approveRulesProcedureWish;
    }
    /**
     * Set receiveInformationsFromOrganizationWish
     *
     * @param boolean $receiveInformationsFromOrganizationWish
     *
     * @return OnlineRegistrationSettings
     */
    public function setReceiveInformationsFromOrganizationWish($receiveInformationsFromOrganizationWish)
    {
        $this->receiveInformationsFromOrganizationWish = $receiveInformationsFromOrganizationWish;

        return $this;
    }
    /**
     * Get receiveInformationsFromOrganizationWish
     *
     * @return boolean
     */
    public function getReceiveInformationsFromOrganizationWish()
    {
        return $this->receiveInformationsFromOrganizationWish;
    }
    /**
     * Add guardiansDocument
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationDocument $guardiansDocument
     *
     * @return OnlineRegistrationSettings
     */
    public function addGuardiansDocument(\AppBundle\Entity\Organization\OnlineRegistrationDocument $guardiansDocument)
    {
        $guardiansDocument->setGuardiansOnlineRegistrationSettings($this);
        $this->guardiansDocuments[] = $guardiansDocument;

        return $this;
    }
    /**
     * Remove guardiansDocument
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationDocument $guardiansDocument
     */
    public function removeGuardiansDocument(\AppBundle\Entity\Organization\OnlineRegistrationDocument $guardiansDocument)
    {
        $this->guardiansDocuments->removeElement($guardiansDocument);
    }
    /**
     * Get guardiansDocuments
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getGuardiansDocuments()
    {
        return $this->guardiansDocuments;
    }
    /**
     * Set addNewStudents
     *
     * @param boolean $addNewStudents
     *
     * @return OnlineRegistrationSettings
     */
    public function setAddNewStudents($addNewStudents)
    {
        $this->addNewStudents = $addNewStudents;

        return $this;
    }
    /**
     * Get addNewStudents
     *
     * @return boolean
     */
    public function getAddNewStudents()
    {
        return $this->addNewStudents;
    }
    /**
     * Set addNewEducations
     *
     * @param boolean $addNewEducations
     *
     * @return OnlineRegistrationSettings
     */
    public function setAddNewEducations($addNewEducations)
    {
        $this->addNewEducations = $addNewEducations;

        return $this;
    }
    /**
     * Get addNewEducations
     *
     * @return boolean
     */
    public function getAddNewEducations()
    {
        return $this->addNewEducations;
    }
    /**
     * Set introductionMessageNewEnrolments
     *
     * @param string $introductionMessageNewEnrolments
     *
     * @return OnlineRegistrationSettings
     */
    public function setIntroductionMessageNewEnrolments($introductionMessageNewEnrolments)
    {
        $this->introductionMessageNewEnrolments = $introductionMessageNewEnrolments;

        return $this;
    }
    /**
     * Get introductionMessageNewEnrolments
     *
     * @return string
     */
    public function getIntroductionMessageNewEnrolments()
    {
        return $this->introductionMessageNewEnrolments;
    }
    /**
     * Set introductionReadMoreToContinueNewEnrolments
     *
     * @param boolean $introductionReadMoreToContinueNewEnrolments
     *
     * @return OnlineRegistrationSettings
     */
    public function setIntroductionReadMoreToContinueNewEnrolments($introductionReadMoreToContinueNewEnrolments)
    {
        $this->introductionReadMoreToContinueNewEnrolments = $introductionReadMoreToContinueNewEnrolments;

        return $this;
    }
    /**
     * Get introductionReadMoreToContinueNewEnrolments
     *
     * @return boolean
     */
    public function getIntroductionReadMoreToContinueNewEnrolments()
    {
        return $this->introductionReadMoreToContinueNewEnrolments;
    }
    /**
     * Add introductionFilesNewEnrolment
     *
     * @param \AppBundle\Entity\Core\File $introductionFilesNewEnrolment
     *
     * @return OnlineRegistrationSettings
     */
    public function addIntroductionFilesNewEnrolment(\AppBundle\Entity\Core\File $introductionFilesNewEnrolment)
    {
        $introductionFilesNewEnrolment->setOnlineRegistrationSettingNewEnrolments($this);
        $this->introductionFilesNewEnrolments[] = $introductionFilesNewEnrolment;

        return $this;
    }
    /**
     * Remove introductionFilesNewEnrolment
     *
     * @param \AppBundle\Entity\Core\File $introductionFilesNewEnrolment
     */
    public function removeIntroductionFilesNewEnrolment(\AppBundle\Entity\Core\File $introductionFilesNewEnrolment)
    {
        $this->introductionFilesNewEnrolments->removeElement($introductionFilesNewEnrolment);
    }
    /**
     * Get introductionFilesNewEnrolments
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getIntroductionFilesNewEnrolments()
    {
        return $this->introductionFilesNewEnrolments;
    }
    /**
     * Add openingPeriodsNewEnrolment
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriodsNewEnrolment
     *
     * @return OnlineRegistrationSettings
     */
    public function addOpeningPeriodsNewEnrolment(\AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriodsNewEnrolment)
    {
        $openingPeriodsNewEnrolment->setOnlineRegistrationSettingsNewEnrolments($this);
        $this->openingPeriodsNewEnrolments[] = $openingPeriodsNewEnrolment;

        return $this;
    }
    /**
     * Remove openingPeriodsNewEnrolment
     *
     * @param \AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriodsNewEnrolment
     */
    public function removeOpeningPeriodsNewEnrolment(\AppBundle\Entity\Organization\OnlineRegistrationOpeningPeriod $openingPeriodsNewEnrolment)
    {
        $this->openingPeriodsNewEnrolments->removeElement($openingPeriodsNewEnrolment);
    }
    /**
     * Get openingPeriodsNewEnrolments
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getOpeningPeriodsNewEnrolments()
    {
        return $this->openingPeriodsNewEnrolments;
    }
    /**
     * Set messageNewEnrolments
     *
     * @param string $messageNewEnrolments
     *
     * @return OnlineRegistrationSettings
     */
    public function setMessageNewEnrolments($messageNewEnrolments)
    {
        $this->messageNewEnrolments = $messageNewEnrolments;

        return $this;
    }
    /**
     * Get messageNewEnrolments
     *
     * @return string
     */
    public function getMessageNewEnrolments()
    {
        return $this->messageNewEnrolments;
    }
    /**
     * Set approveRulesProcedureWishNewEnrolments
     *
     * @param boolean $approveRulesProcedureWishNewEnrolments
     *
     * @return OnlineRegistrationSettings
     */
    public function setApproveRulesProcedureWishNewEnrolments($approveRulesProcedureWishNewEnrolments)
    {
        $this->approveRulesProcedureWishNewEnrolments = $approveRulesProcedureWishNewEnrolments;

        return $this;
    }
    /**
     * Get approveRulesProcedureWishNewEnrolments
     *
     * @return boolean
     */
    public function getApproveRulesProcedureWishNewEnrolments()
    {
        return $this->approveRulesProcedureWishNewEnrolments;
    }
    /**
     * Set receiveInformationsFromOrganizationWishNewEnrolments
     *
     * @param boolean $receiveInformationsFromOrganizationWishNewEnrolments
     *
     * @return OnlineRegistrationSettings
     */
    public function setReceiveInformationsFromOrganizationWishNewEnrolments($receiveInformationsFromOrganizationWishNewEnrolments)
    {
        $this->receiveInformationsFromOrganizationWishNewEnrolments = $receiveInformationsFromOrganizationWishNewEnrolments;

        return $this;
    }
    /**
     * Get receiveInformationsFromOrganizationWishNewEnrolments
     *
     * @return boolean
     */
    public function getReceiveInformationsFromOrganizationWishNewEnrolments()
    {
        return $this->receiveInformationsFromOrganizationWishNewEnrolments;
    }
}
