<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use JsonSerializable;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ApiResource(
* collectionOperations={"get", "post"},
* itemOperations={
* "get"={
* "normalization_context"={"groups"={"point_type:read", "point_type:item:get", "point:read", "point:item:get"}},
* },
* "put",
* },
* normalizationContext={ "groups"={"point_type:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"point_type:write"}, "swagger_definition_name"="Write"},
* attributes={
* "pagination_items_per_page"=50,
* "formats"={"jsonld", "json", "html", "csv"}
* }
* )
* @package App\Entity
*
* @ORM\Entity
* @ORM\Table(name="point_types")
*/
class PointType implements JsonSerializable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"point_type:read", "point:read", "point:item:get"})
*/
private $id;
/**
* @ORM\Column(type="string", length=128, nullable=true)
* @Groups({"point_type:read", "point:read", "point_type:write", "point:item:get"})
*/
private $name;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"point_type:read", "point_type:write"})
*/
private $defaultVisibility;
/**
* @ORM\Column(type="string", length=128, nullable=true)
* @Groups({"point_type:read", "point_type:write"})
*/
private $defaultPointGroup;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Point", mappedBy="pointType", fetch="EXTRA_LAZY", cascade={"persist"})
* @ORM\OrderBy({"name" = "ASC"})
*/
private $points;
public function __construct()
{
$this->points = new ArrayCollection();
}
public function jsonSerialize()
{
return array(
'id'=> $this->id,
'name' => $this->name,
'defaultVisibility' => $this->defaultVisibility,
'defaultPointGroup' => $this->defaultPointGroup,
);
}
/**
* get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* set name
*
* @param string $name
*
* @return PointType
*/
public function setName( string $name )
{
$this->name = $name;
return $this;
}
/**
* get defaultVisibility
*
* @return boolean
*/
public function getDefaultVisibility()
{
return $this->defaultVisibility;
}
/**
* set defaultVisibility
*
* @param boolean $defaultVisibility
*
* @return PointType
*/
public function setDefaultVisibility( $defaultVisibility )
{
$this->defaultVisibility = $defaultVisibility;
return $this;
}
/**
* get defaultPointGroup
*
* @return string
*/
public function getDefaultPointGroup()
{
return $this->defaultPointGroup;
}
/**
* set defaultPointGroup
*
* @param string $defaultPointGroup
*
* @return PointType
*/
public function setDefaultPointGroup( $defaultPointGroup )
{
$this->defaultPointGroup = $defaultPointGroup;
return $this;
}
/**
* get points
*
* @return Collection|Point[]
*/
public function getPoints()
{
return $this->points;
}
public function addPoint(\App\Entity\Point $point)
{
if (!$this->points->contains($point)) {
$this->points[] = $point;
$point->setPointType($this);
}
return $this;
}
public function removePoint(\App\Entity\Point $point)
{
if ($this->points->contains($point)) {
$this->points->removeElement($point);
// set the owning side to null (unless already changed)
if ($point->getPointType() === $this) {
$point->setPointType(null);
}
}
return $this;
}
}