src/Entity/Participation/Draw.php line 76

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Participation;
  3. use ApiPlatform\Core\Annotation\ApiResource;
  4. use App\Controller\Api\Participation\Draw\GetParticipationDrawsByUser;
  5. use App\Controller\Api\Participation\Draw\GetParticipationDrawsByUserByOperation;
  6. use App\Controller\Api\Participation\Draw\PostParticipationDraw;
  7. use App\Entity\OperationCode\DrawCode;
  8. use App\Repository\Participation\DrawRepository;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\Common\Collections\Collection;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use JMS\Serializer\Annotation as Serializer;
  13. use JMS\Serializer\Annotation\ExclusionPolicy;
  14. use Symfony\Component\Serializer\Annotation\Groups;
  15. use Symfony\Component\Serializer\Annotation\SerializedName;
  16. /**
  17.  * @ORM\Entity(repositoryClass=DrawRepository::class)
  18.  * @ExclusionPolicy("all")
  19.  * @ApiResource(
  20.  *     messenger=true,
  21.  *     shortName="participation-draw",
  22.  *     attributes={
  23.  *          "force_eager"=false,
  24.  *          "normalization_context"={
  25.  *              "groups"={
  26.  *                  "ParticipationDraw:output",
  27.  *                  "ParticipationDraw:io",
  28.  *               },
  29.  *              "enable_max_depth"=true
  30.  *          },
  31.  *          "denormalization_context"={
  32.  *              "groups"={
  33.  *                  "ParticipationDraw:input",
  34.  *                  "ParticipationDraw:io",
  35.  *              },
  36.  *              "enable_max_depth"=true
  37.  *          }
  38.  *      },
  39.  *     collectionOperations={
  40.  *          "get",
  41.  *          "post",
  42.  *          "post-public"={
  43.  *              "method"="POST",
  44.  *              "path"="/public/draw/{operationId}/{userId}/{templateId}",
  45.  *              "controller"=PostParticipationDraw::class,
  46.  *              "access_control"="is_granted('ROLE_PUBLIC')"
  47.  *          },
  48.  *          "get-by-user"={
  49.  *              "method"="GET",
  50.  *              "path"="/participation-draws/user",
  51.  *              "access_control"="is_granted('ROLE_USER')",
  52.  *              "validation_groups"={"get_participation-draws_by_user"},
  53.  *              "controller"=GetParticipationDrawsByUser::class,
  54.  *              "defaults"={"_api_receive"=false},
  55.  *          },
  56.  *          "get-by-user-by-operation"={
  57.  *              "method"="GET",
  58.  *              "path"="/participation-draws/user/operation/{operationId}",
  59.  *              "access_control"="is_granted('ROLE_USER')",
  60.  *              "validation_groups"={"get_participation-draws_by_user"},
  61.  *              "controller"=GetParticipationDrawsByUserByOperation::class,
  62.  *              "defaults"={"_api_receive"=false},
  63.  *          },
  64.  *     },
  65.  *     itemOperations={
  66.  *          "get",
  67.  *          "put"={
  68.  *              "validation_groups"={"Default", "Edit"}
  69.  *          },
  70.  *     },
  71.  * )
  72.  */
  73. class Draw extends Participation
  74. {
  75.     /**
  76.      * @ORM\OneToMany(targetEntity=DrawCode::class, mappedBy="participation")
  77.      * @SerializedName("gift_codes")
  78.      * @Groups({
  79.      *     "Order:output",
  80.      * })
  81.      */
  82.     protected Collection $operationCodes;
  83.     public function __construct()
  84.     {
  85.         parent::__construct();
  86.         $this->operationCodes = new ArrayCollection();
  87.     }
  88.     public function getOperationCodes(): Collection
  89.     {
  90.         return $this->operationCodes;
  91.     }
  92.     public function addOperationCode(DrawCode $operationCode): self
  93.     {
  94.         if (!$this->operationCodes->contains($operationCode)) {
  95.             $this->operationCodes[] = $operationCode;
  96.         }
  97.         return $this;
  98.     }
  99.     public function removeOperationCode(DrawCode $operationCode): self
  100.     {
  101.         $this->operationCodes->removeElement($operationCode);
  102.         return $this;
  103.     }
  104.     /**
  105.      * @Serializer\VirtualProperty
  106.      * @Serializer\Groups({"shannon"})
  107.      * @Serializer\SerializedName("participation_id")
  108.      * @return string
  109.      */
  110.     public function getParticipationId(): string
  111.     {
  112.         return $this->id;
  113.     }
  114.     /**
  115.      * Get opt-in RGPD.
  116.      *
  117.      * @Serializer\VirtualProperty
  118.      * @Serializer\Groups({"shannon"})
  119.      * @Serializer\SerializedName("optin_rgpd")
  120.      * @return int
  121.      */
  122.     public function intOptInRGPD(): int
  123.     {
  124.         return true;
  125.     }
  126.     /**
  127.      * @Serializer\VirtualProperty
  128.      * @Serializer\Groups({"shannon"})
  129.      * @Serializer\SerializedName("action")
  130.      * @return string
  131.      */
  132.     public function getAction(): string
  133.     {
  134.         return 'create';
  135.     }
  136.     /**
  137.      * @Serializer\VirtualProperty
  138.      * @Serializer\Groups({"shannon"})
  139.      * @Serializer\SerializedName("channel")
  140.      * @return string
  141.      */
  142.     public function getChannel(): string
  143.     {
  144.         return 'FW';
  145.     }
  146.     /**
  147.      * @Serializer\VirtualProperty
  148.      * @Serializer\Groups({"shannon"})
  149.      * @Serializer\SerializedName("date_participation")
  150.      * @return string
  151.      */
  152.     public function getDateParticipation(): string
  153.     {
  154.         return $this->getCreatedAt()->format('Y-m-d H:i:s');
  155.     }
  156. }