Quellcode durchsuchen

modules by conditions

Vincent GUFFON vor 4 Jahren
Ursprung
Commit
abc7e4ab5b

+ 7 - 24
config/opentalent/modulesbyconditions.yaml

@@ -20,7 +20,7 @@ opentalent:
             conditions:
                 service:
                     name: opentalent.cotisation.utils
-                    function: isLastParentAndManagerCMFAndCMF
+                    function: isManagerAndLastParentAndCMF
         CotisationTransmissionState:
             roles:
                 - ROLE_COTISATION
@@ -40,16 +40,15 @@ opentalent:
                 - ROLE_COTISATION
             conditions:
                 service:
-                    name: opentalent.cotisation.utils
-                    function: isCMFAdministration
-
+                    name: opentalent.organization.utils
+                    function: isOrganizationIsCMF
         Admin2IOS:
             roles:
                 - ROLE_ADMIN2IOS
             conditions:
                 service:
-                    name: opentalent.admin2IOS.utils
-                    function: isAdmin2IOS
+                    name: opentalent.organization.utils
+                    function: isOrganizationIs2ios
         StatisticFederation:
             roles:
                 - ROLE_STATISTIC
@@ -69,7 +68,7 @@ opentalent:
                 - ROLE_STATISTIC
             conditions:
                 service:
-                    name: opentalent.cotisation.utils
+                    name: opentalent.organization.utils
                     function: isStructure
         Network:
             roles:
@@ -82,20 +81,4 @@ opentalent:
             conditions:
                 service:
                     name: opentalent.network.utils
-                    function: isCMF
-        Pes:
-            conditions:
-                service:
-                    name: opentalent.export.module.utils
-                    function: isOrganizationWithPes
-
-        BergerLevrault:
-            conditions:
-                service:
-                    name: opentalent.export.module.utils
-                    function: isOrganizationWithBergerLevrault
-        Jvs:
-            conditions:
-                service:
-                    name: opentalent.export.module.utils
-                    function: isOrganizationWithJvs
+                    function: isCMF

+ 1 - 1
config/packages/security.yaml

@@ -24,7 +24,7 @@ security:
             - ROLE_NETWORK
             - ROLE_COTISATION
             - ROLE_ONLINEREGISTRATION_ADMINISTRATION
-            - ROLE_STATISTIQUE
+            - ROLE_STATISTIC
             - ROLE_ADMIN_CORE
 
         ROLE_ADMIN_CORE: *BASE_ROLE_ADMINISTRATION_CORE

+ 4 - 0
config/services/services.yaml

@@ -6,4 +6,8 @@ services:
   opentalent.network.utils:
     class: App\Service\Network\Utils
     public: true
+    autowire: true
+  opentalent.organization.utils:
+    class: App\Service\Organization\Utils
+    public: true
     autowire: true

+ 14 - 0
src/Enum/Organization/OrganizationIdsEnum.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Enum\Organization;
+
+use MyCLabs\Enum\Enum;
+
+/**
+ * Id de structure spécifiques
+ */
+class OrganizationIdsEnum extends Enum
+{
+    private const CMF     = 12097;
+    private const _2IOS   = 32366;
+}

+ 6 - 6
src/Enum/Organization/SettingsProductEnum.php

@@ -9,10 +9,10 @@ use MyCLabs\Enum\Enum;
  */
 class SettingsProductEnum extends Enum
 {
-    const ARTIST = 'artist';
-    const ARTIST_PREMIUM = 'artist-premium';
-    const SCHOOL = 'school';
-    const SCHOOL_PREMIUM = 'school-premium';
-    const MANAGER = 'manager';
-    const MANAGER_PREMIUM = 'manager-premium';
+    private const ARTIST = 'artist';
+    private const ARTIST_PREMIUM = 'artist-premium';
+    private const SCHOOL = 'school';
+    private const SCHOOL_PREMIUM = 'school-premium';
+    private const MANAGER = 'manager';
+    private const MANAGER_PREMIUM = 'manager-premium';
 }

