src/Entity/Review.php line 37

  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\GetCollection;
  5. use ApiPlatform\Metadata\Post;
  6. use App\Controller\Api\Controller\Course\Review\CourseReviewController;
  7. use App\Controller\Api\Controller\Course\Review\PostReviewController;
  8. use App\Repository\ReviewRepository;
  9. use Doctrine\DBAL\Types\Types;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use Symfony\Component\Serializer\Annotation\Groups;
  12. #[ORM\Entity(repositoryClassReviewRepository::class)]
  13. #[ApiResource(
  14.     operations: [
  15.         new GetCollection(),
  16.         new GetCollection(
  17.             uriTemplate'review/{id}/course',
  18.             controllerCourseReviewController::class,
  19.             readfalse,
  20.         ),
  21.         new Post(
  22.             uriTemplate'review/{id}/new',
  23.             controllerPostReviewController::class,
  24.             openapiContext: [
  25.                 'security' => [['bearerAuth' => []]],
  26.                 'description' => "Cette route permet de poster une review, l'élève doit être connecté et l'id attendu sur l'url represente le cours <br>Rating represente la note et message est le commetaire redigé par l'élève"
  27.             ]
  28.         ),
  29.     ],
  30.     normalizationContext: ['groups' => ['read:review:collection']],
  31.     denormalizationContext: ['groups' => ['post:review:item']],
  32. )]
  33. class Review
  34. {
  35.     #[ORM\Id]
  36.     #[ORM\GeneratedValue]
  37.     #[ORM\Column]
  38.     #[Groups(['read:course:item''read:review:collection'])]
  39.     private ?int $id null;
  40.     #[ORM\ManyToOne(inversedBy'reviews')]
  41.     #[ORM\JoinColumn(nullablefalse)]
  42.     private ?Cours $cours null;
  43.     #[ORM\ManyToOne(inversedBy'reviews')]
  44.     private ?Eleve $eleve null;
  45.     #[ORM\Column(typeTypes::SMALLINT)]
  46.     #[Groups(['read:course:item''read:review:collection''post:review:item'])]
  47.     private ?int $rating null;
  48.     #[ORM\Column]
  49.     #[Groups(['read:course:item''read:review:collection'])]
  50.     private ?\DateTimeImmutable $createdAt null;
  51.     #[ORM\Column(typeTypes::TEXT)]
  52.     #[Groups(['read:course:item''read:review:collection''post:review:item'])]
  53.     private ?string $message null;
  54.     public function __construct()
  55.     {
  56.         $this->createdAt = new \DateTimeImmutable();
  57.     }
  58.     public function getId(): ?int
  59.     {
  60.         return $this->id;
  61.     }
  62.     public function getCours(): ?Cours
  63.     {
  64.         return $this->cours;
  65.     }
  66.     public function setCours(?Cours $cours): self
  67.     {
  68.         $this->cours $cours;
  69.         return $this;
  70.     }
  71.     public function getEleve(): ?Eleve
  72.     {
  73.         return $this->eleve;
  74.     }
  75.     public function setEleve(?Eleve $eleve): self
  76.     {
  77.         $this->eleve $eleve;
  78.         return $this;
  79.     }
  80.     public function getRating(): ?int
  81.     {
  82.         return $this->rating;
  83.     }
  84.     public function setRating(int $rating): self
  85.     {
  86.         $this->rating $rating;
  87.         return $this;
  88.     }
  89.     public function getCreatedAt(): ?\DateTimeImmutable
  90.     {
  91.         return $this->createdAt;
  92.     }
  93.     public function setCreatedAt(\DateTimeImmutable $createdAt): self
  94.     {
  95.         $this->createdAt $createdAt;
  96.         return $this;
  97.     }
  98.     public function getMessage(): ?string
  99.     {
  100.         return $this->message;
  101.     }
  102.     public function setMessage(string $message): self
  103.     {
  104.         $this->message $message;
  105.         return $this;
  106.     }
  107. }