From 92efabd6005ff1334d6a0b9244a3360d05f32f0d Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 15 Mar 2024 20:24:38 +0000 Subject: [PATCH] code fixes --- .../Interfaces/DatabaseExchanger/Exporter.php | 1 + .../Interfaces/DatabaseExchanger/Importer.php | 1 + .../defaultCsvExporter.csv.php | 2 +- .../Interfaces/ListExchanger/Exporter.php | 101 +++++++++++++++--- .../Interfaces/ListExchanger/Importer.php | 1 + .../Interfaces/ListExchanger/Lang/en.lang.php | 4 +- Controller/ApiController.php | 67 +++++++++--- Models/Report.php | 7 +- tests/Models/ExporterAbstractTest.php | 1 - tests/Models/ImporterAbstractTest.php | 1 - 10 files changed, 152 insertions(+), 34 deletions(-) diff --git a/Admin/Install/Interfaces/DatabaseExchanger/Exporter.php b/Admin/Install/Interfaces/DatabaseExchanger/Exporter.php index c6939e8..644a9c2 100755 --- a/Admin/Install/Interfaces/DatabaseExchanger/Exporter.php +++ b/Admin/Install/Interfaces/DatabaseExchanger/Exporter.php @@ -33,6 +33,7 @@ final class Exporter extends ExporterAbstract /** * Export all data in time span * + * @param array $data Export data * @param \DateTime $start Start time (inclusive) * @param \DateTime $end End time (inclusive) * diff --git a/Admin/Install/Interfaces/DatabaseExchanger/Importer.php b/Admin/Install/Interfaces/DatabaseExchanger/Importer.php index e3024eb..7a10e83 100755 --- a/Admin/Install/Interfaces/DatabaseExchanger/Importer.php +++ b/Admin/Install/Interfaces/DatabaseExchanger/Importer.php @@ -33,6 +33,7 @@ final class Importer extends ImporterAbstract /** * Import all data in time span * + * @param array $data Import data * @param \DateTime $start Start time (inclusive) * @param \DateTime $end End time (inclusive) * diff --git a/Admin/Install/Interfaces/ListExchanger/CsvListExporter/defaultCsvExporter.csv.php b/Admin/Install/Interfaces/ListExchanger/CsvListExporter/defaultCsvExporter.csv.php index 2e0fbd8..3fb74ec 100644 --- a/Admin/Install/Interfaces/ListExchanger/CsvListExporter/defaultCsvExporter.csv.php +++ b/Admin/Install/Interfaces/ListExchanger/CsvListExporter/defaultCsvExporter.csv.php @@ -14,7 +14,7 @@ declare(strict_types=1); /** @var \phpOMS\Views\View $this */ /** @var array $data */ -$report = $this->data['report'] ?? []; +$report = $this->data['report'] ?? []; $headlines = \array_keys(\reset($report->data)); $out = \fopen('php://output', 'w'); diff --git a/Admin/Install/Interfaces/ListExchanger/Exporter.php b/Admin/Install/Interfaces/ListExchanger/Exporter.php index 3964370..8c0db7c 100644 --- a/Admin/Install/Interfaces/ListExchanger/Exporter.php +++ b/Admin/Install/Interfaces/ListExchanger/Exporter.php @@ -35,6 +35,7 @@ final class Exporter extends ExporterAbstract /** * Export all data in time span * + * @param array $data Export data * @param \DateTime $start Start time (inclusive) * @param \DateTime $end End time (inclusive) * @@ -52,16 +53,23 @@ final class Exporter extends ExporterAbstract $result = $this->exportReport($data); $log = new ExchangeLog(); - $log->createdBy = $this->account; - $log->type = ExchangeType::EXPORT; - $log->message = $this->l11n->getText($data['language'], 'Exchange', '', 'ReportExported'); - $log->subtype = 'language'; + $log->createdBy = $data['account'] ?? 0; + $log->type = ExchangeType::EXPORT; + $log->message = $this->l11n->getText($data['language'], 'Exchange', '', 'ReportExported'); + $log->subtype = 'language'; $result['logs'] = [$log]; return $result; } + /** + * Create export. + * + * @return array{type:string, name:string, content:string} + * + * @since 1.0.0 + */ private function exportReport(array $data) : array { $content = ''; @@ -100,6 +108,15 @@ final class Exporter extends ExporterAbstract ]; } + /** + * Create pdf export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function pdfExport(array $data) : string { $view = new View(); @@ -110,11 +127,20 @@ final class Exporter extends ExporterAbstract $view->data['defaultTemplates'] = $data['templates']; $view->data['defaultAssets'] = $data['assets']; - $view->data['report'] = $data['report']; + $view->data['report'] = $data['report']; return $view->render(); } + /** + * Create csv export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function csvExport(array $data) : string { $view = new View(); @@ -125,11 +151,20 @@ final class Exporter extends ExporterAbstract $view->data['defaultTemplates'] = $data['templates']; $view->data['defaultAssets'] = $data['assets']; - $view->data['report'] = $data['report']; + $view->data['report'] = $data['report']; return $view->render(); } + /** + * Create excel export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function excelExport(array $data) : string { $view = new View(); @@ -140,43 +175,79 @@ final class Exporter extends ExporterAbstract $view->data['defaultTemplates'] = $data['templates']; $view->data['defaultAssets'] = $data['assets']; - $view->data['report'] = $data['report']; + $view->data['report'] = $data['report']; return $view->render(); } + /** + * Create xml export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function xmlExport(array $data) : string { $defaultTemplates = $data['templates'] ?? []; - $report = $data['report'] ?? null; - $type = $data['type'] ?? 'csv'; + $report = $data['report'] ?? null; + $type = $data['type'] ?? 'csv'; return ''; } + /** + * Create html export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function htmlExport(array $data) : string { $defaultTemplates = $data['templates'] ?? []; - $report = $data['report'] ?? null; - $type = $data['type'] ?? 'csv'; + $report = $data['report'] ?? null; + $type = $data['type'] ?? 'csv'; return ''; } + /** + * Create word export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function wordExport(array $data) : string { $defaultTemplates = $data['templates'] ?? []; - $report = $data['report'] ?? null; - $type = $data['type'] ?? 'csv'; + $report = $data['report'] ?? null; + $type = $data['type'] ?? 'csv'; return ''; } + /** + * Create json export + * + * @param array $data Data to export + * + * @return string + * + * @since 1.0.0 + */ private function jsonExport(array $data) : string { $defaultTemplates = $data['templates'] ?? []; - $report = $data['report'] ?? null; - $type = $data['type'] ?? 'csv'; + $report = $data['report'] ?? null; + $type = $data['type'] ?? 'csv'; return ''; } diff --git a/Admin/Install/Interfaces/ListExchanger/Importer.php b/Admin/Install/Interfaces/ListExchanger/Importer.php index 4f00395..d662d1a 100644 --- a/Admin/Install/Interfaces/ListExchanger/Importer.php +++ b/Admin/Install/Interfaces/ListExchanger/Importer.php @@ -31,6 +31,7 @@ final class Importer extends ImporterAbstract /** * Import all data in time span * + * @param array $data Import data * @param \DateTime $start Start time (inclusive) * @param \DateTime $end End time (inclusive) * diff --git a/Admin/Install/Interfaces/ListExchanger/Lang/en.lang.php b/Admin/Install/Interfaces/ListExchanger/Lang/en.lang.php index d982946..346b052 100644 --- a/Admin/Install/Interfaces/ListExchanger/Lang/en.lang.php +++ b/Admin/Install/Interfaces/ListExchanger/Lang/en.lang.php @@ -13,6 +13,6 @@ declare(strict_types=1); * @link https://jingga.app */ return [ - 'Language' => 'Language', - 'ReportExported' => 'Data got exported', + 'Language' => 'Language', + 'ReportExported' => 'Data got exported', ]; diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 07ead46..36b37c8 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -15,6 +15,7 @@ declare(strict_types=1); namespace Modules\Exchange\Controller; use Modules\Admin\Models\NullAccount; +use Modules\Admin\Models\SettingsEnum as AdminSettingsEnum; use Modules\Exchange\Models\ExchangeLogMapper; use Modules\Exchange\Models\ExchangeSetting; use Modules\Exchange\Models\ExchangeSettingMapper; @@ -27,6 +28,7 @@ use Modules\Media\Models\CollectionMapper; use Modules\Media\Models\MediaMapper; use Modules\Media\Models\NullCollection; use Modules\Media\Models\PathSettings; +use Modules\Organization\Models\UnitMapper; use phpOMS\Account\PermissionType; use phpOMS\DataStorage\Database\Connection\ConnectionFactory; use phpOMS\DataStorage\Database\Connection\NullConnection; @@ -38,8 +40,6 @@ use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Message\FormValidation; use phpOMS\Utils\StringUtils; -use Modules\Admin\Models\SettingsEnum as AdminSettingsEnum; -use Modules\Organization\Models\UnitMapper; /** * Exchange controller class. @@ -69,17 +69,17 @@ final class ApiController extends Controller $dbData = []; if ($request->hasData('dbtype')) { $dbData = [ - 'dbtype' => (string) $request->getData('dbtype'), - 'dbhost' => $request->getDataString('dbhost') ?? '', - 'dbport' => $request->getDataInt('dbport') ?? 0, + 'dbtype' => (string) $request->getData('dbtype'), + 'dbhost' => $request->getDataString('dbhost') ?? '', + 'dbport' => $request->getDataInt('dbport') ?? 0, 'dbdatabase' => $request->getDataString('dbdatabase') ?? '', - 'dblogin' => $request->getDataString('dblogin') ?? '', + 'dblogin' => $request->getDataString('dblogin') ?? '', 'dbpassword' => $request->getDataString('dbpassword') ?? '', ]; } $importer = $this->getImporter((int) $request->getData('id'), $dbData); - $import = $importer === null ? [] : $importer->importFromRequest($request, $response); + $import = $importer === null ? [] : $importer->importFromRequest($request, $response); if (isset($import['logs'])) { foreach ($import['logs'] as $log) { @@ -94,6 +94,16 @@ final class ApiController extends Controller } } + /** + * Get importer by id + * + * @param int $id Id of the importer + * @param array $dbData Database connection data + * + * @return null|\Modules\Exchange\Interface\Importer + * + * @since 1.0.0 + */ private function getImporter(int $id, array $dbData) : ?\Modules\Exchange\Interface\Importer { $importer = null; @@ -330,6 +340,15 @@ final class ApiController extends Controller } } + /** + * Get exporter by id + * + * @param int $id Id of the exporter + * + * @return null|\Modules\Exchange\Interface\Exporter + * + * @since 1.0.0 + */ private function getExporter(int $id) : ?\Modules\Exchange\Interface\Exporter { $exporter = null; @@ -366,6 +385,16 @@ final class ApiController extends Controller return $exporter; } + /** + * Get the data of the export + * + * @param int $id Exporter id + * @param array $data Export data + * + * @return array + * + * @since 1.0.0 + */ public function exportData(int $id, array $data) : array { $exporter = $this->getExporter($id); @@ -442,6 +471,18 @@ final class ApiController extends Controller return $setting; } + /** + * Api method to export a report + * + * @param RequestAbstract $request Request + * @param HttpResponse $response Response + * @param Report $report Report to export + * @param string $type Export type (e.g. pdf,csv,html,xml,json,xls) + * + * @return void + * + * @since 1.0.0 + */ public function apiExportReport( RequestAbstract $request, ResponseAbstract $response, @@ -449,7 +490,7 @@ final class ApiController extends Controller string $type ) : void { - /** @var \Model\Setting $settings */ + /** @var \Model\Setting[] $settings */ $settings = $this->app->appSettings->get(null, [ AdminSettingsEnum::DEFAULT_TEMPLATES, @@ -497,12 +538,12 @@ final class ApiController extends Controller $export = $exporter === null ? [] : $exporter->export( [ - 'assets' => $defaultAssets, - 'templates' => $defaultTemplates, - 'report' => $report, - 'type' => $type, + 'assets' => $defaultAssets, + 'templates' => $defaultTemplates, + 'report' => $report, + 'type' => $type, 'organization' => $organization, - 'language' => $response->header->l11n->language, + 'language' => $response->header->l11n->language, ], new \DateTime(), new \DateTime() ); diff --git a/Models/Report.php b/Models/Report.php index 2281954..ac74f91 100644 --- a/Models/Report.php +++ b/Models/Report.php @@ -34,8 +34,13 @@ class Report public array $data = []; + /** + * Constructor. + * + * @since 1.0.0 + */ public function __construct() { $this->dt = new \DateTime('now'); } -} \ No newline at end of file +} diff --git a/tests/Models/ExporterAbstractTest.php b/tests/Models/ExporterAbstractTest.php index 1f4bc8d..87b80f3 100755 --- a/tests/Models/ExporterAbstractTest.php +++ b/tests/Models/ExporterAbstractTest.php @@ -22,7 +22,6 @@ use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Uri\HttpUri; /** * @internal diff --git a/tests/Models/ImporterAbstractTest.php b/tests/Models/ImporterAbstractTest.php index 210c14c..1fada89 100755 --- a/tests/Models/ImporterAbstractTest.php +++ b/tests/Models/ImporterAbstractTest.php @@ -22,7 +22,6 @@ use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; -use phpOMS\Uri\HttpUri; /** * @internal