src/AppBundle/Entity/Lista.php line 17

  1. <?php
  2. namespace AppBundle\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use \AppBundle\Entity\Usuario;
  5. use \AppBundle\Entity\Empresa;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. /**
  8.  * Lista
  9.  *
  10.  * @ORM\Table(name="lista")
  11.  * @ORM\Entity(repositoryClass="AppBundle\Repository\ListaRepository")
  12.  * @ORM\HasLifecycleCallbacks()
  13.  */
  14. class Lista
  15. {
  16.     CONST TIPO_FAMIQ 1;
  17.     CONST TIPO_USUARIO 2;
  18.     /**
  19.      * @var int
  20.      *
  21.      * @ORM\Column(name="id", type="integer")
  22.      * @ORM\Id
  23.      * @ORM\GeneratedValue(strategy="AUTO")
  24.      */
  25.     private $id;
  26.     /**
  27.      * @var string
  28.      *
  29.      * @ORM\Column(name="nombre", type="string")
  30.      */
  31.     private $nombre;
  32.     /**
  33.      * @var string
  34.      *
  35.      * @ORM\Column(name="descripcion", type="string", nullable=true)
  36.      */
  37.     private $descripcion;
  38.     /**
  39.      * @ORM\ManyToOne(targetEntity="Usuario")
  40.      * @ORM\JoinColumn(name="usuario_id", referencedColumnName="id")
  41.      */
  42.     private $usuario;
  43.     /**
  44.      * @ORM\ManyToOne(targetEntity="Empresa")
  45.      * @ORM\JoinColumn(name="empresa_id", referencedColumnName="id")
  46.      */
  47.     private $empresa;
  48.     /**
  49.      * @var \DateTime
  50.      *
  51.      * @ORM\Column(name="fecha_creacion", type="datetime")
  52.      */
  53.     private $fechaCreacion;
  54.     /**
  55.      * @var \DateTime
  56.      *
  57.      * @ORM\Column(name="fecha_modificacion", type="datetime")
  58.      */
  59.     private $fechaModificacion;
  60.     /**
  61.      * @var string
  62.      *
  63.      * @ORM\Column(name="tipo", type="string")
  64.      */
  65.     private $tipo;
  66.     /**
  67.      * @var bool
  68.      *
  69.      * @ORM\Column(name="predeterminada", type="boolean")
  70.      */
  71.     private $predeterminada false;
  72.     /**
  73.      * @ORM\OneToMany(targetEntity="ListaProducto", mappedBy="lista")
  74.      */
  75.     protected $listaProductos;
  76.     public function __construct()
  77.     {
  78.         $this->listaProductos = new ArrayCollection();
  79.     }
  80.     /**
  81.      * Get id
  82.      *
  83.      * @return int
  84.      */
  85.     public function getId()
  86.     {
  87.         return $this->id;
  88.     }
  89.     /**
  90.      * Set nombre
  91.      *
  92.      * @return Lista
  93.      */
  94.     public function setNombre($nombre)
  95.     {
  96.         $this->nombre $nombre;
  97.         return $this;
  98.     }
  99.     /**
  100.      * Get nombre
  101.      *
  102.      * @return string
  103.      */
  104.     public function getNombre()
  105.     {
  106.         return $this->nombre;
  107.     }
  108.     /**
  109.      * Set descripcion
  110.      *
  111.      * @return Lista
  112.      */
  113.     public function setDescripcion($descripcion)
  114.     {
  115.         $this->descripcion $descripcion;
  116.         return $this;
  117.     }
  118.     /**
  119.      * Get descripcion
  120.      *
  121.      * @return string
  122.      */
  123.     public function getDescripcion()
  124.     {
  125.         return $this->descripcion;
  126.     }
  127.     /**
  128.      * Set Usuario
  129.      *
  130.      * @param \AppBundle\Entity\Usuario $usuario
  131.      *
  132.      * @return Lista
  133.      */
  134.     public function setUsuario(Usuario $usuario)
  135.     {
  136.         $this->usuario $usuario;
  137.         return $this;
  138.     }
  139.     /**
  140.      * Get Usuario.
  141.      *
  142.      * @return \AppBundle\Entity\Usuario
  143.      */
  144.     public function getUsuario()
  145.     {
  146.         return $this->usuario;
  147.     }
  148.     /**
  149.      * Set Empresa
  150.      *
  151.      * @param \AppBundle\Entity\Empresa $empresa
  152.      *
  153.      * @return Lista
  154.      */
  155.     public function setEmpresa(Empresa $empresa)
  156.     {
  157.         $this->empresa $empresa;
  158.         return $this;
  159.     }
  160.     /**
  161.      * Get Empresa.
  162.      *
  163.      * @return \AppBundle\Entity\Empresa
  164.      */
  165.     public function getEmpresa()
  166.     {
  167.         return $this->empresa;
  168.     }
  169.     /**
  170.      * Set tipo
  171.      *
  172.      * @return Lista
  173.      */
  174.     public function setTipo($tipo)
  175.     {
  176.         $this->tipo $tipo;
  177.         return $this;
  178.     }
  179.     /**
  180.      * Get tipo
  181.      *
  182.      * @return string
  183.      */
  184.     public function getTipo()
  185.     {
  186.         return $this->tipo;
  187.     }
  188.     /**
  189.      * Set fecha modificacion
  190.      * 
  191.      * @ORM\PrePersist
  192.      * 
  193.      * @return Lista
  194.      */
  195.     public function setFechaCreacion()
  196.     {
  197.         $this->fechaCreacion = new \DateTime();
  198.         return $this;
  199.     }
  200.     /**
  201.      * Get fecha creacion.
  202.      *
  203.      * @return \DateTime
  204.      */
  205.     public function getFechaCreacion()
  206.     {
  207.         return $this->fechaCreacion;
  208.     }
  209.     /**
  210.      * Set fecha modificacion
  211.      * 
  212.      * @ORM\PreUpdate
  213.      * @ORM\PrePersist
  214.      * 
  215.      * @return Lista
  216.      */
  217.     public function setFechaModificacion()
  218.     {
  219.         $this->fechaModificacion = new \DateTime();
  220.         return $this;
  221.     }
  222.     /**
  223.      * Get fecha modificacion.
  224.      * 
  225.      * @return \DateTime
  226.      */
  227.     public function getFechaModificacion()
  228.     {
  229.         return $this->fechaModificacion;
  230.     }
  231.     /**
  232.      * Set predeterminada
  233.      *
  234.      * @return Lista
  235.      */
  236.     public function setPredeterminada($bool)
  237.     {
  238.         $this->predeterminada $bool;
  239.         return $this;
  240.     }
  241.     /**
  242.      *
  243.      * @return Boolean
  244.      */
  245.     public function esPredeterminada(){
  246.         return $this->predeterminada;
  247.     }
  248.     public function getInformacion($usuarioId null){
  249.         return [
  250.             'id' => $this->id,
  251.             'title' => $this->nombre,
  252.             'esPredeterminada' => $this->esPredeterminada(),
  253.             'email' => $this->getUsuario()->getId() == $usuarioId && $this->esPredeterminada() ? 'Lista predeterminada' $this->getUsuario()->getEmail(),
  254.             'description' => $this->descripcion,
  255.             'subtitle' => $this->getUsuario()->getId() == $usuarioId && $this->esPredeterminada() ? 'Lista predeterminada' $this->getUsuario()->getName().' '.$this->getUsuario()->getLastname(),
  256.             'cantidad' => $this->cantidadProductos(), 
  257.         ];
  258.     }
  259.     //TODO: Esta función debería reemplazar a la función getInformacion
  260.     public function getInformacionBasica(){
  261.         return [
  262.             'id' => $this->id,
  263.             'nombre' => $this->nombre,
  264.             'esPredeterminada' => $this->esPredeterminada(),
  265.             'email' => $this->getUsuario()->getEmail(),
  266.             'productos' => $this->getArrayIdProductos(),
  267.             'cantidad' => $this->cantidadProductos()
  268.         ];
  269.     }
  270.     public function cantidadProductos(){
  271.         return count($this->listaProductos->toArray());
  272.     }
  273.     public function getArrayIdProductos() {
  274.         $ids = [];
  275.         if(!empty($this->listaProductos)){
  276.             foreach($this->listaProductos as $row) {
  277.                 $productoId $row->getProducto()->getId();
  278.                 if(!in_array($productoId$ids)) {
  279.                     $ids[] = $productoId;
  280.                 }
  281.             }
  282.         }
  283.         return $ids;
  284.     }
  285. }