Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ExportAll
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 export
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2namespace Apie\Export\Actions;
3
4use Apie\Core\Attributes\Context;
5use Apie\Core\Attributes\Not;
6use Apie\Core\Attributes\Requires;
7use Apie\Core\Attributes\Route;
8use Apie\Core\Attributes\StaticCheck;
9use Apie\Core\Context\ApieContext;
10use Apie\Core\ContextConstants;
11use Apie\Core\Datalayers\Lists\EntityListInterface;
12use Apie\Core\Enums\ConsoleCommand;
13use Apie\Core\Enums\RequestMethod;
14use Apie\Core\FileStorage\StoredFile;
15use Apie\Export\EntityExport;
16use Psr\Http\Message\UploadedFileInterface;
17
18class ExportAll
19{
20    #[StaticCheck(
21        new Not(new Requires(ConsoleCommand::class)),
22        new Not(new Requires(ContextConstants::MCP_SERVER))
23    )]
24    #[Route('/export/{resourceName}.{extension}', RequestMethod::GET)]
25    public function export(
26        #[Context()]
27        EntityExport $exporter,
28        #[Context()]
29        EntityListInterface $list,
30        #[Context()]
31        \ReflectionClass $resourceName,
32        #[Context()]
33        ApieContext $apieContext,
34        #[Context('filename')]
35        ?string $outputFilename = null,
36        #[Context('extension')]
37        string $extension = 'xlsx'
38    ): UploadedFileInterface {
39        return StoredFile::createFromResource(
40            $exporter->streamFromEntityList(
41                $resourceName,
42                $list,
43                $apieContext,
44                $outputFilename . '.' . $extension
45            ),
46            clientOriginalFile: $outputFilename . '.' . $extension
47        );
48    }
49}