auto fixes + some impl.

This commit is contained in:
Dennis Eichhorn 2024-01-26 22:53:59 +00:00
parent e83bfffc2f
commit 8106743eec
44 changed files with 525 additions and 506 deletions

View File

@ -248,6 +248,11 @@
"type": "TINYINT(1)", "type": "TINYINT(1)",
"null": false "null": false
}, },
"contractmgmt_attr_type_internal": {
"name": "contractmgmt_attr_type_internal",
"type": "TINYINT(1)",
"null": false
},
"contractmgmt_attr_type_required": { "contractmgmt_attr_type_required": {
"description": "Every contract must have this attribute type if set to true.", "description": "Every contract must have this attribute type if set to true.",
"name": "contractmgmt_attr_type_required", "name": "contractmgmt_attr_type_required",

View File

@ -20,7 +20,6 @@ use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Module\InstallerAbstract; use phpOMS\Module\InstallerAbstract;
use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleInfo;
use phpOMS\Uri\HttpUri;
/** /**
* Installer class. * Installer class.
@ -81,7 +80,7 @@ final class Installer extends InstallerAbstract
foreach ($types as $type) { foreach ($types as $type) {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('name', $type['name'] ?? ''); $request->setData('name', $type['name'] ?? '');
@ -109,7 +108,7 @@ final class Installer extends InstallerAbstract
} }
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', $l11n); $request->setData('title', $l11n);

View File

@ -18,7 +18,7 @@ use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb; use phpOMS\Router\RouteVerb;
return [ return [
'^.*/contract/type.*$' => [ '^.*/contract/type(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\ApiContractTypeController:apiContractTypeCreate', 'dest' => '\Modules\ContractManagement\Controller\ApiContractTypeController:apiContractTypeCreate',
'verb' => RouteVerb::PUT, 'verb' => RouteVerb::PUT,
@ -60,7 +60,7 @@ return [
], ],
], ],
'^.*/contract/attribute.*$' => [ '^.*/contract/attribute(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeCreate', 'dest' => '\Modules\ContractManagement\Controller\ApiAttributeController:apiContractAttributeCreate',
'verb' => RouteVerb::PUT, 'verb' => RouteVerb::PUT,

View File

@ -18,7 +18,7 @@ use phpOMS\Account\PermissionType;
use phpOMS\Router\RouteVerb; use phpOMS\Router\RouteVerb;
return [ return [
'^.*/contract/list.*$' => [ '^.*/contract/list(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractList', 'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractList',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -29,7 +29,7 @@ return [
], ],
], ],
], ],
'^.*/contract/single.*$' => [ '^.*/contract/view(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContract', 'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContract',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -40,7 +40,7 @@ return [
], ],
], ],
], ],
'^.*/contract/type/list.*$' => [ '^.*/contract/type/list(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractTypeList', 'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractTypeList',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
@ -51,7 +51,7 @@ return [
], ],
], ],
], ],
'^.*/contract/type/profile.*$' => [ '^.*/contract/type/view(\?.*$|$)' => [
[ [
'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractType', 'dest' => '\Modules\ContractManagement\Controller\BackendController:viewContractType',
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,

View File

@ -148,13 +148,20 @@ final class ApiAttributeController extends Controller
->where('id', $request->getDataInt('type') ?? 0) ->where('id', $request->getDataInt('type') ?? 0)
->execute(); ->execute();
if ($type->isInternal) {
$response->header->status = RequestStatusCode::R_403;
$this->createInvalidCreateResponse($request, $response, $val);
return;
}
$attrValue = $this->createAttributeValueFromRequest($request, $type); $attrValue = $this->createAttributeValueFromRequest($request, $type);
$this->createModel($request->header->account, $attrValue, ContractAttributeValueMapper::class, 'attr_value', $request->getOrigin()); $this->createModel($request->header->account, $attrValue, ContractAttributeValueMapper::class, 'attr_value', $request->getOrigin());
if ($attrValue->isDefault) { if ($attrValue->isDefault) {
$this->createModelRelation( $this->createModelRelation(
$request->header->account, $request->header->account,
(int) $request->getData('type'), $type->id,
$attrValue->id, $attrValue->id,
ContractAttributeTypeMapper::class, 'defaults', '', $request->getOrigin() ContractAttributeTypeMapper::class, 'defaults', '', $request->getOrigin()
); );

View File

@ -73,7 +73,10 @@ final class ApiContractTypeController extends Controller
private function createContractTypeFromRequest(RequestAbstract $request) : BaseStringL11nType private function createContractTypeFromRequest(RequestAbstract $request) : BaseStringL11nType
{ {
$contractType = new BaseStringL11nType(); $contractType = new BaseStringL11nType();
$contractType->setL11n($request->getDataString('title') ?? '', $request->getDataString('language') ?? ISO639x1Enum::_EN); $contractType->setL11n(
$request->getDataString('title') ?? '',
ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? ISO639x1Enum::_EN
);
$contractType->title = $request->getDataString('name') ?? ''; $contractType->title = $request->getDataString('name') ?? '';
return $contractType; return $contractType;
@ -139,9 +142,7 @@ final class ApiContractTypeController extends Controller
{ {
$contractTypeL11n = new BaseStringL11n(); $contractTypeL11n = new BaseStringL11n();
$contractTypeL11n->ref = $request->getDataInt('type') ?? 0; $contractTypeL11n->ref = $request->getDataInt('type') ?? 0;
$contractTypeL11n->setLanguage( $contractTypeL11n->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $request->header->l11n->language;
$request->getDataString('language') ?? $request->header->l11n->language
);
$contractTypeL11n->content = $request->getDataString('title') ?? ''; $contractTypeL11n->content = $request->getDataString('title') ?? '';
return $contractTypeL11n; return $contractTypeL11n;
@ -327,9 +328,7 @@ final class ApiContractTypeController extends Controller
*/ */
public function updateContractTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n public function updateContractTypeL11nFromRequest(RequestAbstract $request, BaseStringL11n $new) : BaseStringL11n
{ {
$new->setLanguage( $new->language = ISO639x1Enum::tryFromValue($request->getDataString('language')) ?? $new->language;
$request->getDataString('language') ?? $new->language
);
$new->content = $request->getDataString('title') ?? $new->content; $new->content = $request->getDataString('title') ?? $new->content;
return $new; return $new;

View File

@ -150,7 +150,7 @@ final class BackendController extends Controller
{ {
$view = new View($this->app->l11nManager, $request, $response); $view = new View($this->app->l11nManager, $request, $response);
$view->setTemplate('/Modules/ContractManagement/Theme/Backend/contract-single'); $view->setTemplate('/Modules/ContractManagement/Theme/Backend/contract-view');
$view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1007901001, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1007901001, $request, $response);
$contract = ContractMapper::get() $contract = ContractMapper::get()

View File

@ -43,6 +43,7 @@ final class ContractAttributeTypeMapper extends DataMapperFactory
'contractmgmt_attr_type_fields' => ['name' => 'contractmgmt_attr_type_fields', 'type' => 'int', 'internal' => 'fields'], 'contractmgmt_attr_type_fields' => ['name' => 'contractmgmt_attr_type_fields', 'type' => 'int', 'internal' => 'fields'],
'contractmgmt_attr_type_custom' => ['name' => 'contractmgmt_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'], 'contractmgmt_attr_type_custom' => ['name' => 'contractmgmt_attr_type_custom', 'type' => 'bool', 'internal' => 'custom'],
'contractmgmt_attr_type_repeatable' => ['name' => 'contractmgmt_attr_type_repeatable', 'type' => 'bool', 'internal' => 'repeatable'], 'contractmgmt_attr_type_repeatable' => ['name' => 'contractmgmt_attr_type_repeatable', 'type' => 'bool', 'internal' => 'repeatable'],
'contractmgmt_attr_type_internal' => ['name' => 'contractmgmt_attr_type_internal', 'type' => 'bool', 'internal' => 'isInternal'],
'contractmgmt_attr_type_pattern' => ['name' => 'contractmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'], 'contractmgmt_attr_type_pattern' => ['name' => 'contractmgmt_attr_type_pattern', 'type' => 'string', 'internal' => 'validationPattern'],
'contractmgmt_attr_type_required' => ['name' => 'contractmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'], 'contractmgmt_attr_type_required' => ['name' => 'contractmgmt_attr_type_required', 'type' => 'bool', 'internal' => 'isRequired'],
]; ];

View File

@ -73,7 +73,7 @@ echo $this->data['nav']->render(); ?>
</label> </label>
<tbody> <tbody>
<?php foreach ($contracts as $key => $value) : <?php foreach ($contracts as $key => $value) :
$url = UriFactory::build('{/base}/contract/single?{?}&id=' . $value->id); $url = UriFactory::build('{/base}/contract/view?{?}&id=' . $value->id);
$type = 'ok'; $type = 'ok';
if (($value->end->getTimestamp() < $now->getTimestamp() && $value->end->getTimestamp() + 7776000 > $now->getTimestamp()) if (($value->end->getTimestamp() < $now->getTimestamp() && $value->end->getTimestamp() + 7776000 > $now->getTimestamp())
@ -88,7 +88,7 @@ echo $this->data['nav']->render(); ?>
?> ?>
<tr tabindex="0" data-href="<?= $url; ?>"> <tr tabindex="0" data-href="<?= $url; ?>">
<td data-label="<?= $this->getHtml('Title'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->title); ?></a> <td data-label="<?= $this->getHtml('Title'); ?>"><a href="<?= $url; ?>"><?= $this->printHtml($value->title); ?></a>
<td data-label="<?= $this->getHtml('Account'); ?>"><a class="content" href="<?= UriFactory::build('{/base}/profile/single?{?}&for=' . $value->account->id); ?>"><?= $this->printHtml($value->account->name1); ?> <?= $this->printHtml($value->account->name2); ?></a> <td data-label="<?= $this->getHtml('Account'); ?>"><a class="content" href="<?= UriFactory::build('{/base}/profile/view?{?}&for=' . $value->account->id); ?>"><?= $this->printHtml($value->account->name1); ?> <?= $this->printHtml($value->account->name2); ?></a>
<td data-label="<?= $this->getHtml('End'); ?>"><a href="<?= $url; ?>"><span class="tag <?= $type; ?>"><?= $value->end !== null ? $value->end->format('Y-m-d') : ''; ?></span></a> <td data-label="<?= $this->getHtml('End'); ?>"><a href="<?= $url; ?>"><span class="tag <?= $type; ?>"><?= $value->end !== null ? $value->end->format('Y-m-d') : ''; ?></span></a>
<?php endforeach; ?> <?php endforeach; ?>
</table> </table>

View File

@ -55,7 +55,7 @@ echo $this->data['nav']->render(); ?>
<?php <?php
$count = 0; $count = 0;
foreach ($types as $key => $value) : ++$count; foreach ($types as $key => $value) : ++$count;
$url = UriFactory::build('{/base}/contract/type/profile?{?}&id=' . $value->id); $url = UriFactory::build('{/base}/contract/type/view?{?}&id=' . $value->id);
?> ?>
<tr data-href="<?= $url; ?>"> <tr data-href="<?= $url; ?>">
<td><a href="<?= $url; ?>"><?= $value->id; ?></a> <td><a href="<?= $url; ?>"><?= $value->id; ?></a>

View File

@ -1,4 +1,15 @@
<?php <?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Modules\ContractManagement\tests
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1); declare(strict_types=1);
\ini_set('memory_limit', '2048M'); \ini_set('memory_limit', '2048M');

View File

@ -19,7 +19,6 @@ use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Uri\HttpUri;
trait ApiControllerAttributeTrait trait ApiControllerAttributeTrait
{ {
@ -30,7 +29,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeTypeCreate() : void public function testApiContractAttributeTypeCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'EN:1'); $request->setData('title', 'EN:1');
@ -48,7 +47,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeTypeL11nCreate() : void public function testApiContractAttributeTypeL11nCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'DE:2'); $request->setData('title', 'DE:2');
@ -66,7 +65,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeValueIntCreate() : void public function testApiContractAttributeValueIntCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('default', '1'); $request->setData('default', '1');
@ -86,7 +85,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeValueStrCreate() : void public function testApiContractAttributeValueStrCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('value', '1'); $request->setData('value', '1');
@ -105,7 +104,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeValueFloatCreate() : void public function testApiContractAttributeValueFloatCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('value', '1.1'); $request->setData('value', '1.1');
@ -124,7 +123,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeValueDatCreate() : void public function testApiContractAttributeValueDatCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('value', '2020-08-02'); $request->setData('value', '2020-08-02');
@ -143,7 +142,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeCreate() : void public function testApiContractAttributeCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('ref', '1'); $request->setData('ref', '1');
@ -161,7 +160,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeValueCreateInvalidData() : void public function testApiContractAttributeValueCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');
@ -177,7 +176,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeTypeCreateInvalidData() : void public function testApiContractAttributeTypeCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');
@ -193,7 +192,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeTypeL11nCreateInvalidData() : void public function testApiContractAttributeTypeL11nCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');
@ -209,7 +208,7 @@ trait ApiControllerAttributeTrait
public function testApiContractAttributeCreateInvalidData() : void public function testApiContractAttributeCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');

View File

@ -17,7 +17,6 @@ namespace Modules\ContractManagement\tests\Controller\Api;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Uri\HttpUri;
use phpOMS\Utils\TestUtils; use phpOMS\Utils\TestUtils;
trait ApiControllerContractTrait trait ApiControllerContractTrait
@ -29,7 +28,7 @@ trait ApiControllerContractTrait
public function testApiContractCreate() : void public function testApiContractCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'Title'); $request->setData('title', 'Title');
@ -49,7 +48,7 @@ trait ApiControllerContractTrait
public function testApiContractCreateInvalidData() : void public function testApiContractCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');
@ -65,7 +64,7 @@ trait ApiControllerContractTrait
public function testApiContractDocCreate() : void public function testApiContractDocCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
if (!\is_file(__DIR__ . '/test_tmp.pdf')) { if (!\is_file(__DIR__ . '/test_tmp.pdf')) {
\copy(__DIR__ . '/test.pdf', __DIR__ . '/test_tmp.pdf'); \copy(__DIR__ . '/test.pdf', __DIR__ . '/test_tmp.pdf');
@ -96,7 +95,7 @@ trait ApiControllerContractTrait
public function testApiContractDocCreateInvalidData() : void public function testApiContractDocCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');

View File

@ -18,7 +18,6 @@ use phpOMS\Localization\ISO639x1Enum;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse; use phpOMS\Message\Http\HttpResponse;
use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\Http\RequestStatusCode;
use phpOMS\Uri\HttpUri;
trait ApiControllerContractTypeTrait trait ApiControllerContractTypeTrait
{ {
@ -29,7 +28,7 @@ trait ApiControllerContractTypeTrait
public function testApiContractTypeCreate() : void public function testApiContractTypeCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'Test'); $request->setData('title', 'Test');
@ -46,7 +45,7 @@ trait ApiControllerContractTypeTrait
public function testApiContractTypeCreateInvalidData() : void public function testApiContractTypeCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');
@ -62,7 +61,7 @@ trait ApiControllerContractTypeTrait
public function testApiContractTypeL11nCreate() : void public function testApiContractTypeL11nCreate() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('title', 'Test'); $request->setData('title', 'Test');
@ -80,7 +79,7 @@ trait ApiControllerContractTypeTrait
public function testApiContractTypeL11nCreateInvalidData() : void public function testApiContractTypeL11nCreateInvalidData() : void
{ {
$response = new HttpResponse(); $response = new HttpResponse();
$request = new HttpRequest(new HttpUri('')); $request = new HttpRequest();
$request->header->account = 1; $request->header->account = 1;
$request->setData('invalid', '1'); $request->setData('invalid', '1');