src/AppBundle/Entity/Componente.php line 18

  1. <?php
  2. namespace AppBundle\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use Symfony\Component\Filesystem\Filesystem;
  5. use Symfony\Component\HttpFoundation\File\File;
  6. use Symfony\Component\HttpFoundation\File\UploadedFile;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. /**
  9.  * Componente.
  10.  *
  11.  * @ORM\Table(name="componente")
  12.  * @ORM\Entity(repositoryClass="AppBundle\Repository\ComponenteRepository")
  13.  * @ORM\HasLifecycleCallbacks()
  14.  */
  15. class Componente
  16. {
  17.     const VISIBILIDAD_TODOS '1';
  18.     const VISIBILIDAD_LOGEADO '2';
  19.     const VISIBILIDAD_NO_LOGEADO '3';
  20.     const VISIBILIDAD_NINGUNO '4';
  21.     const IMAGENES = [
  22.         'materias_primas' => '/images/icons/componentes/materias_primas.svg',
  23.         'fluidos_sanitarios' => '/images/icons/componentes/fluidos_sanitarios.svg',
  24.         'fluidos_industriales' => '/images/icons/componentes/fluidos_industriales.svg',
  25.         'consumibles_industriales' => '/images/icons/componentes/consumibles_industriales.svg',
  26.         'ferreteria' => '/images/icons/componentes/ferreteria.svg',
  27.         'arquitectura' => '/images/icons/componentes/arquitectura_construccion.svg'
  28.     ];
  29.     /**
  30.      * @var int
  31.      *
  32.      * @ORM\Column(name="id", type="string", length=2, options={"fixed" = true})
  33.      * @ORM\Id
  34.      * @ORM\GeneratedValue(strategy="AUTO")
  35.      */
  36.     protected $id;
  37.     /**
  38.      * @var string
  39.      *
  40.      * @ORM\Column(name="descripcion", type="string", length=255)
  41.      * @Assert\NotBlank
  42.      */
  43.     protected $descripcion;
  44.     /**
  45.      * @ORM\Column(name="tipo_id", type="integer")
  46.      */
  47.     protected $tipoId;
  48.     /**
  49.      * @ORM\ManyToOne(targetEntity="ComponenteTipo", inversedBy="componentes")
  50.      * @ORM\JoinColumn(name="tipo_id", referencedColumnName="id")
  51.      */
  52.     protected $tipo;
  53.     /**
  54.      * @var int
  55.      *
  56.      * @ORM\Column(name="orden", type="integer")
  57.      */
  58.     protected $orden;
  59.     /**
  60.      * @var int
  61.      *
  62.      * @ORM\Column(name="visibilidad", type="integer")
  63.      */
  64.     protected $visibilidad;
  65.     /**
  66.      * @var string
  67.      *
  68.      * @ORM\Column(name="configuracion", type="string")
  69.      */
  70.     protected $configuracion;
  71.     /**
  72.      * @var boolean
  73.      *
  74.      * @ORM\Column(name="fullWidth", type="boolean")
  75.      */
  76.     protected $fullWidth 0;
  77.     public $formulario;
  78.     /**
  79.      * Solo para los tipoId = 3 (bloque banner)
  80.      */
  81.     protected $idBloqueBanner;
  82.     /**
  83.      * @var boolean
  84.      *
  85.      * @ORM\Column(name="is_mobile", type="boolean")
  86.      */
  87.     protected $isMobile;
  88.     protected $data null;
  89.     /**
  90.      * @ORM\OneToMany(targetEntity="ComponentePais", mappedBy="componente", cascade={"all"}, orphanRemoval=true, fetch="EAGER"))
  91.      */
  92.     protected $paises;
  93.     public function __construct()
  94.     {
  95.         $this->formulario = array();
  96.     }
  97.     /**
  98.      * Get the value of id
  99.      *
  100.      * @return  int
  101.      */
  102.     public function getId()
  103.     {
  104.         return $this->id;
  105.     }
  106.     /**
  107.      * Set the value of id
  108.      *
  109.      * @param  int  $id
  110.      *
  111.      * @return  self
  112.      */
  113.     public function setId($id)
  114.     {
  115.         $this->id $id;
  116.         return $this;
  117.     }
  118.     /**
  119.      * Get the value of orden
  120.      *
  121.      * @return  int
  122.      */
  123.     public function getOrden()
  124.     {
  125.         return $this->orden;
  126.     }
  127.     /**
  128.      * Set the value of orden
  129.      *
  130.      * @param  int  $orden
  131.      *
  132.      * @return  self
  133.      */
  134.     public function setOrden($orden)
  135.     {
  136.         $this->orden $orden;
  137.         return $this;
  138.     }
  139.     /**
  140.      * Get the value of visibilidad
  141.      *
  142.      * @return  int
  143.      */
  144.     public function getVisibilidad()
  145.     {
  146.         return $this->visibilidad;
  147.     }
  148.     /**
  149.      * Set the value of visibilidad
  150.      *
  151.      * @param  int  $visibilidad
  152.      *
  153.      * @return  self
  154.      */
  155.     public function setVisibilidad($visibilidad)
  156.     {
  157.         $this->visibilidad $visibilidad;
  158.         return $this;
  159.     }
  160.     /**
  161.      * Get the value of configuracion
  162.      *
  163.      * @return  string
  164.      */
  165.     public function getConfiguracion()
  166.     {
  167.         return $this->configuracion;
  168.     }
  169.     /**
  170.      * Set the value of configuracion
  171.      *
  172.      * @param  string  $configuracion
  173.      *
  174.      * @return  self
  175.      */
  176.     public function setConfiguracion($configuracion)
  177.     {
  178.         $this->configuracion $configuracion;
  179.         return $this;
  180.     }
  181.     /**
  182.      * Get the value of tipo
  183.      */
  184.     public function getTipo()
  185.     {
  186.         return $this->tipo;
  187.     }
  188.     /**
  189.      * Set the value of tipo
  190.      *
  191.      * @return  self
  192.      */
  193.     public function setTipo($tipo)
  194.     {
  195.         $this->tipo $tipo;
  196.         return $this;
  197.     }
  198.     /**
  199.      * Get the value of descripcion
  200.      *
  201.      * @return  string
  202.      */ 
  203.     public function getDescripcion()
  204.     {
  205.         return $this->descripcion;
  206.     }
  207.     /**
  208.      * Set the value of descripcion
  209.      *
  210.      * @param  string  $descripcion
  211.      *
  212.      * @return  self
  213.      */ 
  214.     public function setDescripcion($descripcion)
  215.     {
  216.         $this->descripcion $descripcion;
  217.         return $this;
  218.     }
  219.     
  220.     /**
  221.      * Get the value of tipoId
  222.      */ 
  223.     public function getTipoId()
  224.     {
  225.         return $this->tipoId;
  226.     }
  227.     /**
  228.      * Set the value of tipoId
  229.      *
  230.      * @return  self
  231.      */ 
  232.     public function setTipoId($tipoId)
  233.     {
  234.         $this->tipoId $tipoId;
  235.         return $this;
  236.     }
  237.         /**
  238.      * Get the value of idBloqueBanner
  239.      */ 
  240.     public function getIdBloqueBanner()
  241.     {
  242.         return $this->idBloqueBanner;
  243.     }
  244.     /**
  245.      * Set the value of idBloqueBanner
  246.      *
  247.      * @return  self
  248.      */ 
  249.     public function setIdBloqueBanner($idBloqueBanner)
  250.     {
  251.         $this->idBloqueBanner $idBloqueBanner;
  252.         return $this;
  253.     }
  254.     public function mutar($clase)
  255.     {
  256.         switch ($clase) {
  257.             case 'ComponenteCarouselType':
  258.                 return $this->_toComponenteCarousel();
  259.             case 'ComponenteCatalogoType':
  260.                 return $this->_toComponenteCatalogo();
  261.             case 'ComponenteBannerType':
  262.                 return $this->_toComponenteBloqueBanner();
  263.             case 'ComponenteCrossSellingType':
  264.                 return $this->_toComponenteCrossSelling();
  265.             default:
  266.                 return $this;
  267.         }
  268.     }
  269.     public function _toComponenteCarousel()
  270.     {
  271.         $componente = new ComponenteCarousel(); 
  272.         $configuracion json_decode($this->configuracion);
  273.         $componente
  274.             ->setId($this->id)
  275.             ->setOrden($this->orden)
  276.             ->setVisibilidad($this->visibilidad)
  277.             ->setFullWidth($this->fullWidth)
  278.             ->setDescripcion($this->descripcion)
  279.             ->setTipoId(ComponenteTipo::OPTIONS['carousel']['id'])
  280.             ->setTipo($this->tipo)
  281.             ->setTitulo($configuracion->titulo??'')
  282.             ->setConfiguracion(json_encode($configuracion))
  283.             // ->setPaises($this->paises)
  284.             ;
  285.         if(!empty($configuracion->items)){
  286.             foreach($configuracion->items as $item) {
  287.                 $componenteImagen = new ComponenteItem();
  288.                 $componenteImagen->setFechaDesde(new \DateTime($item->fecha_desde));
  289.                 $componenteImagen->setFechaHasta(new \DateTime($item->fecha_hasta));
  290.                 $componenteImagen->setNombreImagen(basename($item->imagen));
  291.                 $componenteImagen->setUrl($item->url);
  292.                 $componenteImagen->setTextoAnalitycs($item->textoAnalitycs ?? '');
  293.                 $componente->addItem($componenteImagen);
  294.             }
  295.         }
  296.         return $componente;
  297.     }
  298.     public function _toComponenteCatalogo()
  299.     {
  300.         $componente = new ComponenteCatalogo(); 
  301.         
  302.         $configuracion json_decode($this->configuracion);
  303.         $nodos null;
  304.         if(!empty($configuracion->nodos)){
  305.             $nodos $configuracion->nodos;
  306.         }
  307.         $componente
  308.             ->setId($this->id)
  309.             ->setOrden($this->orden)
  310.             ->setVisibilidad($this->visibilidad)
  311.             ->setFullWidth($this->fullWidth)
  312.             ->setDescripcion($this->descripcion)
  313.             ->setTipoId(ComponenteTipo::OPTIONS['categorias']['id'])
  314.             ->setTipo($this->tipo)
  315.             ->setTitulo($configuracion->titulo??null)
  316.             ->setImagenIcono($configuracion->imagen??null)
  317.             ->setNodos($nodos);
  318.         return $componente;
  319.     }
  320.     public function _toComponenteBloqueBanner()
  321.     {
  322.         $componente = new ComponenteBanner(); 
  323.         
  324.         $configuracion json_decode($this->configuracion);
  325.         $bloqueBannerId null;
  326.         if(!empty($configuracion->bloqueBannerId)){
  327.             $bloqueBannerId $configuracion->bloqueBannerId;
  328.         }
  329.         $componente
  330.             ->setId($this->id)
  331.             ->setOrden($this->orden)
  332.             ->setVisibilidad($this->visibilidad)
  333.             ->setFullWidth($this->fullWidth)
  334.             ->setDescripcion($this->descripcion)
  335.             ->setTipoId(ComponenteTipo::OPTIONS['banner']['id'])
  336.             ->setTipo($this->tipo)
  337.             ->setTitulo($configuracion->titulo??null)
  338.             ->setBloqueBannerId($bloqueBannerId)
  339.             ;
  340.         return $componente;
  341.     }
  342.     public function _toComponenteCrossSelling()
  343.     {
  344.         $componente = new ComponenteCrossSelling(); 
  345.         
  346.         $configuracion json_decode($this->configuracion);
  347.         $componente
  348.             ->setId($this->id)
  349.             ->setOrden($this->orden)
  350.             ->setVisibilidad($this->visibilidad)
  351.             ->setFullWidth($this->fullWidth)
  352.             ->setDescripcion($this->descripcion)
  353.             ->setTipoId(ComponenteTipo::OPTIONS['cross-selling']['id'])
  354.             ->setTipo($this->tipo)
  355.             ->setTitulo($configuracion->titulo??null)
  356.             ;
  357.         return $componente;
  358.     }
  359.     /**
  360.      * Get the value of fullWidth
  361.      *
  362.      * @return  boolean
  363.      */ 
  364.     public function getFullWidth()
  365.     {
  366.         return $this->fullWidth;
  367.     }
  368.     /**
  369.      * Set the value of fullWidth
  370.      *
  371.      * @param  boolean  $fullWidth
  372.      *
  373.      * @return  self
  374.      */ 
  375.     public function setFullWidth($fullWidth)
  376.     {
  377.         $this->fullWidth $fullWidth;
  378.         return $this;
  379.     }
  380.     /**
  381.      * Get the value of isMobile
  382.      *
  383.      * @return  boolean
  384.      */ 
  385.     public function isMobile()
  386.     {
  387.         return $this->isMobile;
  388.     }
  389.     /**
  390.      * Set the value of isMobile
  391.      *
  392.      * @param  boolean  $isMobile
  393.      *
  394.      * @return  self
  395.      */ 
  396.     public function setMobile($isMobile)
  397.     {
  398.         $this->isMobile $isMobile;
  399.         return $this;
  400.     }
  401.     /**
  402.      * Get the value of paises
  403.      */ 
  404.     public function getPaises()
  405.     {
  406.         return $this->paises;
  407.     }
  408.     /**
  409.      * Set the value of paises
  410.      *
  411.      * @return  self
  412.      */ 
  413.     public function setPaises($paises)
  414.     {
  415.         $this->paises $paises;
  416.         return $this;
  417.     }
  418.     /**
  419.      * * De vuelve la data del Componente.
  420.      * @return array
  421.      */
  422.     public function getData(): array
  423.     {
  424.         return $this->data;
  425.     }
  426.     /**
  427.      * * Guarda la data del Componente.
  428.      * @param ?array $valor
  429.      * @return self
  430.      */
  431.     public function setData(?array $valor): self
  432.     {
  433.         $this->data $valor;
  434.         return $this;
  435.     }
  436.     /**
  437.      * * De vuelve la entidad en formato array.
  438.      * @return array
  439.      */
  440.     public function _toArray(): array
  441.     {
  442.         $response = [
  443.             // 
  444.         ];
  445.         $response['data'] = $this->getData();
  446.         $response['fullWidth'] = $this->getFullWidth();
  447.         $response['id'] = $this->getId();
  448.         $response['isMobile'] = $this->isMobile();
  449.         $response['tipo'] = $this->getTipo()->_toArray();
  450.         return $response;
  451.     }
  452. }