Parcourir la source

Refactoring : ApiResource Interface et précisions des collections et items operations

Vincent GUFFON il y a 4 ans
Parent
commit
513c3d8f97

+ 3 - 1
src/ApiResources/Dolibarr/DolibarrAccount.php

@@ -5,6 +5,7 @@ namespace App\ApiResources\Dolibarr;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
 use JetBrains\PhpStorm\Pure;
@@ -15,6 +16,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
  * (aussi nommé 'ThirdParty' ou 'Society' dans dolibarr)
  */
 #[ApiResource(
+    collectionOperations:[],
     itemOperations: [
         'get' => [
             'security' => '(is_granted("ROLE_ADMIN_CORE") or 
@@ -32,7 +34,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
     ],
     compositeIdentifier: false,
 )]
-class DolibarrAccount
+class DolibarrAccount implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     #[Groups('dolibarr_get')]

+ 8 - 2
src/ApiResources/Dolibarr/DolibarrBill.php

@@ -5,13 +5,19 @@ namespace App\ApiResources\Dolibarr;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use Symfony\Component\Serializer\Annotation\Groups;
 
 /**
  * Bill of a society, retrieved from dolibarr
  */
-#[ApiResource]
-class DolibarrBill
+#[ApiResource(
+    collectionOperations:[],
+    itemOperations: [
+        'get'
+    ]
+)]
+class DolibarrBill implements ApiResourcesInterface
 {
     /**
      * Id of the dolibarr bill ( = invoice)

+ 8 - 2
src/ApiResources/Dolibarr/DolibarrContract.php

@@ -5,6 +5,7 @@ namespace App\ApiResources\Dolibarr;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\Common\Collections\Collection;
 use JetBrains\PhpStorm\Pure;
@@ -13,8 +14,13 @@ use Symfony\Component\Serializer\Annotation\Groups;
 /**
  * Contract of a society, retrieved from dolibarr
  */
-#[ApiResource]
-class DolibarrContract
+#[ApiResource(
+    collectionOperations:[],
+    itemOperations: [
+        'get'
+    ]
+)]
+class DolibarrContract implements ApiResourcesInterface
 {
     /**
      * Reference of the dolibarr contract

+ 8 - 2
src/ApiResources/Dolibarr/DolibarrContractLine.php

@@ -5,13 +5,19 @@ namespace App\ApiResources\Dolibarr;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use Symfony\Component\Serializer\Annotation\Groups;
 
 /**
  *  Lines (services) included in a society contract, as retrieved from dolibarr
  */
-#[ApiResource]
-class DolibarrContractLine
+#[ApiResource(
+    collectionOperations:[],
+    itemOperations: [
+        'get'
+    ]
+)]
+class DolibarrContractLine implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     #[Groups('dolibarr_get')]

+ 3 - 1
src/ApiResources/Mobyt/MobytUserStatus.php

@@ -5,12 +5,14 @@ namespace App\ApiResources\Mobyt;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use Symfony\Component\Serializer\Annotation\Groups;
 
 /**
  * Statut de l'utilisateur Mobyt correspondant à l'organization donnée en paramètre
  */
 #[ApiResource(
+    collectionOperations:[],
     itemOperations: [
         'get' => [
             'security' => 'is_granted("ROLE_TEXTO") and object.getOrganizationId() == user.getOrganization().getId()',
@@ -20,7 +22,7 @@ use Symfony\Component\Serializer\Annotation\Groups;
         ],
     ]
 )]
-class MobytUserStatus
+class MobytUserStatus implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     private int $organizationId;

+ 3 - 1
src/ApiResources/Profile/AccessProfile.php

@@ -5,6 +5,7 @@ namespace App\ApiResources\Profile;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 use JetBrains\PhpStorm\Pure;
 use Symfony\Component\Serializer\Annotation\Groups;
 use Doctrine\Common\Collections\ArrayCollection;
@@ -14,6 +15,7 @@ use Doctrine\Common\Collections\Collection;
  * Classe resource qui contient les champs disponibles lors d'un appel à my_profile.
  */
 #[ApiResource(
+    collectionOperations:[],
     itemOperations: [
         'get' => [
             'normalization_context' => [
@@ -25,7 +27,7 @@ use Doctrine\Common\Collections\Collection;
         ]
     ]
 )]
-class AccessProfile
+class AccessProfile implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     #[Groups('access_profile_read')]

+ 23 - 2
src/ApiResources/Profile/OrganizationProfile.php

@@ -4,6 +4,7 @@ declare(strict_types=1);
 namespace App\ApiResources\Profile;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
+use App\ApiResources\ApiResourcesInterface;
 use Symfony\Component\Serializer\Annotation\Groups;
 use ApiPlatform\Core\Annotation\ApiResource;
 
@@ -11,8 +12,13 @@ use ApiPlatform\Core\Annotation\ApiResource;
  * Classe resource qui contient les champs relatifs aux organizations présentent dans la requete my_profile.
  */
 
-#[ApiResource]
-class OrganizationProfile
+#[ApiResource(
+    collectionOperations:[],
+    itemOperations: [
+        'get'
+    ]
+)]
+class OrganizationProfile implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     #[Groups('access_profile_read')]
@@ -45,6 +51,9 @@ class OrganizationProfile
     #[Groups('access_profile_read')]
     private bool $showAdherentList = false;
 
+    #[Groups('access_profile_read')]
+    private ?int $currentYear = null;
+
     public function getId(): ?int
     {
         return $this->id;
@@ -164,4 +173,16 @@ class OrganizationProfile
 
         return $this;
     }
+
+    public function getCurrentYear(): ?int
+    {
+        return $this->currentYear;
+    }
+
+    public function setCurrentYear(?int $currentYear): self
+    {
+        $this->currentYear = $currentYear;
+
+        return $this;
+    }
 }

+ 2 - 1
src/ApiResources/Utils/GpsCoordinate.php

@@ -5,6 +5,7 @@ namespace App\ApiResources\Utils;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 
 /**
  * Classe resource qui contient les champs de recherche des coordonnées GPS d'une adresse
@@ -24,7 +25,7 @@ use ApiPlatform\Core\Annotation\ApiResource;
     ],
     compositeIdentifier: false
 )]
-class GpsCoordinate
+class GpsCoordinate implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     private float $latitude;

+ 2 - 1
src/ApiResources/Utils/Siret.php

@@ -5,6 +5,7 @@ namespace App\ApiResources\Utils;
 
 use ApiPlatform\Core\Annotation\ApiProperty;
 use ApiPlatform\Core\Annotation\ApiResource;
+use App\ApiResources\ApiResourcesInterface;
 
 /**
  * Classe resource qui contient les champs de vérification d'un siret
@@ -19,7 +20,7 @@ use ApiPlatform\Core\Annotation\ApiResource;
         ]
     ]
 )]
-class Siret
+class Siret implements ApiResourcesInterface
 {
     #[ApiProperty(identifier: true)]
     private ?string $number = null;