src/Entity/Channel/Place.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Channel;
  3. use App\Entity\Sync\SyncableInterface;
  4. use App\Repository\Channel\PlaceRepository;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Drosalys\Bundle\ApiBundle\Serializer\Attributes\IdGroups;
  9. use Nellapp\Bundle\SDKBundle\Channel\Entity\Place\PlaceInterface;
  10. use Nellapp\Bundle\SDKBundle\Channel\Entity\Place\PlaceMethodTrait;
  11. use Nellapp\Bundle\SDKBundle\Sync\EntityKeys;
  12. use Symfony\Component\Serializer\Annotation as Serial;
  13. use Symfony\Component\Validator\Constraints as Assert;
  14. #[
  15.     ORM\Entity(repositoryClassPlaceRepository::class),
  16.     ORM\Index(columns: ['label'], flags: ['fulltext']),
  17.     ORM\Table(name'channel_places')
  18. ]
  19. class Place implements PlaceInterfaceSyncableInterface
  20. {
  21.     use PlaceMethodTrait;
  22.     #[ORM\IdORM\GeneratedValueORM\Column(type'integer')]
  23.     #[Serial\Groups(['Sync''Manager'])]
  24.     private ?int $id null;
  25.     #[ORM\Column(type'string'length255)]
  26.     #[
  27.         Assert\NotBlank(message'place.label.NotBlank'),
  28.         Assert\Length(
  29.             min2,
  30.             max255,
  31.             minMessage'place.length.min',
  32.             maxMessage'place.length.max'
  33.         )
  34.     ]
  35.     #[Serial\Groups(['Manager''Sync'])]
  36.     private ?string $label null;
  37.     #[ORM\OneToMany(mappedBy'place'targetEntityRoom::class, cascade: ['persist''remove'])]
  38.     #[IdGroups(['Sync'])]
  39.     private ?Collection $rooms;
  40.     #[ORM\ManyToOne(targetEntityChannel::class)]
  41.     #[ORM\JoinColumn(nullablefalseonDelete'CASCADE')]
  42.     #[IdGroups(['Sync'])]
  43.     private ?Channel $channel null;
  44.     public function __construct()
  45.     {
  46.         $this->rooms = new ArrayCollection();
  47.     }
  48.     public static function getSyncKey(): string
  49.     {
  50.         return EntityKeys::CHANNEL_PLACE;
  51.     }
  52.     public function getSyncDisplayLabel(): string
  53.     {
  54.         return $this->getLabel() ?? '';
  55.     }
  56. }