add element siblings
This commit is contained in:
parent
eb868679c8
commit
96774d9540
3 changed files with 47 additions and 9 deletions
|
|
@ -46,18 +46,15 @@ class ElementController
|
|||
}
|
||||
|
||||
$element = $result->getElement();
|
||||
$childElements = [];
|
||||
foreach ($result->getChildElements() as $childElement) {
|
||||
$childElements[] = [
|
||||
'id' => $childElement->getId(),
|
||||
'title' => $childElement->getTitle(),
|
||||
'description' => $childElement->getDescription(),
|
||||
];
|
||||
}
|
||||
|
||||
return new JsonResponse([
|
||||
'childElements' => $childElements,
|
||||
'childElements' => $this->buildElementSummaryPayloads(
|
||||
$result->getChildElements(),
|
||||
),
|
||||
'element' => $this->buildElementPayload($element),
|
||||
'siblingElements' => $this->buildElementSummaryPayloads(
|
||||
$result->getSiblingElements(),
|
||||
),
|
||||
], 200);
|
||||
}
|
||||
|
||||
|
|
@ -253,6 +250,28 @@ class ElementController
|
|||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Element[] $elements
|
||||
* @return array<int, array{
|
||||
* id: int,
|
||||
* title: string,
|
||||
* description: string,
|
||||
* }>
|
||||
*/
|
||||
private function buildElementSummaryPayloads(array $elements): array
|
||||
{
|
||||
$payloads = [];
|
||||
foreach ($elements as $element) {
|
||||
$payloads[] = [
|
||||
'id' => $element->getId(),
|
||||
'title' => $element->getTitle(),
|
||||
'description' => $element->getDescription(),
|
||||
];
|
||||
}
|
||||
|
||||
return $payloads;
|
||||
}
|
||||
|
||||
private function storageUrl(?string $path, string $folderPrefix): ?string
|
||||
{
|
||||
if ($path === null) {
|
||||
|
|
|
|||
|
|
@ -27,10 +27,19 @@ class GetElement
|
|||
throw new NotFoundException('Element not found');
|
||||
}
|
||||
|
||||
$parentElement = $element->getParentElement();
|
||||
if ($parentElement === null) {
|
||||
$siblingElements = [$element];
|
||||
} else {
|
||||
$siblingElements = $this->elementRepository
|
||||
->findByParentElement($parentElement);
|
||||
}
|
||||
|
||||
return new GetElementResult(
|
||||
element: $element,
|
||||
childElements: $this->elementRepository
|
||||
->findByParentElement($element),
|
||||
siblingElements: $siblingElements,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,12 @@ class GetElementResult
|
|||
{
|
||||
/**
|
||||
* @param Element[] $childElements
|
||||
* @param Element[] $siblingElements
|
||||
*/
|
||||
public function __construct(
|
||||
private Element $element,
|
||||
private array $childElements,
|
||||
private array $siblingElements,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -27,4 +29,12 @@ class GetElementResult
|
|||
{
|
||||
return $this->childElements;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Element[]
|
||||
*/
|
||||
public function getSiblingElements(): array
|
||||
{
|
||||
return $this->siblingElements;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue