Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.31% covered (success)
92.31%
24 / 26
50.00% covered (danger)
50.00%
2 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
GetResourceListFolder
92.31% covered (success)
92.31%
24 / 26
50.00% covered (danger)
50.00%
2 / 4
10.05
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getChild
90.00% covered (success)
90.00%
9 / 10
0.00% covered (danger)
0.00%
0 / 1
4.02
 getChildren
92.86% covered (success)
92.86%
13 / 14
0.00% covered (danger)
0.00%
0 / 1
4.01
1<?php
2namespace Apie\ApieFileSystem\Virtual;
3
4use Apie\ApieFileSystem\Lists\VirtualFileMap;
5use Apie\Common\ActionDefinitions\GetResourceListActionDefinition;
6use Apie\Core\BoundedContext\BoundedContextId;
7use Apie\Core\Context\ApieContext;
8use Apie\Core\Datalayers\ApieDatalayer;
9use Apie\Serializer\Serializer;
10
11class GetResourceListFolder implements VirtualFolderInterface
12{
13    public function __construct(
14        private readonly GetResourceListActionDefinition $actionDefinition,
15        private readonly ApieContext $apieContext
16    ) {
17    }
18
19    public function getName(): string
20    {
21        return $this->actionDefinition->getResourceName()->getShortName();
22    }
23
24    public function getChild(string $name): VirtualFileInterface|VirtualFolderInterface|null
25    {
26        if (is_numeric($name)) {
27            $datalayer = $this->apieContext->getContext(ApieDatalayer::class, false);
28            $serializer = $this->apieContext->getContext(Serializer::class, false);
29            if ($datalayer instanceof ApieDatalayer && $serializer instanceof Serializer) {
30                $list = $datalayer->all(
31                    $this->actionDefinition->getResourceName(),
32                    $this->apieContext->getContext(BoundedContextId::class, false)
33                );
34                return new GetResourceListPaginationFolder($list, (int) $name, $serializer, $this->apieContext);
35            }
36        }
37        return null;
38    }
39
40    public function getChildren(): VirtualFileMap
41    {
42        $datalayer = $this->apieContext->getContext(ApieDatalayer::class, false);
43        $serializer = $this->apieContext->getContext(Serializer::class, false);
44        if ($datalayer instanceof ApieDatalayer && $serializer instanceof Serializer) {
45            $list = $datalayer->all(
46                $this->actionDefinition->getResourceName(),
47                $this->apieContext->getContext(BoundedContextId::class, false)
48            );
49            $totalCount = $list->getTotalCount();
50            $files = [];
51            for ($i = 0; $i < $totalCount; $i+= GetResourceListPaginationFolder::ITEMS_PER_PAGE) {
52                $page = (int) floor($i / GetResourceListPaginationFolder::ITEMS_PER_PAGE);
53                $files[$page] = new GetResourceListPaginationFolder($list, $page, $serializer, $this->apieContext);
54            }
55            return new VirtualFileMap($files);
56        }
57        
58        return new VirtualFileMap();
59    }
60}