src/AppBundle/Entity/ComponenteTipo.php line 15

  1. <?php
  2. namespace AppBundle\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. /**
  6.  * Componente.
  7.  *
  8.  * @ORM\Table(name="componente_tipo")
  9.  * @ORM\Entity(repositoryClass="\Doctrine\ORM\EntityRepository")
  10.  * @ORM\HasLifecycleCallbacks()
  11.  */
  12. class ComponenteTipo
  13. {
  14.     const OPTIONS = [
  15.         'banner' => [
  16.             'id' => 3,
  17.             'name' => 'Banner',
  18.             'slug' => 'banner',
  19.         ],
  20.         'carousel' => [
  21.             'id' => 1,
  22.             'name' => 'Carousel',
  23.             'slug' => 'carousel',
  24.         ],
  25.         'categorias' => [
  26.             'id' => 2,
  27.             'name' => 'Categorias',
  28.             'slug' => 'categorias',
  29.         ],
  30.         'cross-selling' => [
  31.             'id' => 4,
  32.             'name' => 'CrossSelling',
  33.             'slug' => 'cross-selling',
  34.         ],
  35.     ];
  36.     /**
  37.      * @var int
  38.      *
  39.      * @ORM\Column(name="id", type="string", length=2, options={"fixed" = true})
  40.      * @ORM\Id
  41.      */
  42.     private $id;
  43.     /**
  44.      * @var string
  45.      *
  46.      * @ORM\Column(name="texto", type="string")
  47.      */
  48.     private $texto;
  49.     /**
  50.      * @var string
  51.      *
  52.      * @ORM\Column(name="formulario", type="string")
  53.      */
  54.     private $formulario;
  55.     /**
  56.      * @ORM\OneToMany(targetEntity="Componente", mappedBy="tipo")
  57.      */
  58.     protected $componentes;
  59.     public function __construct()
  60.     {
  61.         $this->componentes = new ArrayCollection();
  62.     }
  63.     /**
  64.      * Get the value of id
  65.      *
  66.      * @return  int
  67.      */
  68.     public function getId()
  69.     {
  70.         return $this->id;
  71.     }
  72.     /**
  73.      * Set the value of id
  74.      *
  75.      * @param  int  $id
  76.      *
  77.      * @return  self
  78.      */
  79.     public function setId(int $id)
  80.     {
  81.         $this->id $id;
  82.         return $this;
  83.     }
  84.     /**
  85.      * Get the value of texto
  86.      *
  87.      * @return  string
  88.      */
  89.     public function getTexto()
  90.     {
  91.         return $this->texto;
  92.     }
  93.     /**
  94.      * Set the value of texto
  95.      *
  96.      * @param  string  $texto
  97.      *
  98.      * @return  self
  99.      */
  100.     public function setTexto(string $texto)
  101.     {
  102.         $this->texto $texto;
  103.         return $this;
  104.     }
  105.     /**
  106.      * Get the value of formulario
  107.      *
  108.      * @return  string
  109.      */
  110.     public function getFormulario()
  111.     {
  112.         return $this->formulario;
  113.     }
  114.     /**
  115.      * Set the value of formulario
  116.      *
  117.      * @param  string  $formulario
  118.      *
  119.      * @return  self
  120.      */
  121.     public function setFormulario(string $formulario)
  122.     {
  123.         $this->formulario $formulario;
  124.         return $this;
  125.     }
  126.     /**
  127.      * Add componente.
  128.      *
  129.      * @param \AppBundle\Entity\Componente $componente
  130.      *
  131.      * @return Caracteristica
  132.      */
  133.     public function addComponentes(Componente $componente)
  134.     {
  135.         $this->componentes[] = $componente;
  136.         return $this;
  137.     }
  138.     /**
  139.      * Remove componentes.
  140.      *
  141.      * @param \AppBundle\Entity\Componente $componente
  142.      */
  143.     public function removeAgrupadores(Componente $componente)
  144.     {
  145.         $this->componentes->removeElement($componente);
  146.     }
  147.     /**
  148.      * Get componentes.
  149.      *
  150.      * @return \Doctrine\Common\Collections\Collection
  151.      */
  152.     public function getAgrupadores()
  153.     {
  154.         return $this->componentes;
  155.     }
  156.     /**
  157.      * * De vuelve el nombre de la entidad.
  158.      * @return string
  159.      */
  160.     public function getName(): string
  161.     {
  162.         return self::fromOptions($this->getId())['name'];
  163.     }
  164.     /**
  165.      * * De vuelve la entidad en formato array.
  166.      * @return array
  167.      */
  168.     public function _toArray(): array
  169.     {
  170.         $response = [
  171.             // 
  172.         ];
  173.         $response['id'] = $this->getId();
  174.         $response['name'] = $this->getName();
  175.         return $response;
  176.     }
  177.     /**
  178.      * * De vuelve el tipo de Componente desde las opciones.
  179.      * @param int|string $dato
  180.      * @return array|null
  181.      */
  182.     static public function fromOptions(int|string $dato): ?array
  183.     {
  184.         foreach (self::OPTIONS as $slug => $tipo) {
  185.             if (gettype($dato) == 'string') {
  186.                 if ($slug == $dato) {
  187.                     return $tipo;
  188.                 }
  189.                 continue;
  190.             }
  191.             if ($tipo['id'] == $dato) {
  192.                 return $tipo;
  193.             }
  194.         }
  195.         return null;
  196.     }
  197. }