+ 0 - 1
src/Repository/Organization/OrganizationRepository.php

@@ -28,7 +28,6 @@ class OrganizationRepository extends ServiceEntityRepository
      * @return bool
      */
     public function isLastParent(Organization $organization): bool {
-
         $sql = sprintf("
         SELECT 
             IF( (SELECT o.id 

+ 28 - 60
src/Service/Cotisation/Utils.php

@@ -45,71 +45,39 @@ class Utils {
      * Test si l'organisation est une structure (non manager) ET appartient à la CMF
      * @param Organization $organization
      * @return bool
+     * @see UtilsTest::testIsStructureAndCMF()
      */
     public function isStructureAndCMF(Organization $organization):bool {
         return $this->organizationUtils->isStructure($organization) && $this->networkUtils->isCMF($organization);
     }
 
+    /**
+     * Test si la structure est un manager ET qu'elle appartient à la CMF
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsManagerAndCMF()
+     */
+    public function isManagerAndCMF(Organization $organization): bool{
+        return $this->organizationUtils->isManager($organization) && $this->networkUtils->isCMF($organization);
+    }
 
-//
-//    /**
-//     * check if the organization is "lastParent" and product is manager and belong to CMF net
-//     * @param Organization $organization
-//     * @return type boolean TRUE if the organization is "lastParent" and product is manager and belong to CMF net
-//     */
-//    public function isLastParentAndManagerCMFAndCMF(Organization $organization) {
-//        $organizationRepository = $this->em->getRepository(Organization::class);
-//
-//        $isLastParent = $organizationRepository->isLastParent($organization->getId());
-//        $isCMFOrganization = ($organization->getId() == OrganizationEnum::CMF);
-//        $productName = $this->tipsUtils->getProductName(TipsProductEnum::OPENTALENT_MANAGER_STANDARD);
-//        $isManager = ($organization->getSettings()->getProduct() == $productName);
-//        $isCMF = $this->networkUtils->isOrganizationBelongToTheNetwork($organization, NetworkEnum::CMF());
-//
-//        return $isLastParent & $isCMFOrganization & $isManager & $isCMF;
-//    }
-//
-//    /**
-//     * check if the organization is OrganizationEnum::CMF
-//     *
-//     * @param Organization $organization
-//     * @return type boolean return TRUE if the organization is OrganizationEnum::CMF
-//     */
-//    public function isCMFAdministration(Organization $organization) {
-//        $organizationRepository = $this->em->getRepository(Organization::class);
-//
-//        $isCMFOrganization = ($organization->getId() == OrganizationEnum::CMF());
-//
-//        return $isCMFOrganization;
-//    }
-//
-//    /**
-//     * Check if the organization product is manager and belong to CMF net
-//     * @param Organization $organization
-//     * @return type boolean TRUE if the organization product is manager and belong to CMF net
-//     */
-//    public function isManagerAndCMF(Organization $organization) {
-//        $productName = $this->tipsUtils->getProductName(TipsProductEnum::OPENTALENT_MANAGER_STANDARD());
-//        $isManager = ($organization->getSettings()->getProduct() == $productName);
-//        $isCMF = $this->networkUtils->isOrganizationBelongToTheNetwork($organization, NetworkEnum::CMF());
-//
-//        return $isManager & $isCMF;
-//    }
-//
-//    /**
-//     * Check if the organization product is manager and is not "lastParent" and belong to CMF net
-//     * @param Organization $organization
-//     * @return type boolean TRUE if the organization product is manager and is not "lastParent" and belong to CMF net
-//     */
-//    public function isManagerAndNotLastParentAndCMF(Organization $organization) {
-//        $organizationRepository = $this->em->getRepository(Organization::class);
-//
-//        $productName = $this->tipsUtils->getProductName(TipsProductEnum::OPENTALENT_MANAGER_STANDARD());
-//        $isManager = ($organization->getSettings()->getProduct() == $productName);
-//        $isLastParent = $organizationRepository->isLastParent($organization->getId());
-//        $isCMF = $this->networkUtils->isOrganizationBelongToTheNetwork($organization, NetworkEnum::CMF());
-//        return $isManager & !$isLastParent & $isCMF;
-//    }
-//
+    /**
+     * Test si l'organisation est un manager ET un dernier parent ET appartient à la CMF
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsManagerAndLastParentAndCMF()
+     */
+    public function isManagerAndLastParentAndCMF(Organization $organization): bool {
+        return $this->organizationUtils->isManager($organization) && $this->isLastParentAndCMF($organization);
+    }
 
+    /**
+     * Test si l'organisation est un manager ET n'est pas un dernier parent ET appartient à la CMF
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsManagerAndNotLastParentAndCMF()
+     */
+    public function isManagerAndNotLastParentAndCMF(Organization $organization): bool {
+        return $this->organizationUtils->isManager($organization) && !$this->isLastParentAndCMF($organization);
+    }
 }

+ 43 - 2
src/Service/Organization/Utils.php

@@ -4,6 +4,7 @@ declare(strict_types=1);
 namespace App\Service\Organization;
 
 use App\Entity\Organization\Organization;
+use App\Enum\Organization\OrganizationIdsEnum;
 use App\Enum\Organization\SettingsProductEnum;
 use App\Test\Service\Organization\UtilsTest;
 
@@ -24,7 +25,47 @@ class Utils
      * @see UtilsTest::testIsStructureTest()
      */
     public function isStructure(Organization $organization): bool{
-        return $organization->getSettings()->getProduct() !== SettingsProductEnum::MANAGER()
-            && $organization->getSettings()->getProduct() !== SettingsProductEnum::MANAGER_PREMIUM();
+        return $organization->getSettings()->getProduct() != SettingsProductEnum::MANAGER()
+            && $organization->getSettings()->getProduct() != SettingsProductEnum::MANAGER_PREMIUM();
+    }
+
+    /**
+     * Test si l'organisation est considérée comme un manager == a un produit manager standard
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsManagerTest()
+     */
+    public function isManager(Organization $organization): bool{
+        return $organization->getSettings()->getProduct() == SettingsProductEnum::MANAGER();
+    }
+
+    /**
+     * Test si l'organisation est la structure 2iOpenservice
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsOrganizationIs2ios()
+     */
+    public function isOrganizationIs2ios(Organization $organization): bool{
+        return $this->isOrganizationIdIs($organization, OrganizationIdsEnum::_2IOS());
+    }
+
+    /**
+     * Test si l'organisation est la structure CMF
+     * @param Organization $organization
+     * @return bool
+     * @see UtilsTest::testIsOrganizationIsCMF()
+     */
+    public function isOrganizationIsCMF(Organization $organization): bool{
+        return $this->isOrganizationIdIs($organization, OrganizationIdsEnum::CMF());
+    }
+
+    /**
+     * Test si l'id de l'organisation est celui passé en paramètre (doit faire partit des OrganizationIdsEnum)
+     * @param Organization $organization
+     * @param OrganizationIdsEnum $organizationIdsEnum
+     * @return bool
+     */
+    private function isOrganizationIdIs(Organization $organization, OrganizationIdsEnum $organizationIdsEnum){
+        return $organization->getId() === $organizationIdsEnum->getValue();
     }
 }

+ 177 - 30
tests/Service/Cotisation/UtilsTest.php

@@ -11,8 +11,32 @@ use \App\Service\Network\Utils as NetworkUtils;
 
 class UtilsTest extends TestCase
 {
+    private $organizationMock;
+
+    private $organizationRepositoryMock;
+
+    private $networkUtilsMock;
+
+    private $organizationUtilsMock;
+
     public function setUp(): void
     {
+        $this->organizationRepositoryMock =
+            $this
+                ->getMockBuilder(OrganizationRepository::class)
+                ->disableOriginalConstructor()
+                ->getMock();
+
+        $this->networkUtilsMock =
+            $this
+                ->getMockBuilder(NetworkUtils::class)
+                ->disableOriginalConstructor()
+                ->getMock();
+
+        $this->organizationUtilsMock =
+            $this
+                ->getMockBuilder(OrganizationUtils::class)
+                ->getMock();
     }
 
     /**
@@ -25,31 +49,19 @@ class UtilsTest extends TestCase
             ->method('getId')
             ->willReturn(1);
 
-        $organizationRepositoryMock =
-            $this
-                ->getMockBuilder(OrganizationRepository::class)
-                ->disableOriginalConstructor()
-                ->getMock();
-        $organizationRepositoryMock
+        $this->organizationRepositoryMock
                 ->expects($this->once())
                 ->method('isLastParent')
                 ->with($organizationMock)
                 ->willReturn(true);
 
-        $networkUtilsMock =
-            $this
-                ->getMockBuilder(NetworkUtils::class)
-                ->disableOriginalConstructor()
-                ->getMock();
-        $networkUtilsMock
+        $this->networkUtilsMock
                 ->expects($this->once())
                 ->method('isCMF')
                 ->with($organizationMock)
                 ->willReturn(true);
 
-        $organizationUtilsMock = $this->getMockBuilder(OrganizationUtils::class)->getMock();
-
-        $utils = new Utils($networkUtilsMock, $organizationUtilsMock, $organizationRepositoryMock);
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
         $this->assertTrue($utils->isLastParentAndCMF($organizationMock));
     }
 
@@ -63,31 +75,166 @@ class UtilsTest extends TestCase
             ->method('getId')
             ->willReturn(1);
 
-        $organizationRepositoryMock =
-            $this
-                ->getMockBuilder(OrganizationRepository::class)
-                ->disableOriginalConstructor()
-                ->getMock();
-        $organizationRepositoryMock
+        $this->organizationRepositoryMock
             ->expects($this->once())
             ->method('isLastParent')
             ->with($organizationMock)
             ->willReturn(false);
 
-        $networkUtilsMock =
-            $this
-                ->getMockBuilder(NetworkUtils::class)
-                ->disableOriginalConstructor()
-                ->getMock();
-        $networkUtilsMock
+        $this->networkUtilsMock
             ->expects($this->never())
+            ->method('isCMF');
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertFalse($utils->isLastParentAndCMF($organizationMock));
+    }
+
+    /**
+     * @see Utils::isStructureAndCMF()
+     */
+    public function testIsStructureAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isStructure')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $this->networkUtilsMock
+            ->expects($this->once())
             ->method('isCMF')
             ->with($organizationMock)
             ->willReturn(true);
 
-        $organizationUtilsMock = $this->getMockBuilder(OrganizationUtils::class)->getMock();
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertTrue($utils->isStructureAndCMF($organizationMock));
+    }
 
-        $utils = new Utils($networkUtilsMock, $organizationUtilsMock, $organizationRepositoryMock);
-        $this->assertFalse($utils->isLastParentAndCMF($organizationMock));
+    /**
+     * @see Utils::isStructureAndCMF()
+     */
+    public function testIsNotStructureAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isStructure')
+            ->with($organizationMock)
+            ->willReturn(false);
+
+        $this->networkUtilsMock
+            ->expects($this->never())
+            ->method('isCMF');
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertFalse($utils->isStructureAndCMF($organizationMock));
+    }
+
+    /**
+     * @see Utils::isManagerAndCMF()
+     */
+    public function testIsManagerAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isManager')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $this->networkUtilsMock
+            ->expects($this->once())
+            ->method('isCMF')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertTrue($utils->isManagerAndCMF($organizationMock));
+    }
+
+    /**
+     * @see Utils::isManagerAndCMF()
+     */
+    public function testIsNotManagerAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isManager')
+            ->with($organizationMock)
+            ->willReturn(false);
+
+        $this->networkUtilsMock
+            ->expects($this->never())
+            ->method('isCMF');
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertFalse($utils->isManagerAndCMF($organizationMock));
+    }
+
+    /**
+     * @see Utils::isManagerAndNotLastParentAndCMF()
+     */
+    public function testIsManagerAndNotLastParentAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+        $organizationMock
+            ->method('getId')
+            ->willReturn(1);
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isManager')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $this->organizationRepositoryMock
+            ->expects($this->once())
+            ->method('isLastParent')
+            ->with($organizationMock)
+            ->willReturn(false);
+
+        $this->networkUtilsMock
+            ->expects($this->never())
+            ->method('isCMF');
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertTrue($utils->isManagerAndNotLastParentAndCMF($organizationMock));
+    }
+
+    /**
+     * @see Utils::isManagerAndLastParentAndCMF()
+     */
+    public function testIsManagerAndLastParentAndCMF(): void
+    {
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+        $organizationMock
+            ->method('getId')
+            ->willReturn(1);
+
+        $this->organizationUtilsMock
+            ->expects($this->once())
+            ->method('isManager')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $this->organizationRepositoryMock
+            ->expects($this->once())
+            ->method('isLastParent')
+            ->with($organizationMock)
+            ->willReturn(true);
+
+        $this->networkUtilsMock
+            ->expects($this->once())
+            ->method('isCMF')
+            ->willReturn(true);
+
+        $utils = new Utils($this->networkUtilsMock, $this->organizationUtilsMock, $this->organizationRepositoryMock);
+        $this->assertTrue($utils->isManagerAndLastParentAndCMF($organizationMock));
     }
 }

