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 (str_contains($child->stepName()->value(), 'Brief')) { $this->handleBriefStep($child, $files, $uri); } if ($child->stepName() == 'proposal') { $this->handleProposalStep($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 handleBriefStep($child, &$files, &$uri) { $uri = $child->uri(); if ($child->moodboard()->isNotEmpty()) { 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 handleProposalStep($child, &$files, &$uri) { $uri = $child->parent()->uri() . '?dialog=' . $child->slug(); if ($child->pdf()->isNotEmpty()) { foreach ($child->pdf()->toFiles() as $file) { $files[] = getFileData($file); } } } private function handleVirtualSampleStep($child, &$files, &$uri) { $uri = $child->parent()->uri() . '?dialog=' . $child->slug(); foreach ($child->children() as $key => $track) { $trackData = [ 'title' => (string) $track->title(), 'slug' => (string) $track->slug(), 'files' => [], ]; foreach ($track->views()->toFiles() as $view) { $trackData['files'][] = getFileData($view); } $files[] = $trackData; } } 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()]; } public function printManagers() { return A::implode($this->managers()->toUsers()->pluck('name'), ', '); } }