From 21f2c576d2bb0da63767a3139610d7bdd2ffb752 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 26 Jan 2024 22:53:59 +0000 Subject: [PATCH] auto fixes + some impl. --- Admin/Installer.php | 16 ++- Admin/Routes/Web/Backend.php | 2 +- Controller/ApiController.php | 27 ++--- Models/IncomeStatement.php | 2 +- Models/IncomeStatementElement.php | 14 +-- Models/IncomeStatementElementL11nMapper.php | 6 +- Models/IncomeStatementElementMapper.php | 12 +-- Models/IncomeStatementMapper.php | 6 +- Theme/Backend/pl-dashboard.tpl.php | 108 +++++++++++--------- tests/Autoloader.php | 4 +- tests/Bootstrap.php | 71 +++++++------ 11 files changed, 147 insertions(+), 121 deletions(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index d14a294..b25f483 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -21,7 +21,6 @@ use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpResponse; use phpOMS\Module\InstallerAbstract; use phpOMS\Module\ModuleInfo; -use phpOMS\Uri\HttpUri; /** * Installer class. @@ -51,7 +50,7 @@ final class Installer extends InstallerAbstract self::importStructures($app); } - /** + /** * Import accounts * * @param ApplicationAbstract $app Application @@ -72,7 +71,7 @@ final class Installer extends InstallerAbstract } $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('code', \strtolower(\basename($file))); @@ -86,21 +85,18 @@ final class Installer extends InstallerAbstract : $responseData['response']->toArray(); $json = \json_decode(\file_get_contents(__DIR__ . '/Install/Coa/' . $file), true); - - foreach ($json as $element) { - self::createElement($module, [$element], (int) $incomeStatement['id'], null); - } + self::createElement($module, $json, (int) $incomeStatement['id'], null); } } - private static function createElement(ApiController $module, array $elements, int $structure, int $parent = null) + private static function createElement(ApiController $module, array $elements, int $structure, ?int $parent = null) : void { $order = 0; foreach ($elements as $element) { ++$order; $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('code', $element['name']); @@ -131,7 +127,7 @@ final class Installer extends InstallerAbstract } $response = new HttpResponse(); - $request = new HttpRequest(new HttpUri('')); + $request = new HttpRequest(); $request->header->account = 1; $request->setData('title', $l11n); diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index 07da7b2..28ecf6e 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -6,7 +6,7 @@ use phpOMS\Account\PermissionType; use phpOMS\Router\RouteVerb; return [ - '^.*/controlling/pl/dashboard.*$' => [ + '^.*/controlling/pl/dashboard(\?.*$|$)' => [ [ 'dest' => '\Modules\IncomeStatement\Controller\BackendController:viewPLDashboard', 'verb' => RouteVerb::GET, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index af6c225..c820712 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -21,7 +21,6 @@ use Modules\IncomeStatement\Models\IncomeStatementElementMapper; use Modules\IncomeStatement\Models\IncomeStatementMapper; use phpOMS\Localization\BaseStringL11n; use phpOMS\Localization\ISO639x1Enum; -use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -95,7 +94,7 @@ final class ApiController extends Controller */ private function createIncomeStatementFromRequest(RequestAbstract $request) : IncomeStatement { - $pl = new IncomeStatement(); + $pl = new IncomeStatement(); $pl->code = (string) $request->getData('code'); $pl->name = (string) $request->getData('name'); @@ -162,12 +161,16 @@ final class ApiController extends Controller */ private function createIncomeStatementElementFromRequest(RequestAbstract $request) : IncomeStatementElement { - $element = new IncomeStatementElement(); - $element->code = $request->getDataString('code') ?? ''; + $element = new IncomeStatementElement(); + $element->code = $request->getDataString('code') ?? ''; $element->incomeStatement = $request->getDataInt('pl') ?? 0; - $element->order = $request->getDataInt('order') ?? 0; + $element->order = $request->getDataInt('order') ?? 0; + $element->parent = $request->getDataInt('parent'); - $element->setL11n($request->getDataString('content') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); + $element->setL11n( + $request->getDataString('content') ?? '', + ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN + ); return $element; } @@ -210,12 +213,10 @@ final class ApiController extends Controller */ private function createIncomeStatementElementL11nFromRequest(RequestAbstract $request) : BaseStringL11n { - $elementL11n = new BaseStringL11n(); - $elementL11n->ref = $request->getDataInt('ref') ?? 0; - $elementL11n->setLanguage( - $request->getDataString('language') ?? $request->header->l11n->language - ); - $elementL11n->content = $request->getDataString('content') ?? ''; + $elementL11n = new BaseStringL11n(); + $elementL11n->ref = $request->getDataInt('ref') ?? 0; + $elementL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language; + $elementL11n->content = $request->getDataString('content') ?? ''; return $elementL11n; } @@ -240,4 +241,4 @@ final class ApiController extends Controller return []; } -} \ No newline at end of file +} diff --git a/Models/IncomeStatement.php b/Models/IncomeStatement.php index 98d93a0..b76ab06 100644 --- a/Models/IncomeStatement.php +++ b/Models/IncomeStatement.php @@ -42,7 +42,7 @@ class IncomeStatement public function toArray() : array { return [ - 'id' => $this->id, + 'id' => $this->id, ]; } diff --git a/Models/IncomeStatementElement.php b/Models/IncomeStatementElement.php index b48a7fa..b731437 100644 --- a/Models/IncomeStatementElement.php +++ b/Models/IncomeStatementElement.php @@ -38,7 +38,9 @@ class IncomeStatementElement public string $code = ''; public int $type = 0; + public string $formula = ''; + public int $order = 0; public int $incomeStatement = 0; @@ -68,12 +70,12 @@ class IncomeStatementElement if ($l11n instanceof BaseStringL11n) { $this->l11n = $l11n; } elseif (isset($this->l11n) && $this->l11n instanceof BaseStringL11n) { - $this->l11n->content = $l11n; - $this->l11n->setLanguage($lang); + $this->l11n->content = $l11n; + $this->l11n->language = $lang; } else { - $this->l11n = new BaseStringL11n(); - $this->l11n->content = $l11n; - $this->l11n->setLanguage($lang); + $this->l11n = new BaseStringL11n(); + $this->l11n->content = $l11n; + $this->l11n->language = $lang; } } @@ -97,7 +99,7 @@ class IncomeStatementElement public function toArray() : array { return [ - 'id' => $this->id, + 'id' => $this->id, ]; } diff --git a/Models/IncomeStatementElementL11nMapper.php b/Models/IncomeStatementElementL11nMapper.php index 3698177..c0cced7 100644 --- a/Models/IncomeStatementElementL11nMapper.php +++ b/Models/IncomeStatementElementL11nMapper.php @@ -37,9 +37,9 @@ final class IncomeStatementElementL11nMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'incomestmt_pl_element_l11n_id' => ['name' => 'incomestmt_pl_element_l11n_id', 'type' => 'int', 'internal' => 'id'], - 'incomestmt_pl_element_l11n_title' => ['name' => 'incomestmt_pl_element_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true], - 'incomestmt_pl_element_l11n_element' => ['name' => 'incomestmt_pl_element_l11n_element', 'type' => 'int', 'internal' => 'ref'], + 'incomestmt_pl_element_l11n_id' => ['name' => 'incomestmt_pl_element_l11n_id', 'type' => 'int', 'internal' => 'id'], + 'incomestmt_pl_element_l11n_title' => ['name' => 'incomestmt_pl_element_l11n_title', 'type' => 'string', 'internal' => 'content', 'autocomplete' => true], + 'incomestmt_pl_element_l11n_element' => ['name' => 'incomestmt_pl_element_l11n_element', 'type' => 'int', 'internal' => 'ref'], 'incomestmt_pl_element_l11n_lang' => ['name' => 'incomestmt_pl_element_l11n_lang', 'type' => 'string', 'internal' => 'language'], ]; diff --git a/Models/IncomeStatementElementMapper.php b/Models/IncomeStatementElementMapper.php index 30597de..36bc21c 100644 --- a/Models/IncomeStatementElementMapper.php +++ b/Models/IncomeStatementElementMapper.php @@ -37,11 +37,11 @@ final class IncomeStatementElementMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'incomestmt_pl_element_id' => ['name' => 'incomestmt_pl_element_id', 'type' => 'int', 'internal' => 'id'], - 'incomestmt_pl_element_code' => ['name' => 'incomestmt_pl_element_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], - 'incomestmt_pl_element_order' => ['name' => 'incomestmt_pl_element_order', 'type' => 'int', 'internal' => 'order'], - 'incomestmt_pl_element_parent' => ['name' => 'incomestmt_pl_element_parent', 'type' => 'int', 'internal' => 'parent'], - 'incomestmt_pl_element_pl' => ['name' => 'incomestmt_pl_element_pl', 'type' => 'int', 'internal' => 'incomeStatement'], + 'incomestmt_pl_element_id' => ['name' => 'incomestmt_pl_element_id', 'type' => 'int', 'internal' => 'id'], + 'incomestmt_pl_element_code' => ['name' => 'incomestmt_pl_element_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], + 'incomestmt_pl_element_order' => ['name' => 'incomestmt_pl_element_order', 'type' => 'int', 'internal' => 'order'], + 'incomestmt_pl_element_parent' => ['name' => 'incomestmt_pl_element_parent', 'type' => 'int', 'internal' => 'parent'], + 'incomestmt_pl_element_pl' => ['name' => 'incomestmt_pl_element_pl', 'type' => 'int', 'internal' => 'incomeStatement'], ]; /** @@ -57,7 +57,7 @@ final class IncomeStatementElementMapper extends DataMapperFactory 'self' => 'incomestmt_pl_element_l11n_element', 'column' => 'content', 'external' => null, - ] + ], ]; /** diff --git a/Models/IncomeStatementMapper.php b/Models/IncomeStatementMapper.php index 277995b..1cce070 100644 --- a/Models/IncomeStatementMapper.php +++ b/Models/IncomeStatementMapper.php @@ -37,9 +37,9 @@ final class IncomeStatementMapper extends DataMapperFactory * @since 1.0.0 */ public const COLUMNS = [ - 'incomestmt_pl_id' => ['name' => 'incomestmt_pl_id', 'type' => 'int', 'internal' => 'id'], - 'incomestmt_pl_code' => ['name' => 'incomestmt_pl_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], - 'incomestmt_pl_name' => ['name' => 'incomestmt_pl_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], + 'incomestmt_pl_id' => ['name' => 'incomestmt_pl_id', 'type' => 'int', 'internal' => 'id'], + 'incomestmt_pl_code' => ['name' => 'incomestmt_pl_code', 'type' => 'string', 'internal' => 'code', 'autocomplete' => true], + 'incomestmt_pl_name' => ['name' => 'incomestmt_pl_name', 'type' => 'string', 'internal' => 'name', 'autocomplete' => true], ]; /** diff --git a/Theme/Backend/pl-dashboard.tpl.php b/Theme/Backend/pl-dashboard.tpl.php index 1aeb6a5..f94caa3 100644 --- a/Theme/Backend/pl-dashboard.tpl.php +++ b/Theme/Backend/pl-dashboard.tpl.php @@ -12,14 +12,71 @@ */ declare(strict_types=1); +function render_elements(array $elements, ?int $parent = null) : string +{ + $row = ''; + $fn = 'render_elements'; + + foreach ($elements as $element) { + if ($element->parent !== $parent) { + continue; + } + + $row .= << +
+
+
{$element->getL11n()}
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+0.00%
+
+ + +
+ {$fn($elements, $element->id)} +
+ + ROW; + } + + return $row; +} + echo $this->data['nav']->render(); ?> -
+ +
-
-
Category
+
+
Category
1
2
3
@@ -53,49 +110,8 @@ echo $this->data['nav']->render();
-data['elements'] as $element) : - if ($element->parent !== null) { - continue; - } -?>
-
-
-
printHtml($element->getL11n()); ?>
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
+0.00%
-
- - - + data['elements'], null); ?>
-
- +
\ No newline at end of file diff --git a/tests/Autoloader.php b/tests/Autoloader.php index 30032a6..6656793 100644 --- a/tests/Autoloader.php +++ b/tests/Autoloader.php @@ -75,8 +75,8 @@ final class Autoloader */ public static function defaultAutoloader(string $class) : void { - $class = \ltrim($class, '\\'); - $class = \strtr($class, '_\\', '//'); + $class = \ltrim($class, '\\'); + $class = \strtr($class, '_\\', '//'); if (\stripos($class, 'Web/Backend') !== false || \stripos($class, 'Web/Api') !== false) { $class = \is_dir(__DIR__ . '/Web') ? $class : \str_replace('Web/', 'MainRepository/Web/', $class); diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index ddc049d..4c11520 100644 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -1,4 +1,15 @@ [ + 'db' => [ 'core' => [ 'masters' => [ - 'admin' => [ + 'admin' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -80,7 +91,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -90,7 +101,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -100,7 +111,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -110,7 +121,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -120,7 +131,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'mysql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '3306', /* db host port */ @@ -132,7 +143,7 @@ $CONFIG = [ ], ], 'postgresql' => [ - 'admin' => [ + 'admin' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -142,7 +153,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -152,7 +163,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -162,7 +173,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -172,7 +183,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -182,7 +193,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'pgsql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '5432', /* db host port */ @@ -194,37 +205,37 @@ $CONFIG = [ ], ], 'sqlite' => [ - 'admin' => [ + 'admin' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'sqlite', /* db type */ 'database' => __DIR__ . '/../Karaka/phpOMS/Localization/Defaults/localization.sqlite', /* db name */ 'weight' => 1000, /* db table prefix */ @@ -232,7 +243,7 @@ $CONFIG = [ ], ], 'mssql' => [ - 'admin' => [ + 'admin' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -242,7 +253,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'insert' => [ + 'insert' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -252,7 +263,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'select' => [ + 'select' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -262,7 +273,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'update' => [ + 'update' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -272,7 +283,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'delete' => [ + 'delete' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -282,7 +293,7 @@ $CONFIG = [ 'weight' => 1000, /* db table prefix */ 'datetimeformat' => 'Y-m-d H:i:s', ], - 'schema' => [ + 'schema' => [ 'db' => 'mssql', /* db type */ 'host' => '127.0.0.1', /* db host address */ 'port' => '1433', /* db host port */ @@ -322,16 +333,16 @@ $CONFIG = [ 'password' => '123456', ], ], - 'log' => [ + 'log' => [ 'file' => [ 'path' => __DIR__ . '/Logs', ], ], - 'page' => [ + 'page' => [ 'root' => '/', 'https' => false, ], - 'app' => [ + 'app' => [ 'path' => __DIR__, 'default' => [ 'app' => 'Backend', @@ -350,7 +361,7 @@ $CONFIG = [ ], ], ], - 'socket' => [ + 'socket' => [ 'master' => [ 'host' => '127.0.0.1', 'limit' => 300, @@ -360,7 +371,7 @@ $CONFIG = [ 'language' => [ 'en', ], - 'apis' => [ + 'apis' => [ ], ];