transition) { return; } $workflow = $this->registry->get($value->entityWorkflow, $value->entityWorkflow->getWorkflowName()); $metadataStore = $workflow->getMetadataStore(); $destUsersRequired = false; foreach ($value->transition->getTos() as $to) { $metadata = $metadataStore->getPlaceMetadata($to); // if the place are only 'isSentExternal' or 'isSignature' or 'final', then, we skip - a destUser is not required if ($metadata['isSentExternal'] ?? false) { continue; } if ($metadata['isSignature'] ?? false) { continue; } if ($metadata['isFinal'] ?? false) { continue; } // if there isn't any 'isSentExternal' or 'isSignature' or final, then we must have a destUser $destUsersRequired = true; } if (!$destUsersRequired) { if (0 < count($value->futureDestUsers)) { $this->context->buildViolation($constraint->messageDestUserNotAuthorized) ->setCode($constraint->codeDestUserNotAuthorized) ->atPath('futureDestUsers') ->addViolation(); } return; } if (0 === count($value->futureDestUsers)) { $this->context->buildViolation($constraint->messageDestUserRequired) ->setCode($constraint->codeDestUserRequired) ->atPath('futureDestUsers') ->addViolation(); } } }