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\ExampleValue;
6use Apie\Core\Attributes\Not;
7use Apie\Core\Attributes\Requires;
8use Apie\Core\Attributes\Route;
9use Apie\Core\Attributes\StaticCheck;
10use Apie\Core\Context\ApieContext;
11use Apie\Core\ContextConstants;
12use Apie\Core\Datalayers\Lists\EntityListInterface;
13use Apie\Core\Enums\ConsoleCommand;
14use Apie\Core\Enums\RequestMethod;
15use Apie\Core\FileStorage\StoredFile;
16use Apie\Export\EntityExport;
17use Psr\Http\Message\UploadedFileInterface;
18
19class ExportAll
20{
21    #[StaticCheck(
22        new Not(new Requires(ConsoleCommand::class)),
23        new Not(new Requires(ContextConstants::MCP_SERVER)),
24        new Not(new Requires(ContextConstants::MAIN_MENU_BUILDER))
25    )]
26    #[Route('/export/{resourceName}.{extension}', RequestMethod::GET)]
27    public function export(
28        #[Context()]
29        EntityExport $exporter,
30        #[Context()]
31        EntityListInterface $list,
32        #[Context()]
33        \ReflectionClass $resourceName,
34        #[Context()]
35        ApieContext $apieContext,
36        #[Context('filename')]
37        ?string $outputFilename = null,
38        #[Context('extension')]
39        #[ExampleValue('xlsx', 'Excel 2007+ file')]
40        #[ExampleValue('csv', 'Comma separated values')]
41        string $extension = 'xlsx'
42    ): UploadedFileInterface {
43        return StoredFile::createFromResource(
44            $exporter->streamFromEntityList(
45                $resourceName,
46                $list,
47                $apieContext,
48                $outputFilename . '.' . $extension
49            ),
50            clientOriginalFile: $outputFilename . '.' . $extension
51        );
52    }
53}