<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use App\Repository\BookRepository;
use DateTime;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\PersistentCollection;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=BookRepository::class)
* @ORM\HasLifecycleCallbacks()
*/
// #[ApiResource(mercure: true, normalizationContext: ['groups' => ['book:details']])]
#[ApiResource(mercure: true, security: "is_granted('ROLE_ADMIN') or is_granted('ROLE_USER')")]
#[ApiFilter(OrderFilter::class)]
class Book extends GeneralSuperClass
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="SEQUENCE")
* @Groups({"book:details", "book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public $id;
/**
* @ORM\Column(type="string", nullable=true)
* @Groups({"book:details", "book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public string|null $name;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"book:details", "book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public DateTime|null $active_from;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"book:details", "book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public DateTime|null $active_to;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public int|null $serial_nr_from;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public int|null $serial_nr_to;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
#[ApiFilter(SearchFilter::class)]
public string|null $pic;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"book:details", "bgc:details", "golfclub:details"})
*/
#[ApiFilter(SearchFilter::class)]
public string|null $status;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"book:details", "bgc:details"})
*/
#[ApiFilter(SearchFilter::class)]
public int|null $vouchers_cnt;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"book:details", "bgc:details"})
*/
#[ApiFilter(SearchFilter::class)]
public string|null $entry_id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"book:details", "bgc:details"})
*/
#[ApiFilter(SearchFilter::class)]
public string|null $cover_image;
/**
* @ORM\Column(type="json", nullable=true)
* @Groups({"book:details"})
*/
#[ApiFilter(SearchFilter::class)]
public array|null $fields = [];
// /**
// * Many features have one product. This is the owning side.
// * @ORM\OneToMany(targetEntity="App\Entity\BookGolfClub", mappedBy="book")
// * @Groups({"book:details"})
// */
// public PersistentCollection $bookGolfClub;
## /**
## * Inverse Side
## *
## * @ORM\ManyToMany(targetEntity="Golfclub", mappedBy="books", nullable=true)
## */
## public $golfclubs;
}