<?php
declare(strict_types=1);
namespace App\Entity\System;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*
* @ORM\Table(name="ps_feature")
*
* @ORM\Entity(repositoryClass="App\Repository\System\FeatureRepository")
*/
class Feature
{
public const FEATURE_ACADEMY_COURSE_ID = 4907;
public const FEATURE_ACADEMY_COURSE_LEVEL = 4915;
public const FEATURE_ACADEMY_COURSE_LIFETIME = 4916;
public const FEATURE_ACADEMY_COURSE_LESSONS = 4917;
public const FEATURE_ACADEMY_COURSE_DURATION = 4918;
public const FEATURE_ACADEMY_COURSE_SUBTITLES = 4919;
public const FEATURE_ACADEMY_COURSE_TYPE = 4920;
public const FEATURE_ACADEMY_COURSE_AUDIO = 4926;
public const FEATURE_ACADEMY_COURSE_TYPE_ONBOARDING = 231154;
public const FEATURE_ACADEMY_COURSE_TYPE_INTERNAL = 233082;
public const FEATURE_ACADEMY_COURSE_TYPE_EXTERNAL = 233517;
public const FEATURE_ACADEMY_COURSE_TYPE_REGISTRATION = 234032;
public const FEATURE_COUNTRY_OF_ORIGIN = 279;
public const FEATURE_PLUG_EU = 28017;
public const FEATURE_ENERGY_EFFICIENCY = 96;
public const FEATURES_INCLUDED_FOR_API = [
self::FEATURE_COUNTRY_OF_ORIGIN,
self::FEATURE_PLUG_EU,
];
public const FEATURE_ACADEMY_IDS_EXCLUDED_FROM_PRODUCT_DETAIL = [
self::FEATURE_ACADEMY_COURSE_ID,
self::FEATURE_ACADEMY_COURSE_TYPE,
];
public const FEATURE_ACADEMY_IDS_SORTING_FOR_PRODUCT_DETAIL = [
self::FEATURE_ACADEMY_COURSE_LEVEL,
self::FEATURE_ACADEMY_COURSE_DURATION,
self::FEATURE_ACADEMY_COURSE_LESSONS,
self::FEATURE_ACADEMY_COURSE_LIFETIME,
self::FEATURE_ACADEMY_COURSE_AUDIO,
self::FEATURE_ACADEMY_COURSE_SUBTITLES,
];
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=30)
*/
private $reference;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime")
*/
private $dateAdd;
/**
* @var bool
*
* @ORM\Column(type="boolean")
*/
private $active;
/**
* @var Collection<int, FeatureLang>&iterable<FeatureLang>
*
* @ORM\OneToMany(targetEntity="FeatureLang", mappedBy="feature")
*/
private $featureLangs;
/**
* @var Collection<int, FeatureProduct>&iterable<FeatureProduct>
*
* @ORM\OneToMany(targetEntity="App\Entity\System\FeatureProduct", mappedBy="feature")
*/
private $featureProducts;
public function __construct()
{
$this->featureLangs = new ArrayCollection();
$this->featureProducts = new ArrayCollection();
}
public function getId(): int
{
return $this->id;
}
public function getReference(): string
{
return $this->reference;
}
public function setReference(string $reference): Feature
{
$this->reference = $reference;
return $this;
}
public function getDateAdd(): \DateTime
{
return $this->dateAdd;
}
public function setDateAdd(\DateTime $dateAdd): Feature
{
$this->dateAdd = $dateAdd;
return $this;
}
public function isActive(): bool
{
return $this->active;
}
public function setActive(bool $active): Feature
{
$this->active = $active;
return $this;
}
/**
* @return Collection<int, FeatureLang>&iterable<FeatureLang>
*/
public function getFeatureLangs()
{
return $this->featureLangs;
}
/**
* @param Collection<int, FeatureLang>&iterable<FeatureLang> $featureLangs
*/
public function setFeatureLangs($featureLangs): Feature
{
$this->featureLangs = $featureLangs;
return $this;
}
/**
* @return Collection<int, FeatureProduct>&iterable<FeatureProduct>
*/
public function getFeatureProducts()
{
return $this->featureProducts;
}
/**
* @param Collection<int, FeatureProduct>&iterable<FeatureProduct> $featureProducts
*
* @return Feature
*/
public function setFeatureProducts($featureProducts)
{
$this->featureProducts = $featureProducts;
return $this;
}
/**
* @return array<string, FeatureLang>
*/
public function getTranslationsIndexedByIsoCode(): array
{
$translations = [];
foreach ($this->featureLangs as $translation) {
$isoCode = strtolower($translation->getLanguage()->getIsoCode());
$translations[$isoCode] = $translation;
}
return $translations;
}
}