| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- declare(strict_types=1);
- namespace App\Service\Organization;
- use App\ApiResources\Profile\OrganizationProfile;
- use App\Entity\Organization\Organization;
- use App\Enum\Organization\PrincipalTypeEnum;
- use App\Service\Network\Tree;
- use App\Service\Organization\Utils as OrganizationUtils;
- use App\Service\Security\Module;
- use App\Service\Utils\DatesUtils;
- use App\Test\Service\Organization\OrganizationProfileCreatorTest;
- /**
- * Class OrganizationProfileCreator : Service contenant les manipulations associés à la ressource OrganizationProfile.
- */
- class OrganizationProfileCreator
- {
- public function __construct(
- private Module $module,
- private Tree $tree,
- private OrganizationUtils $organizationUtils,
- private Trial $trialService
- ) {
- }
- /**
- * Classe permettant de créer le profile d'une organisation à partir d'une entité Organization.
- *
- * @see OrganizationProfileCreatorTest::testCreateCompleteOrganizationProfile()
- */
- public function createCompleteOrganizationProfile(Organization $organization): OrganizationProfile
- {
- $organizationProfile = $this->createLightOrganizationProfile($organization);
- $organizationProfile->setModules($this->module->getOrganizationModules($organization));
- $organizationProfile->setProduct($organization->getSettings()->getProduct());
- $organizationProfile->setParametersId($organization->getParameters()->getId());
- $organizationProfile->setLegalStatus($organization->getLegalStatus());
- $organizationProfile->setPrincipalType($organization->getPrincipalType());
- $organizationProfile->setTrialActive($organization->getSettings()->isTrialActive());
- $organizationProfile->setTrialCountDown($this->trialService->getTrialCountdown($organization->getSettings()->getlLastTrialStartDate()));
- $organizationProfile->setHasChildren($organization->getNetworkOrganizationChildren()->count() > 1);
- $organizationProfile->setShowAdherentList(
- $organization->getParameters()->getShowAdherentList()
- && $organization->getPrincipalType() !== PrincipalTypeEnum::ARTISTIC_EDUCATION_ONLY
- );
- foreach ($organization->getNetworkOrganizations() as $networkOrganization) {
- // TODO: fix temporaire => retirer ce 'if' dès la résolution de https://ressources-opentalent.atlassian.net/browse/V8-6985
- if ($networkOrganization->getEndDate() === null || $networkOrganization->getEndDate() > DatesUtils::new()) {
- $organizationProfile->addNetwork($networkOrganization->getNetwork()->getName());
- }
- }
- /** @var Organization $parent */
- foreach ($this->tree->findAllParentsAndSortByType($organization) as $parent) {
- $parentProfile = $this->createLightOrganizationProfile($parent);
- $organizationProfile->addParent($parentProfile);
- }
- $organizationProfile->setCurrentYear($this->organizationUtils->getOrganizationCurrentActivityYear($organization));
- return $organizationProfile;
- }
- /**
- * Classe permettant de créer et Setter les éléments de base d'un profile d'organisation à partir d'une entité Organization.
- */
- public function createLightOrganizationProfile(Organization $organization): OrganizationProfile
- {
- $organizationProfile = new OrganizationProfile();
- $organizationProfile
- ->setId($organization->getId())
- ->setName($organization->getName())
- ->setWebsite($this->organizationUtils->getOrganizationWebsite($organization))
- ;
- return $organizationProfile;
- }
- }
|