Skip to content

Commit

Permalink
Merge pull request #115 from digio-ch/issue/hc-244
Browse files Browse the repository at this point in the history
Prevent unknown roles from causing issues
  • Loading branch information
SebastianStorz committed Feb 16, 2024
2 parents 33f8093 + 9ca608d commit 310e553
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 9 deletions.
5 changes: 3 additions & 2 deletions src/Command/ImportFromJsonCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
5 changes: 3 additions & 2 deletions src/DataFixtures/Aggregator/AggregatorTestFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions src/Entity/Midata/PersonRole.php
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,15 @@ public function getGroup()
/**
* @param Role|null $role
*/
public function setRole(?Role $role)
public function setRole(Role $role)
{
$this->role = $role;
}

/**
* @return Role|null
*/
public function getRole(): Role
public function getRole(): ?Role
{
return $this->role;
}
Expand Down
2 changes: 2 additions & 0 deletions src/Service/Aggregator/DemographicCampAggregator.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions src/Service/Aggregator/RoleAggregator.php
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down
6 changes: 3 additions & 3 deletions src/Service/Aggregator/WidgetAggregator.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Expand All @@ -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)];
Expand All @@ -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()];
Expand Down

0 comments on commit 310e553

Please sign in to comment.