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();
|
$element = $result->getElement();
|
||||||
$childElements = [];
|
|
||||||
foreach ($result->getChildElements() as $childElement) {
|
|
||||||
$childElements[] = [
|
|
||||||
'id' => $childElement->getId(),
|
|
||||||
'title' => $childElement->getTitle(),
|
|
||||||
'description' => $childElement->getDescription(),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
return new JsonResponse([
|
return new JsonResponse([
|
||||||
'childElements' => $childElements,
|
'childElements' => $this->buildElementSummaryPayloads(
|
||||||
|
$result->getChildElements(),
|
||||||
|
),
|
||||||
'element' => $this->buildElementPayload($element),
|
'element' => $this->buildElementPayload($element),
|
||||||
|
'siblingElements' => $this->buildElementSummaryPayloads(
|
||||||
|
$result->getSiblingElements(),
|
||||||
|
),
|
||||||
], 200);
|
], 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
|
private function storageUrl(?string $path, string $folderPrefix): ?string
|
||||||
{
|
{
|
||||||
if ($path === null) {
|
if ($path === null) {
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,19 @@ class GetElement
|
||||||
throw new NotFoundException('Element not found');
|
throw new NotFoundException('Element not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parentElement = $element->getParentElement();
|
||||||
|
if ($parentElement === null) {
|
||||||
|
$siblingElements = [$element];
|
||||||
|
} else {
|
||||||
|
$siblingElements = $this->elementRepository
|
||||||
|
->findByParentElement($parentElement);
|
||||||
|
}
|
||||||
|
|
||||||
return new GetElementResult(
|
return new GetElementResult(
|
||||||
element: $element,
|
element: $element,
|
||||||
childElements: $this->elementRepository
|
childElements: $this->elementRepository
|
||||||
->findByParentElement($element),
|
->findByParentElement($element),
|
||||||
|
siblingElements: $siblingElements,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,12 @@ class GetElementResult
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param Element[] $childElements
|
* @param Element[] $childElements
|
||||||
|
* @param Element[] $siblingElements
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private Element $element,
|
private Element $element,
|
||||||
private array $childElements,
|
private array $childElements,
|
||||||
|
private array $siblingElements,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -27,4 +29,12 @@ class GetElementResult
|
||||||
{
|
{
|
||||||
return $this->childElements;
|
return $this->childElements;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Element[]
|
||||||
|
*/
|
||||||
|
public function getSiblingElements(): array
|
||||||
|
{
|
||||||
|
return $this->siblingElements;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue