<?php
namespace App\Entity;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Post;
use ApiPlatform\Metadata\Put;
use App\Controller\Action\SiteQuestionsWriteController;
use App\Repository\SiteQuestionsRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
#[ORM\Entity(repositoryClass: SiteQuestionsRepository::class)]
#[ApiResource(
operations: [
new GetCollection(),
new Post(
uriTemplate: 'site_questions/save_questions',
controller: SiteQuestionsWriteController::class,
read: false,
write: false,
name: '_api_/site_questions/save_questions'
),
new Put()
],
normalizationContext: ['groups' => ['siteQuestion.get', 'question.get']],
denormalizationContext: ['groups' => ['siteQuestion.write']]
)]
#[ApiFilter(
SearchFilter::class,
properties: [
'user.id' => 'exact',
]
)]
class SiteQuestions
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['siteQuestion.get', 'question.get'])]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'siteQuestions')]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['siteQuestion.get', 'siteQuestion.write', 'question.get'])]
private ?Site $site = null;
#[ORM\ManyToOne(inversedBy: 'siteQuestions')]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['siteQuestion.get', 'siteQuestion.write', 'question.get'])]
private ?Questions $questions = null;
#[ORM\ManyToOne(inversedBy: 'siteQuestions')]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['siteQuestion.get', 'siteQuestion.write'])]
private ?User $user = null;
#[ORM\Column(nullable: true)]
#[Groups(['siteQuestion.get', 'siteQuestion.write', 'question.get'])]
private ?bool $response = null;
#[ORM\Column(nullable: true)]
#[Groups(['siteQuestion.get', 'siteQuestion.write'])]
private ?\DateTimeImmutable $createdAt = null;
#[ORM\Column(nullable: true)]
#[Groups(['siteQuestion.get', 'siteQuestion.write'])]
private ?\DateTimeImmutable $updatedAt = null;
public function __construct()
{
$this->updatedAt = new \DateTimeImmutable();
}
public function getId(): ?int
{
return $this->id;
}
public function getSite(): ?Site
{
return $this->site;
}
public function setSite(?Site $site): self
{
$this->site = $site;
return $this;
}
public function getQuestions(): ?Questions
{
return $this->questions;
}
public function setQuestions(?Questions $questions): self
{
$this->questions = $questions;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function isResponse(): ?bool
{
return $this->response;
}
public function setResponse(?bool $response): self
{
$this->response = $response;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeImmutable $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeImmutable
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeImmutable $updatedAt): self
{
$this->updatedAt = new \DateTimeImmutable();;
return $this;
}
}