+ 62 - 0
tests/Service/Organization/UtilsTest.php

@@ -15,6 +15,9 @@ class UtilsTest extends TestCase
     /** @var Organization */
     private $organization;
 
+    /** @var Organization */
+    private $federation;
+
     public function setUp():void
     {
         $settings = new Settings();
@@ -22,6 +25,11 @@ class UtilsTest extends TestCase
         $this->organization = new Organization();
         $this->organization->setSettings($settings);
 
+        $settings = new Settings();
+        $settings->setProduct(SettingsProductEnum::MANAGER());
+        $this->federation = new Organization();
+        $this->federation->setSettings($settings);
+
         $this->organizationUtils = new OrganizationUtils();
     }
 
@@ -31,4 +39,58 @@ class UtilsTest extends TestCase
     public function testIsStructureTest(){
         $this->assertTrue($this->organizationUtils->isStructure($this->organization));
     }
+
+    /**
+     * @see OrganizationUtils::isStructure()
+     */
+    public function testIsNotStructureTest(){
+        $this->assertFalse($this->organizationUtils->isStructure($this->federation));
+    }
+
+    /**
+     * @see OrganizationUtils::isManager()
+     */
+    public function testIsManagerTest(){
+        $this->assertTrue($this->organizationUtils->isManager($this->federation));
+    }
+
+    /**
+     * @see OrganizationUtils::isManager()
+     */
+    public function testIsNotManagerTest(){
+        $this->assertFalse($this->organizationUtils->isManager($this->organization));
+    }
+
+    /**
+     * @see OrganizationUtils::isOrganizationIs2ios()
+     */
+    public function testIsOrganizationIs2ios(){
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+        $organizationMock
+            ->method('getId')
+            ->willReturn(32366);
+        $this->assertTrue($this->organizationUtils->isOrganizationIs2ios($organizationMock));
+    }
+
+    /**
+     * @see OrganizationUtils::isOrganizationIs2ios()
+     */
+    public function testIsNotOrganizationIs2ios(){
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+        $organizationMock
+            ->method('getId')
+            ->willReturn(1);
+        $this->assertFalse($this->organizationUtils->isOrganizationIs2ios($organizationMock));
+    }
+
+    /**
+     * @see OrganizationUtils::isOrganizationIsCMF()
+     */
+    public function testIsOrganizationIsCMF(){
+        $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
+        $organizationMock
+            ->method('getId')
+            ->willReturn(12097);
+        $this->assertTrue($this->organizationUtils->isOrganizationIsCMF($organizationMock));
+    }
 }