src/AppBundle/Entity/Lista.php line 17
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use \AppBundle\Entity\Usuario;
use \AppBundle\Entity\Empresa;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Lista
*
* @ORM\Table(name="lista")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ListaRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Lista
{
CONST TIPO_FAMIQ = 1;
CONST TIPO_USUARIO = 2;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nombre", type="string")
*/
private $nombre;
/**
* @var string
*
* @ORM\Column(name="descripcion", type="string", nullable=true)
*/
private $descripcion;
/**
* @ORM\ManyToOne(targetEntity="Usuario")
* @ORM\JoinColumn(name="usuario_id", referencedColumnName="id")
*/
private $usuario;
/**
* @ORM\ManyToOne(targetEntity="Empresa")
* @ORM\JoinColumn(name="empresa_id", referencedColumnName="id")
*/
private $empresa;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_creacion", type="datetime")
*/
private $fechaCreacion;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_modificacion", type="datetime")
*/
private $fechaModificacion;
/**
* @var string
*
* @ORM\Column(name="tipo", type="string")
*/
private $tipo;
/**
* @var bool
*
* @ORM\Column(name="predeterminada", type="boolean")
*/
private $predeterminada = false;
/**
* @ORM\OneToMany(targetEntity="ListaProducto", mappedBy="lista")
*/
protected $listaProductos;
public function __construct()
{
$this->listaProductos = new ArrayCollection();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set nombre
*
* @return Lista
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Set descripcion
*
* @return Lista
*/
public function setDescripcion($descripcion)
{
$this->descripcion = $descripcion;
return $this;
}
/**
* Get descripcion
*
* @return string
*/
public function getDescripcion()
{
return $this->descripcion;
}
/**
* Set Usuario
*
* @param \AppBundle\Entity\Usuario $usuario
*
* @return Lista
*/
public function setUsuario(Usuario $usuario)
{
$this->usuario = $usuario;
return $this;
}
/**
* Get Usuario.
*
* @return \AppBundle\Entity\Usuario
*/
public function getUsuario()
{
return $this->usuario;
}
/**
* Set Empresa
*
* @param \AppBundle\Entity\Empresa $empresa
*
* @return Lista
*/
public function setEmpresa(Empresa $empresa)
{
$this->empresa = $empresa;
return $this;
}
/**
* Get Empresa.
*
* @return \AppBundle\Entity\Empresa
*/
public function getEmpresa()
{
return $this->empresa;
}
/**
* Set tipo
*
* @return Lista
*/
public function setTipo($tipo)
{
$this->tipo = $tipo;
return $this;
}
/**
* Get tipo
*
* @return string
*/
public function getTipo()
{
return $this->tipo;
}
/**
* Set fecha modificacion
*
* @ORM\PrePersist
*
* @return Lista
*/
public function setFechaCreacion()
{
$this->fechaCreacion = new \DateTime();
return $this;
}
/**
* Get fecha creacion.
*
* @return \DateTime
*/
public function getFechaCreacion()
{
return $this->fechaCreacion;
}
/**
* Set fecha modificacion
*
* @ORM\PreUpdate
* @ORM\PrePersist
*
* @return Lista
*/
public function setFechaModificacion()
{
$this->fechaModificacion = new \DateTime();
return $this;
}
/**
* Get fecha modificacion.
*
* @return \DateTime
*/
public function getFechaModificacion()
{
return $this->fechaModificacion;
}
/**
* Set predeterminada
*
* @return Lista
*/
public function setPredeterminada($bool)
{
$this->predeterminada = $bool;
return $this;
}
/**
*
* @return Boolean
*/
public function esPredeterminada(){
return $this->predeterminada;
}
public function getInformacion($usuarioId = null){
return [
'id' => $this->id,
'title' => $this->nombre,
'esPredeterminada' => $this->esPredeterminada(),
'email' => $this->getUsuario()->getId() == $usuarioId && $this->esPredeterminada() ? 'Lista predeterminada' : $this->getUsuario()->getEmail(),
'description' => $this->descripcion,
'subtitle' => $this->getUsuario()->getId() == $usuarioId && $this->esPredeterminada() ? 'Lista predeterminada' : $this->getUsuario()->getName().' '.$this->getUsuario()->getLastname(),
'cantidad' => $this->cantidadProductos(),
];
}
//TODO: Esta función debería reemplazar a la función getInformacion
public function getInformacionBasica(){
return [
'id' => $this->id,
'nombre' => $this->nombre,
'esPredeterminada' => $this->esPredeterminada(),
'email' => $this->getUsuario()->getEmail(),
'productos' => $this->getArrayIdProductos(),
'cantidad' => $this->cantidadProductos()
];
}
public function cantidadProductos(){
return count($this->listaProductos->toArray());
}
public function getArrayIdProductos() {
$ids = [];
if(!empty($this->listaProductos)){
foreach($this->listaProductos as $row) {
$productoId = $row->getProducto()->getId();
if(!in_array($productoId, $ids)) {
$ids[] = $productoId;
}
}
}
return $ids;
}
}