src/Entity/Settings.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use DateTime;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use App\Helper\Enums\LanguageType;
  6. enum SettingTypestring
  7. {
  8.     case FILE 'FILE';
  9.     case STRING 'STRING';
  10. }
  11. /**
  12.  * Settings
  13.  *
  14.  * @ORM\Table(name="settings", uniqueConstraints={
  15.  *     @ORM\UniqueConstraint(name="name_lang_unique", columns={"name", "lang"})
  16.  * })
  17.  * @ORM\Entity(repositoryClass="App\Repository\SettingsRepository")
  18.  */
  19. class Settings
  20. {
  21.     /**
  22.      * @var int
  23.      *
  24.      * @ORM\Column(name="id", type="integer")
  25.      * @ORM\Id
  26.      * @ORM\GeneratedValue(strategy="AUTO")
  27.      */
  28.     private $id;
  29.     /**
  30.      * @var DateTime
  31.      *
  32.      * @ORM\Column(name="created_at", type="datetime", nullable=false)
  33.      */
  34.     private $createdAt;
  35.     /**
  36.      * @var DateTime
  37.      *
  38.      * @ORM\Column(name="updated_at", type="datetime", nullable=false)
  39.      */
  40.     private $updatedAt;
  41.     /**
  42.      * @var string
  43.      *
  44.      * @ORM\Column(name="name", type="string", nullable=false, length=128)
  45.      */
  46.     private $name;
  47.     /**
  48.      * @var string
  49.      *
  50.      * @ORM\Column(name="lang", type="string", length=3, options={"default" : LanguageType::UNIVERSAL})
  51.      */
  52.     private $lang;
  53.     /**
  54.      * @var SettingType
  55.      * 
  56.      * @ORM\Column(name="type", type="setting_type_enum_type", nullable=false)
  57.      */
  58.     private $type;
  59.     /**
  60.      * @var string
  61.      *
  62.      * @ORM\Column(name="value", type="string", length=1024)
  63.      */
  64.     private $value;
  65.     public function __construct()
  66.     {
  67.         $this->createdAt = new DateTime();
  68.         $this->updatedAt = new DateTime();
  69.     }
  70.     /**
  71.      * Get id
  72.      *
  73.      * @return int
  74.      */
  75.     public function getId()
  76.     {
  77.         return $this->id;
  78.     }
  79.     /**
  80.      * Get name
  81.      *
  82.      * @return string
  83.      */
  84.     public function getName()
  85.     {
  86.         return $this->name;
  87.     }
  88.     /**
  89.      * Set name
  90.      *
  91.      * @param string $name
  92.      *
  93.      * @return Settings
  94.      */
  95.     public function setName($name)
  96.     {
  97.         $this->name $name;
  98.         return $this;
  99.     }
  100.     /**
  101.      * Get lang
  102.      *
  103.      * @return string
  104.      */
  105.     public function getLang()
  106.     {
  107.         return $this->lang;
  108.     }
  109.     /**
  110.      * Set lang
  111.      *
  112.      * @param string $lang
  113.      *
  114.      * @return Settings
  115.      */
  116.     public function setLang($lang)
  117.     {
  118.         $this->lang $lang;
  119.         return $this;
  120.     }
  121.     /**
  122.      * Get type
  123.      *
  124.      * @return SettingType
  125.      */
  126.     public function getType()
  127.     {
  128.         return $this->type;
  129.     }
  130.     /**
  131.      * Set type
  132.      *
  133.      * @param SettingType $type
  134.      *
  135.      * @return Settings
  136.      */
  137.     public function setType($type)
  138.     {
  139.         $this->type $type;
  140.         return $this;
  141.     }
  142.     /**
  143.      * Get value
  144.      *
  145.      * @return string
  146.      */
  147.     public function getValue()
  148.     {
  149.         return $this->value;
  150.     }
  151.     /**
  152.      * Get serialized value
  153.      *
  154.      * @return array
  155.      */
  156.     public function getSerializedValue(string $baseUrl null)
  157.     {
  158.         $ret = [
  159.             "id" => $this->id,
  160.             "name" => $this->name,
  161.             "lang" => $this->lang
  162.         ];
  163.         switch ($this->type) {
  164.             case SettingType::FILE:
  165.                 $filePath = (string) $this->value;
  166.                 if ($baseUrl !== null) {
  167.                     $filePath rtrim($baseUrl'/') . '/' ltrim($filePath'/');
  168.                 }
  169.                 $ret["value"] = $filePath;
  170.                 break;
  171.             default:
  172.                 $ret["value"] = (string) $this->value;
  173.                 break;
  174.         }
  175.         return $ret;
  176.     }
  177.     /**
  178.      * Set value
  179.      *
  180.      * @param string $value
  181.      *
  182.      * @return Settings
  183.      */
  184.     public function setValue($value)
  185.     {
  186.         $this->value $value;
  187.         return $this;
  188.     }
  189.     /**
  190.      * Get createdAt
  191.      *
  192.      * @return DateTime
  193.      */
  194.     public function getCreatedAt()
  195.     {
  196.         return $this->createdAt;
  197.     }
  198.     /**
  199.      * Set createdAt
  200.      *
  201.      * @param DateTime $createdAt
  202.      *
  203.      * @return Settings
  204.      */
  205.     public function setCreatedAt($createdAt)
  206.     {
  207.         $this->createdAt $createdAt;
  208.         return $this;
  209.     }
  210.     /**
  211.      * Get updatedAt
  212.      *
  213.      * @return DateTime
  214.      */
  215.     public function getUpdatedAt()
  216.     {
  217.         return $this->updatedAt;
  218.     }
  219.     /**
  220.      * Set updatedAt
  221.      *
  222.      * @param DateTime $updatedAt
  223.      *
  224.      * @return Settings
  225.      */
  226.     public function setUpdatedAt($updatedAt)
  227.     {
  228.         $this->updatedAt $updatedAt;
  229.         return $this;
  230.     }
  231.     public function serialize(string $baseUrl null)
  232.     {
  233.         $value null;
  234.         switch ($this->type) {
  235.             case SettingType::FILE:
  236.                 $filePath = (string) $this->value;
  237.                 if ($baseUrl !== null) {
  238.                     $filePath rtrim($baseUrl'/') . '/' ltrim($filePath'/');
  239.                 }
  240.                 $value $filePath;
  241.                 break;
  242.             default:
  243.                 $value = (string) $this->value;
  244.                 break;
  245.         }
  246.         return [
  247.             'id' => $this->getId(),
  248.             'createdAt' => $this->getCreatedAt(),
  249.             'updatedAt' => $this->getUpdatedAt(),
  250.             'name' => $this->getName(),
  251.             'lang' => $this->getLang(),
  252.             'type' => $this->getType()->name,
  253.             'value'   => $value,
  254.         ];
  255.     }
  256. }