accessRepository->findAllValidAccesses($access); if (empty($validAccesses)) { throw new AuthenticationException('no_valid_access', 401); } if (is_null($access->getPreferences())) { $this->createPreferences($access); } // L'Access en paramètre est celui de la connexion $mainAccessProfile = $this->createCompleteAccessProfile($access); // On remplit les accesses multi-compte $multiAccesses = $this->accessUtils->filterAccesses($validAccesses, $access); foreach ($multiAccesses as $multiAccess) { $mainAccessProfile->addMultiAccess( $this->organizationProfileCreator->createLightOrganizationProfile($multiAccess->getOrganization()) ); } // On remplit les accesses famille $familyAccesses = $access->getChildren(); foreach ($familyAccesses as $familyAccess) { $mainAccessProfile->addFamilyAccess($this->createLightAccessProfile($familyAccess)); } // Dans le cas où nous sommes dans une connexion switch if ($originalAccess) { $mainAccessProfile->setOriginalAccess($this->createLightAccessProfile($originalAccess)); } return $mainAccessProfile; } /** * Créer une ressource AccessProfile à partir d'une entité Access. * * @see AccessProfileCreatorTest::testCreateAccessProfile */ public function createCompleteAccessProfile(Access $access): AccessProfile { $accessProfile = $this->createLightAccessProfile($access); return $accessProfile ->setIsAdminAccess($access->getAdminAccess()) ->setRoles($this->accessUtils->getAllRoles($access)) ->setHistorical($access->getHistorical()) ->setOrganization( $this->organizationProfileCreator->createCompleteOrganizationProfile($access->getOrganization()) ) ->setIsGuardian(!$access->getChildren()->isEmpty()) ->setIsPayor( !$access->getBillingPayers()->isEmpty() || ($access->getBillingReceivers()->isEmpty() && $access->getChildren()->isEmpty() && !$access->getAccessIntangibles()->isEmpty()) ) ->setPreferencesId($access->getPreferences()->getId()) ; } /** * Classe permettant de créer et Setter les éléments de base d'une ressource AccessProfile à partir d'une entité Access. * * @see AccessProfileCreatorTest::testCreateLightAccessProfile() */ public function createLightAccessProfile(Access $access): AccessProfile { $accessProfile = new AccessProfile(); return $accessProfile ->setId($access->getId()) ->setName($access->getPerson()->getName()) ->setGivenName($access->getPerson()->getGivenName()) ->setGender($access->getPerson()->getGender()) ->setActivityYear($access->getActivityYear()) ->setAvatarId($access->getPerson()->getImage()?->getId()) ->setIsSuperAdminAccess($access->getSuperAdminAccess()) ->setOrganization( $this->organizationProfileCreator->createLightOrganizationProfile($access->getOrganization()) ); } /** * Créer l'entrée des Preferences en base. * * @see AccessProfileCreatorTest::testCreatePreferences() * * @return void */ public function createPreferences(Access $access) { $access->setPreferences(new Preferences()); $this->entityManager->flush(); } }