src/Entity/Abonnement.php line 52

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 App\Controller\ControllerGetFactureAcademicien;
  7. use App\Dto\PayementInput;
  8. use App\Dto\PayementOuput;
  9. use App\Repository\AbonnementRepository;
  10. use DateTimeImmutable;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Symfony\Component\Serializer\Annotation\Groups;
  15. #[ORM\Entity(repositoryClassAbonnementRepository::class)]
  16. #[ApiResource(
  17.     normalizationContext:[
  18.         'groups'=>['abonnement:read']
  19.     ],
  20.     denormalizationContext:[
  21.         'groups'=>['abonnement:write']
  22.     ],
  23.     collectionOperations: [
  24.         "get" ,
  25.         "post",
  26.         "payement" => [
  27.             "method" => "POST",
  28.             'path' => '/abonnements/payements',
  29.             "input" =>  PayementInput::class,
  30.             "output" => PayementOuput::class
  31.         ],
  32.     ],
  33.     itemOperations: [
  34.         "get",
  35.         'return_facture_get' => [
  36.             'method' => 'GET',
  37.             'path' => "abonnements/facture/{idacademicien}",
  38.             'controller' => ControllerGetFactureAcademicien::class,
  39.             'read' => false,
  40.             'deserialize' => false
  41.         ],
  42.     ]
  43. )]
  44. #[ApiFilter(SearchFilter::class, properties: [
  45.     'year'=>'exact',
  46.     'academicien'=>'exact',
  47.     ])]
  48. class Abonnement
  49. {
  50.     #[ORM\Id]
  51.     #[ORM\GeneratedValue]
  52.     #[ORM\Column(type'integer')]
  53.     #[Groups(['abonnement:read','abonnement:write','user:read','payement:read'])]
  54.     private $id;
  55.     #[ORM\Column(type'integer'nullabletrue)]
  56.     #[Groups(['abonnement:read','abonnement:write','user:read'])]
  57.     private $month;
  58.     #[ORM\Column(type'integer'nullabletrue)]
  59.     #[Groups(['abonnement:read','abonnement:write','user:read'])]
  60.     private $year;
  61.     #[ORM\OneToMany(mappedBy'abonnement'targetEntityPayment::class, cascade:['persist','remove'])]
  62.     #[Groups(['payement:read','abonnement:read','abonnement:write','user:read'])]
  63.     private $payements;
  64.     #[ORM\ManyToOne(targetEntityUser::class, inversedBy'abonnements')]
  65.     #[Groups(['payement:read','abonnement:read','abonnement:write'])]
  66.     #[ORM\JoinColumn(nullabletrueonDelete'SET NULL')]
  67.     private $academicien;
  68.     #[ORM\Column(type'datetime')]
  69.     private $dateCreated;
  70.     public function __construct()
  71.     {
  72.         $this->payements = new ArrayCollection();
  73.         $this->dateCreated = new DateTimeImmutable();
  74.     }
  75.     public function getId(): ?int
  76.     {
  77.         return $this->id;
  78.     }
  79.     public function getMonth(): ?int
  80.     {
  81.         return $this->month;
  82.     }
  83.     public function setMonth(int $month): self
  84.     {
  85.         $this->month $month;
  86.         return $this;
  87.     }
  88.     public function getYear(): ?int
  89.     {
  90.         return $this->year;
  91.     }
  92.     public function setYear(int $year): self
  93.     {
  94.         $this->year $year;
  95.         return $this;
  96.     }
  97.     /**
  98.      * @return Collection<int, Payment>
  99.      */
  100.     public function getPayements(): Collection
  101.     {
  102.         return $this->payements;
  103.     }
  104.     public function addPayement(Payment $payement): self
  105.     {
  106.         if (!$this->payements->contains($payement)) {
  107.             $this->payements[] = $payement;
  108.             $payement->setAbonnement($this);
  109.         }
  110.         return $this;
  111.     }
  112.     public function removePayement(Payment $payement): self
  113.     {
  114.         if ($this->payements->removeElement($payement)) {
  115.             // set the owning side to null (unless already changed)
  116.             if ($payement->getAbonnement() === $this) {
  117.                 $payement->setAbonnement(null);
  118.             }
  119.         }
  120.         return $this;
  121.     }
  122.     public function getAcademicien(): ?User
  123.     {
  124.         return $this->academicien;
  125.     }
  126.     public function setAcademicien(?User $academicien): self
  127.     {
  128.         $this->academicien $academicien;
  129.         return $this;
  130.     }
  131.     public function getDateCreated(): ?\DateTimeImmutable
  132.     {
  133.         return $this->dateCreated;
  134.     }
  135.     public function setDateCreated(\DateTimeImmutable $dateCreated): self
  136.     {
  137.         $this->dateCreated $dateCreated;
  138.         return $this;
  139.     }
  140. }