src/Entity/ScheduleRecipients.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  6. use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
  7. use App\Repository\ScheduleRecipientsRepository;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Symfony\Component\Serializer\Annotation\Groups;
  10. /**
  11.  * @ORM\Entity(repositoryClass=ScheduleRecipientsRepository::class)
  12.  * @ORM\HasLifecycleCallbacks()
  13.  */
  14. #[ApiResource(
  15.     normalizationContext: ['groups' => ['recipient:read']],
  16.     denormalizationContext: ['allow_extra_attributes' => true'groups' => ['recipient:write']],
  17.     attributes: ['security' => "is_granted('ROLE_USER')"],
  18.     collectionOperations: [
  19.         'get',
  20.         'post' => ['security' => "is_granted('ROLE_ADMIN')"],
  21.     ],
  22.     itemOperations: [
  23.         'get',
  24.         'put' => ['security' => "is_granted('ROLE_ADMIN') or object.owner == user"],
  25.     ],
  26. )]
  27. #[ApiFilter(SearchFilter::class, properties: ['id''user.email' => 'partial'])]
  28. #[ApiFilter(PropertyFilter::class)]
  29. class ScheduleRecipients
  30. {
  31.     /**
  32.      * @ORM\Id
  33.      * @ORM\GeneratedValue
  34.      * @ORM\Column(type="integer")
  35.      *
  36.      */
  37.     private $id;
  38.     /**
  39.      * @ORM\ManyToOne(targetEntity=CampaignSchedule::class, inversedBy="scheduleRecipients")
  40.      * @ORM\JoinColumn(nullable=false)
  41.      * @Groups({"recipient:read","recipient:write"})
  42.      */
  43.     private $campaignSchedule;
  44.     /**
  45.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="scheduleRecipients")
  46.      * @ORM\JoinColumn(nullable=false)
  47.      * @Groups({"recipient:read","recipient:write"})
  48.      */
  49.     private $user;
  50.     /**
  51.      * @ORM\Column(type="string", length=255)
  52.      * @Groups({"recipient:read","recipient:write"})
  53.      */
  54.     private $email;
  55.     /**
  56.      * @ORM\Column(type="string", length=255)
  57.      * @Groups({"recipient:read","recipient:write"})
  58.      */
  59.     private $name;
  60.     /**
  61.      * @ORM\Column(type="boolean")
  62.      * @Groups({"recipient:read","recipient:write"})
  63.      */
  64.     private $isDelivered;
  65.     public function getId(): ?int
  66.     {
  67.         return $this->id;
  68.     }
  69.     public function getCampaignSchedule(): ?CampaignSchedule
  70.     {
  71.         return $this->campaignSchedule;
  72.     }
  73.     public function setCampaignSchedule(?CampaignSchedule $campaignSchedule): self
  74.     {
  75.         $this->campaignSchedule $campaignSchedule;
  76.         return $this;
  77.     }
  78.     public function getUser(): ?User
  79.     {
  80.         return $this->user;
  81.     }
  82.     public function setUser(?User $user): self
  83.     {
  84.         $this->user $user;
  85.         return $this;
  86.     }
  87.     public function getEmail(): ?string
  88.     {
  89.         return $this->email;
  90.     }
  91.     public function setEmail(string $email): self
  92.     {
  93.         $this->email $email;
  94.         return $this;
  95.     }
  96.     public function getName(): ?string
  97.     {
  98.         return $this->name;
  99.     }
  100.     public function setName(string $name): self
  101.     {
  102.         $this->name $name;
  103.         return $this;
  104.     }
  105.     public function getIsDelivered(): ?bool
  106.     {
  107.         return $this->isDelivered;
  108.     }
  109.     public function setIsDelivered(bool $isDelivered): self
  110.     {
  111.         $this->isDelivered $isDelivered;
  112.         return $this;
  113.     }
  114.     #[Groups(['recipient:read'])]
  115.     public function getRecipientNameEmail(): ?string
  116.     {
  117.         return $this->user->getLastName() . ' ' $this->user->getFirstName() . '(' $this->user->getEmail() . ')';
  118.     }
  119. }