= $min && $numberedGrade < $max) { return [ "letter" => $letter, "number" => $numberedGrade, "mention" => $mention, "comment" => $comment, ]; } } return [ "letter" => "", "number" => $numberedGrade, "mention" => "Non défini", "comment" => "Pas d'évaluation disponible", ]; } function processDTLProposals($page) { $proposals = []; foreach ($page->dtlProposals()->toStructure() as $proposal) { $location = $proposal->DTLProposalLocation()->value(); $DTLProposal = null; switch ($location) { case 'proposal': $proposalPage = $page->find('proposal'); $proposalFile = $proposal->DTLproposal()->toFile(); if ($proposalPage && $proposalFile) { $index = $proposalPage->pdf()->toFiles()->indexOf($proposalFile); $DTLProposal = [ "location" => "proposal", "path" => "/projects/" . $page->slug() . "?dialog=proposal&fileIndex=" . $index, "date" => $proposalFile->modified("d/MM/Y"), "stepLabel" => "Proposition commerciale", ]; } break; case 'industrialIdeation': $proposalPage = $page->find('industrial-ideation'); $proposalFile = $proposal->DTLindustrialIdeation()->toFile(); if ($proposalPage && $proposalFile) { $DTLProposal = [ "location" => "industrialIdeation", "path" => "/projects/" . $page->slug() . "?dialog=industrial-ideation", "date" => $proposalFile->modified("d/MM/Y"), "stepLabel" => "Idéation industrielle", ]; } break; case 'virtualSampleDynamicTrack': $proposalPage = $proposal->DTLVirtualSampleDynamicTrack()->toPage(); if ($proposalPage) { $DTLProposal = [ "location" => "virtualSampleDynamicTrack", "path" => "/projects/" . $page->slug() . "?dialog=virtual-sample", "date" => $proposalPage->modified("d/MM/Y"), "stepLabel" => "Échantillon virtuel - piste dynamique", ]; } break; case 'virtualSampleStaticTrack': $proposalPage = $page->find('virtual-sample'); $proposalFile = $proposal->DTLVirtualSampleStaticTrack()->toFile(); if ($proposalPage && $proposalFile) { $DTLProposal = [ "location" => "virtualSampleStaticTrack", "path" => "/projects/" . $page->slug() . "?dialog=virtual-sample", "date" => $proposalFile->modified("d/MM/Y"), "stepLabel" => "Échantillon virtuel - piste statique", ]; } break; } if ($DTLProposal) { if (isset($proposalFile) && $proposalFile->cover()->isNotEmpty()) { $DTLProposal["thumb"] = $proposalFile->cover()->toFile()->thumb([ "width" => 200, "format" => "webp" ])->url(); } if ($proposalPage->views()->isNotEmpty()) { $DTLProposal["thumb"] = $proposalPage->views()->toFile()->thumb([ "width" => 200, "format" => "webp" ])->url(); } $numberedGlobalGrade = (int) $proposal->DTLGrade()->value() ?? 0; $DTLProposal["grades"] = [ "global" => getGlobalEvaluation($numberedGlobalGrade), "position" => [ "complexity" => (int) $proposal->DTLComplexityGrade()->value() ?? 0, "weight" => (int) $proposal->DTLWeightGrade()->value() ?? 0, ], "indicators" => [ [ "label" => "design", "value" => (int) $proposal->DTLDesignGrade()->value() ?? 0, ], [ "label" => "ring", "value" => (int) $proposal->DTLRingGrade()->value() ?? 0, ], [ "label" => "shoulder", "value" => (int) $proposal->DTLShoulderGrade()->value() ?? 0, ], [ "label" => "skeleton", "value" => (int) $proposal->DTLSkeletonGrade()->value() ?? 0, ], [ "label" => "foot", "value" => (int) $proposal->DTLFootGrade()->value() ?? 0, ], [ "label" => "bottom", "value" => (int) $proposal->DTLBottomGrade()->value() ?? 0, ], ], ]; $proposals[] = $DTLProposal; } } return $proposals; } $project = [ "title" => $page->title()->value(), "url" => $page->url(), "modified" => $page->modified("Y-MM-d"), "status" => $page->status(), "logo" => $page->client()->isNotEmpty() && $page->client()->toPage() ? $page->client()->toPage()->logo()->toFile()->url() : null, "steps" => $page->getSteps(), "designToLight" => $page->isDTLEnabled() ? processDTLProposals($page) : null, ]; $pageData = array_merge($genericData, $project); echo json_encode([ "page" => $pageData, "user" => $userData, ]);