sortByType($this->networkOrganizationRepository->findAllParents($organization)); } /** * Trie les organisations par rapport à leur type principal : * DELEGATION, GROUPMENT, LOCAL_FEDERATION, DEPARTEMENTAL_FEDERATION, REGIONAL_FEDERATION, NATIONAL_FEDERATION * @param array $organizations * @return array * @see TreeTest::testSortByType() */ public function sortByType(array $organizations): array { $typeOrder = [ PrincipalTypeEnum::DELEGATION(), PrincipalTypeEnum::GROUPMENT(), PrincipalTypeEnum::LOCAL_FEDERATION(), PrincipalTypeEnum::DEPARTEMENTAL_FEDERATION(), PrincipalTypeEnum::REGIONAL_FEDERATION(), PrincipalTypeEnum::NATIONAL_FEDERATION() ]; usort($organizations, function(Organization $organization1, Organization $organization2) use($typeOrder){ return array_keys($typeOrder, $organization1->getPrincipalType()) <=> array_keys($typeOrder, $organization2->getPrincipalType()); }); return $organizations; } }