projectExportsRepository = $projectExportsRepository; $this->projectRepository = $projectRepository; $this->pageQuery = $pageQuery; $this->configuration = $configuration; $this->placeRepo = $placeRepo; } /** * @return array|null [array workflow provider] */ public function getWorkflows(): ?array { $workflows = $this->configuration->findByModule("cdf"); return $workflows; } /** * @param int $export_id [id of export] * * @return array|null [] */ public function getWorkflow(int $export_id): ?array { $workflow_id = $this->projectExportsRepository->findWorkflowById($export_id); return $workflow_id; } /** * @param int $project_id * * @return array */ public function listExportWithWorkflow(int $project_id): array { $exports = $this->projectExportsRepository->list($project_id); $exportsView = []; if (isset($exports) && !empty($exports)) { foreach ($exports as $export) { $workflowProgression = 100; $workflowName = ''; $placeName = ''; if ($export->getWorkflowProjects()) { if (!$export->getWorkflowProjects()->getPage()) { $workflowProject = $export->getWorkflowProjects(); if ($workflowProject->getWorkflow()) { $workflow = $this->configuration->findById($workflowProject->getWorkflow()); if (isset($workflow)) { $workflowName = $workflow->getName(); $currentPlace = $workflowProject->getCurrentPlace(); $i = 0; $placeStepNumber = 1; foreach ($workflow->getPlaces() as $place){ $i++; if ($currentPlace == $place ){ $placeStepNumber = $i; } } $workflowProgression = intval(($placeStepNumber/$i*100)); if (isset($currentPlace)) { $place = $this->placeRepo->findByKey($workflowProject->getCurrentPlace()); $placeName = $place->getName(); } else { $placeName = ''; } } //todo test control when we delete workflow } $exportsView[] = new ExportsListView( $export->getId(), $export->getName(), $export->getExportType() ? $this->projectExportsRepository::EXPORT_TYPE[$export->getExportType()] : '', $workflowName, $placeName, $workflowProgression ); } else { $pages = $this->pageQuery->readPageByExport($export->getId()); $progressWorkflow = 0; foreach($pages as $page){ $progressWorkflow += $page->pageProgressionWorkflow; } if(!empty($pages)){ $workflowProgression = $progressWorkflow / count($pages); } $exportsView[] = new ExportsListView( $export->getId(), $export->getName(), $export->getExportType() ? $this->projectExportsRepository::EXPORT_TYPE[$export->getExportType()] : '', $workflowName, $placeName, $workflowProgression ); } } else{ $exportsView[] = new ExportsListView( $export->getId(), $export->getName(), $export->getExportType() ? $this->projectExportsRepository::EXPORT_TYPE[$export->getExportType()] : '', $workflowName, $placeName, $workflowProgression ); } } } return $exportsView; } }