diff --git a/src/Command/ImportFromJsonCommand.php b/src/Command/ImportFromJsonCommand.php index 1bde142..d12b791 100644 --- a/src/Command/ImportFromJsonCommand.php +++ b/src/Command/ImportFromJsonCommand.php @@ -843,9 +843,10 @@ private function importRoles(OutputInterface $output) $personRole->setPerson($person); $role = $this->em->getRepository(Role::class)->getOneByRoleType($r['type']); - if ($role) { - $personRole->setRole($role); + if (is_null($role)) { + continue; } + $personRole->setRole($role); $group = $this->em->getRepository(Group::class)->find($r['group_id']); if ($group) { diff --git a/src/DataFixtures/Aggregator/AggregatorTestFixture.php b/src/DataFixtures/Aggregator/AggregatorTestFixture.php index 39337b3..f110ec6 100644 --- a/src/DataFixtures/Aggregator/AggregatorTestFixture.php +++ b/src/DataFixtures/Aggregator/AggregatorTestFixture.php @@ -278,9 +278,10 @@ protected function importRoles(ObjectManager $em) } $role = $em->getRepository(Role::class)->getOneByRoleType($r['type']); - if ($role) { - $personRole->setRole($role); + if (is_null($role)) { + continue; } + $personRole->setRole($role); $group = $em->getRepository(Group::class)->find($r['group_id']); if ($group) { diff --git a/src/Entity/Midata/PersonRole.php b/src/Entity/Midata/PersonRole.php index 0fe0ba0..64de1e6 100644 --- a/src/Entity/Midata/PersonRole.php +++ b/src/Entity/Midata/PersonRole.php @@ -155,7 +155,7 @@ public function getGroup() /** * @param Role|null $role */ - public function setRole(?Role $role) + public function setRole(Role $role) { $this->role = $role; } @@ -163,7 +163,7 @@ public function setRole(?Role $role) /** * @return Role|null */ - public function getRole(): Role + public function getRole(): ?Role { return $this->role; } diff --git a/src/Service/Aggregator/DemographicCampAggregator.php b/src/Service/Aggregator/DemographicCampAggregator.php index fce604c..e47f842 100644 --- a/src/Service/Aggregator/DemographicCampAggregator.php +++ b/src/Service/Aggregator/DemographicCampAggregator.php @@ -223,7 +223,9 @@ private function getRelevantPersonRole(array $personRoles, DateTimeImmutable $ev if ($personRole->getCreatedAt() > $eventDate) { continue; } + // TODO: Warning this is just to prevent the app from breaking due to unstable API, could mess up the logic if ( + !is_null($personRole->getRole()) && !in_array( $personRole->getRole()->getRoleType(), array_merge(self::$leadersRoleTypes, self::$memberRoleTypes, self::$mainGroupRoleTypes) diff --git a/src/Service/Aggregator/RoleAggregator.php b/src/Service/Aggregator/RoleAggregator.php index e191713..60d17d5 100644 --- a/src/Service/Aggregator/RoleAggregator.php +++ b/src/Service/Aggregator/RoleAggregator.php @@ -54,6 +54,9 @@ public function aggregate(DateTime $startDate = null) $highestAggregatedMidataIndex = $this->personRoleRepository->getHighestAggregatedMidataIndex(); $newPersonRoles = $this->midataPersonRoleRepository->findAllWithHigherIndex($highestAggregatedMidataIndex); foreach ($newPersonRoles as $newPersonRole) { + if (is_null($newPersonRole->getRole())) { + continue; + } $aggregatedPersonRole = new AggregatedPersonRole(); $aggregatedPersonRole->setMidata($newPersonRole); $aggregatedPersonRole->setEndAt($newPersonRole->getDeletedAt()); diff --git a/src/Service/Aggregator/WidgetAggregator.php b/src/Service/Aggregator/WidgetAggregator.php index b0547c3..7ecc765 100644 --- a/src/Service/Aggregator/WidgetAggregator.php +++ b/src/Service/Aggregator/WidgetAggregator.php @@ -221,7 +221,7 @@ public function findLeaderGroupTypeForRoleType(PersonRole $personRole): string { foreach (self::$leaderRoleTypesByGroupType as $groupType => $roleTypes) { foreach ($roleTypes as $roleType) { - if ($roleType === $personRole->getRole()->getRoleType()) { + if (!is_null($personRole->getRole()) && $roleType === $personRole->getRole()->getRoleType()) { return $groupType; } } @@ -238,7 +238,7 @@ public function findGroupAndPersonTypeByPersonRolesHierarchy(array $personRoles) foreach (self::$leadersRoleTypes as $leaderRole) { /** @var PersonRole $personRole */ foreach ($personRoles as $personRole) { - if (trim($personRole->getRole()->getRoleType()) !== $leaderRole) { + if (!is_null($personRole->getRole()) && trim($personRole->getRole()->getRoleType()) !== $leaderRole) { continue; } return ['leaders', $this->findLeaderGroupTypeForRoleType($personRole)]; @@ -247,7 +247,7 @@ public function findGroupAndPersonTypeByPersonRolesHierarchy(array $personRoles) foreach (self::$memberRoleTypes as $memberRole) { /** @var PersonRole $personRole */ foreach ($personRoles as $personRole) { - if (trim($personRole->getRole()->getRoleType()) !== $memberRole) { + if (!is_null($personRole->getRole()) && trim($personRole->getRole()->getRoleType()) !== $memberRole) { continue; } return ['members', $personRole->getGroup()->getGroupType()->getGroupType()];