entityManager = $entityManager; $this->user = $user; } /** * @return stdClass */ public function get() { $data = (object) []; $builder = $this->entityManager ->getRDBRepositoryByClass(Workflow::class) ->where([ 'type' => Workflow::TYPE_MANUAL, 'isActive' => true, ]); if (!$this->user->isAdmin()) { $builder ->distinct() ->join('manualTeams') ->where(['manualTeams.id' => $this->user->getTeamIdList()]); $builder->where(['manualAccessRequired!=' => 'admin']); } /** @var Workflow[] $workflows */ $workflows = iterator_to_array($builder->find()); usort($workflows, function (Workflow $a, Workflow $b) { return strcmp($a->getManualLabel() ?? '', $b->getManualLabel() ?? ''); }); foreach ($workflows as $workflow) { $entityType = $workflow->getTargetEntityType(); if (!property_exists($data, $entityType)) { $data->$entityType = []; } $item = (object) [ 'id' => $workflow->getId(), 'label' => $workflow->get('manualLabel'), 'accessRequired' => $workflow->get('manualAccessRequired'), 'elementType' => $workflow->get('manualElementType'), 'dynamicLogic' => $workflow->get('manualDynamicLogic'), 'confirmation' => $workflow->get('manualConfirmation'), 'confirmationText' => $workflow->get('manualConfirmationText'), 'style' => $workflow->get('manualStyle'), ]; $data->$entityType[] = $item; } return $data; } }