Skip to content

Commit

Permalink
[TASK] Add check for existing verdict
Browse files Browse the repository at this point in the history
  • Loading branch information
flossels committed Jun 17, 2021
1 parent 69558ac commit bbbf716
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Classes/Judge/Condition.php
Expand Up @@ -24,7 +24,7 @@ public function adjudicate(AbstractFactProvider $factProvider, int $priority = A
{
$prosecution = $this->configuration['prosecution'] ?? $this->configuration['prosecution.'] ?? null;

if ($prosecution !== null && $factProvider->isGuilty($prosecution)) {
if ($prosecution !== null && $factProvider->isGuilty($prosecution) && isset($this->configuration['verdict'])) {
$this->decision = (new Decision())->withVerdictName($this->configuration['verdict']);
$this->decision->setPriority($priority);

Expand Down
27 changes: 15 additions & 12 deletions Classes/Processor/Court.php
Expand Up @@ -154,18 +154,21 @@ protected function callJudges(): ?Decision
protected function addJudgement(array &$judgements, array $configuration, $key, AbstractJudge $judge, array &$priorities): void
{
$fact = $this->facts[$configuration['fact']] ?? null;
$judge = $judge->withConfiguration($this->configuration['judges'][$key . '.'])->adjudicate($fact, (int)$key);

if ($judge->hasDecision() && !isset($decisions[$judge->getDecision()->getPriority()])) {
$decision = $judge->getDecision();
$priority = $decision->getPriority();

if ($fact instanceof AbstractFactProvider && $fact->isMultiple()) {
$priorities[$fact->getBasename()] = $priorities[$fact->getBasename()] ?? $priority;
$priority = $priorities[$fact->getBasename()];
$judgements[$priority][$fact->getPriority()] = $decision;
} else {
$judgements[$priority] = $decision;

if ($fact instanceof AbstractFactProvider) {
$judge = $judge->withConfiguration($this->configuration['judges'][$key . '.'])->adjudicate($fact, (int)$key);

if ($judge->hasDecision() && !isset($decisions[$judge->getDecision()->getPriority()])) {
$decision = $judge->getDecision();
$priority = $decision->getPriority();

if ($fact instanceof AbstractFactProvider && $fact->isMultiple()) {
$priorities[$fact->getBasename()] = $priorities[$fact->getBasename()] ?? $priority;
$priority = $priorities[$fact->getBasename()];
$judgements[$priority][$fact->getPriority()] = $decision;
} else {
$judgements[$priority] = $decision;
}
}
}
}
Expand Down

0 comments on commit bbbf716

Please sign in to comment.