src/Domain/Entity/Comment/PointOfInterestComment.php line 75

Open in your IDE?
  1. <?php
  2. namespace App\Domain\Entity\Comment;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\Get;
  5. use ApiPlatform\Metadata\GetCollection;
  6. use ApiPlatform\Metadata\Link;
  7. use App\Application\Controller\Api\Comment\TranslateCommentAction;
  8. use App\Domain\Entity\Comment;
  9. use App\Domain\Entity\Locale;
  10. use App\Domain\Entity\Person;
  11. use App\Domain\Entity\PointOfInterest;
  12. use DateTime;
  13. /**
  14.  * Class Comment
  15.  *
  16.  * @package App\Domain\Entity
  17.  */
  18. #[ApiResource(
  19.     operations: [
  20.         new GetCollection(
  21.             filters: [
  22.                 'comment.search_filter',
  23.                 'comment.exists_filter',
  24.                 'soft_delete_filter',
  25.                 'comment.order_filter',
  26.                 'comment.null_filter',
  27.             ],
  28.         ),
  29.         new GetCollection(
  30.             uriTemplate'/point_of_interest_comments/list',
  31.             filters: [
  32.                 'comment.search_filter',
  33.                 'comment.exists_filter',
  34.                 'soft_delete_filter',
  35.                 'comment.order_filter',
  36.                 'comment.null_filter',
  37.             ],
  38.             normalizationContext: ['groups' => ['comment_read_list']],
  39.         ),
  40.         new Get(
  41.             uriTemplate'/point_of_interest_comments/{uuid}/translation',
  42.             controllerTranslateCommentAction::class,
  43.             name'translate',
  44.         )
  45.     ],
  46.     normalizationContext: ['groups' => ['comment_read']],
  47.     denormalizationContext: ['groups' => ['comment_write']],
  48.     filters: ['translation.groups'],
  49.     order: ['createdAt' => 'DESC'],
  50. )]
  51. #[ApiResource(
  52.     uriTemplate'/point_of_interests/{uuid}/comments',
  53.     operations: [
  54.         new GetCollection(
  55.             filters: [
  56.                 'comment.search_filter',
  57.                 'comment.exists_filter',
  58.                 'soft_delete_filter',
  59.                 'comment.order_filter',
  60.                 'comment.null_filter',
  61.             ],
  62.         ),
  63.     ],
  64.     uriVariables: [
  65.         'uuid' => new Link(toProperty'pointOfInterest'fromClassPointOfInterest::class),
  66.     ],
  67.     normalizationContext: ['groups' => ['comment_read']],
  68.     denormalizationContext: ['groups' => ['comment_write']],
  69.     filters: ['translation.groups'],
  70.     order: ['createdAt' => 'DESC'],
  71. )]
  72. class PointOfInterestComment extends Comment
  73. {
  74.     /**
  75.      * @param Person          $author
  76.      * @param PointOfInterest $pointOfInterest
  77.      * @param Locale|null     $authorLocale
  78.      * @param string          $status
  79.      * @param int             $notation
  80.      * @param Comment|null    $parent
  81.      * @param DateTime|null   $zhistUpdate
  82.      */
  83.     public function __construct(
  84.         public Person $author,
  85.         public PointOfInterest $pointOfInterest,
  86.         public Locale null $authorLocale null,
  87.         public string $status self::COMMENT_NEW,
  88.         public int $notation 0,
  89.         public Comment null $parent null,
  90.         public ?DateTime $zhistUpdate null,
  91.         public ?DateTime $lastUserUpdate null,
  92.     ) {
  93.         parent::__construct(
  94.             author$author,
  95.             authorLocale$authorLocale,
  96.             status$status,
  97.             notation$notation,
  98.             parent$parent,
  99.             zhistUpdate$zhistUpdate,
  100.             lastUserUpdate$lastUserUpdate,
  101.         );
  102.     }
  103. }