projectRepository = $projectRepository; $this->workflowProjectRepo = $workflowProjectRepo; $this->exportRepo = $exportRepo; $this->placesQuery = $placesQuery; } /** * {@inheritDoc} */ public function getWorkflowAndUser(int $id): array { $project = $this->projectRepository->findById($id); if (null === $project) { return false; } $exportsDB = $this->exportRepo->listExportWorkflow($id); $exports = []; if (!empty($exportsDB)) { foreach ($exportsDB as $export) { $options = []; $workflowId = null; $page = false; $workflowProject = $this->workflowProjectRepo->findByExportId($export->getId()); if ($workflowProject && !$workflowProject->getDeleted()) { $page = $workflowProject->getPage() ? $workflowProject->getPage() : false; if ($workflowProject->getWorkflow()) { $workflowId = $workflowProject->getWorkflow() ? $workflowProject->getWorkflow() : null; $places = $this->placesQuery->getPlaces($workflowId, $page); if (isset($places['places']) && !empty($places['places'])) { foreach ($places['places'] as $place) { $i = 0; $found = false; $option = null; while ($i < count($workflowProject->getOptions()) && !$found) { if ($workflowProject->getOptions()[$i]->getStepId() === $place->id) { $option = $workflowProject->getOptions()[$i]; $found = true; } ++$i; } $options[] = new WorkflowProjectOptionReadView( $place->id, $place->name, $option && $option->getDateFin() ? $option->getDateFin()->format('Y-m-d') : null ); } } } $page = $workflowProject->getPage(); } $type = $export->getExportType() ? $this->exportRepo::EXPORT_TYPE[$export->getExportType()] : ''; $workflow = new WorkflowProjectOptionView( $workflowId, $options ); $exports[] = new ExportWorkflowProjectView( $export->getId(), $export->getName(), $workflow, $page, $type ); } } return $exports; } }