children() as $child) { $steps[] = $this->createStep($child); } usort($steps, fn($a, $b) => $a['index'] <=> $b['index']); return $steps; } private function createStep($child) { $files = []; $uri = null; if ($child->stepName() == 'clientBrief') { $this->handleClientBriefStep($child, $files, $uri); } if ($child->stepName() == 'virtualSample') { $this->handleVirtualSampleStep($child, $files, $uri); } return [ 'label' => $child->title()->value(), 'id' => $child->stepName()->value(), 'slug' => $child->slug(), 'index' => intval($child->stepIndex()->value()), 'modified' => $child->modified('Y-MM-dd'), 'uri' => $uri, 'files' => $files, ]; } private function handleClientBriefStep($child, &$files, &$uri) { if ($child->moodboard()->isNotEmpty()) { $uri = $child->uri(); foreach ($child->moodboard()->toFiles() as $file) { $files[] = getFileData($file); } } if ($child->pdf()->isNotEmpty()) { $uri = $child->parent()->uri() . '?dialog=' . $child->slug(); $files[] = getFileData($child->pdf()->toFile()); } } private function handleVirtualSampleStep($child, &$files, &$uri) { $uri = $child->parent()->uri() . '?dialog=' . $child->slug(); foreach ($child->views()->toFiles() as $file) { $files[] = getFileData($file); } } public function getStepLabel() { $stepsLabel = [ "clientBrief" => "brief", "proposal" => "offre commerciale", "extendedBrief" => "brief enrichi", "industrialIdeation" => "idéation industrielle", "virtualSample" => "échantillon virtuel", "physicalSample" => "échantillon physique", ]; return $stepsLabel[$this->currentStep()->value()]; } }