bug fixes and item management improvements

This commit is contained in:
Dennis Eichhorn 2023-05-24 18:11:37 +00:00
parent 1a91f31235
commit bbfb16cb7f
3 changed files with 56 additions and 248 deletions

View File

@ -86,6 +86,16 @@
"foreignTable": "country", "foreignTable": "country",
"foreignKey": "country_code2" "foreignKey": "country_code2"
}, },
"address_lat": {
"name": "address_lat",
"type": "DECIMAL(10,6)",
"null": false
},
"address_lon": {
"name": "address_lon",
"type": "DECIMAL(10,6)",
"null": false
},
"address_type": { "address_type": {
"name": "address_type", "name": "address_type",
"type": "INT", "type": "INT",

View File

@ -502,14 +502,7 @@ final class ApiController extends Controller
\file_put_contents(__DIR__ . '/../../../config.php', "<?php\ndeclare(strict_types=1);\nreturn " . ArrayParser::serializeArray($config) . ';'); \file_put_contents(__DIR__ . '/../../../config.php', "<?php\ndeclare(strict_types=1);\nreturn " . ArrayParser::serializeArray($config) . ';');
$this->fillJsonResponse( $this->createStandardUpdateResponse($request, $response, $dataSettings);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$dataSettings
);
} }
/** /**
@ -595,14 +588,7 @@ final class ApiController extends Controller
$this->updateModel($request->header->account, $old, $new, SettingMapper::class, 'settings', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, SettingMapper::class, 'settings', $request->getOrigin());
} }
$this->fillJsonResponse( $this->createStandardUpdateResponse($request, $response, $dataSettings);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$dataSettings
);
} }
/** /**
@ -629,15 +615,7 @@ final class ApiController extends Controller
$setting = $this->createSettingFromRequest($request); $setting = $this->createSettingFromRequest($request);
$this->createModel($request->header->account, $setting, SettingMapper::class, 'setting', $request->getOrigin()); $this->createModel($request->header->account, $setting, SettingMapper::class, 'setting', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $setting);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'),
$setting
);
} }
/** /**
@ -756,14 +734,7 @@ final class ApiController extends Controller
AccountMapper::update()->execute($account); AccountMapper::update()->execute($account);
$this->fillJsonResponse( $this->createStandardUpdateResponse($request, $response, $account);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$account
);
} }
/** /**
@ -830,20 +801,18 @@ final class ApiController extends Controller
if (($request->getData('localization_load') ?? '-1') !== '-1') { if (($request->getData('localization_load') ?? '-1') !== '-1') {
$locale = \explode('_', $request->getData('localization_load')); $locale = \explode('_', $request->getData('localization_load'));
$old = clone $account->l11n;
$account->l11n->loadFromLanguage($locale[0], $locale[1]); $account->l11n->loadFromLanguage($locale[0], $locale[1]);
LocalizationMapper::update()->execute($account->l11n); $this->updateModel($request->header->account, $old, $account->l11n, LocalizationMapper::class, 'l11n', $request->getOrigin());
$this->createStandardUpdateResponse($request, $response, $account->l11n);
$this->fillJsonResponse(
$request, $response, NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$account->l11n
);
return; return;
} }
$old = clone $account->l11n;
$dataSettings = $request->getLike('settings_(.*)'); $dataSettings = $request->getLike('settings_(.*)');
$account->l11n->setCountry($dataSettings['settings_country']); $account->l11n->setCountry($dataSettings['settings_country']);
@ -932,14 +901,8 @@ final class ApiController extends Controller
] ]
); );
LocalizationMapper::update()->execute($account->l11n); $this->updateModel($request->header->account, $old, $account->l11n, LocalizationMapper::class, 'l11n', $request->getOrigin());
$this->createStandardUpdateResponse($request, $response, $account->l11n);
$this->fillJsonResponse(
$request, $response, NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$account->l11n
);
} }
/** /**
@ -967,14 +930,7 @@ final class ApiController extends Controller
$status = $upload->upload($uploadedFiles, ['logo.png'], true); $status = $upload->upload($uploadedFiles, ['logo.png'], true);
} }
$this->fillJsonResponse( $this->createStandardUpdateResponse($request, $response, []);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
[]
);
} }
/** /**
@ -1014,14 +970,7 @@ final class ApiController extends Controller
$this->apiGroupCreate($newRequest, $response, $data); $this->apiGroupCreate($newRequest, $response, $data);
} }
$this->fillJsonResponse( $this->createStandardCreateResponse($request, $response, $app);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'),
$app
);
} }
/** /**
@ -1167,14 +1116,7 @@ final class ApiController extends Controller
/** @var \Modules\Admin\Models\Group $group */ /** @var \Modules\Admin\Models\Group $group */
$group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->fillJsonResponse( $this->createStandardReturnResponse($request, $response, $group);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulReturn'),
$group
);
} }
/** /**
@ -1195,16 +1137,9 @@ final class ApiController extends Controller
/** @var \Modules\Admin\Models\Group $old */ /** @var \Modules\Admin\Models\Group $old */
$old = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $old = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute();
$new = $this->updateGroupFromRequest($request, clone $old); $new = $this->updateGroupFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, GroupMapper::class, 'group', $request->getOrigin());
$this->fillJsonResponse( $this->updateModel($request->header->account, $old, $new, GroupMapper::class, 'group', $request->getOrigin());
$request, $this->createStandardUpdateResponse($request, $response, $new);
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$new
);
} }
/** /**
@ -1271,15 +1206,7 @@ final class ApiController extends Controller
$group = $this->createGroupFromRequest($request); $group = $this->createGroupFromRequest($request);
$this->createModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin()); $this->createModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $group);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'),
$group
);
} }
/** /**
@ -1320,14 +1247,7 @@ final class ApiController extends Controller
{ {
if (((int) $request->getData('id')) === 3) { if (((int) $request->getData('id')) === 3) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse( $this->createInvalidDeleteResponse($request, $response, []);
$request,
$response,
NotificationLevel::ERROR,
'Group',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'InvalidDelete'),
[]
);
return; return;
} }
@ -1335,15 +1255,7 @@ final class ApiController extends Controller
/** @var \Modules\Admin\Models\Group $group */ /** @var \Modules\Admin\Models\Group $group */
$group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute(); $group = GroupMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin()); $this->deleteModel($request->header->account, $group, GroupMapper::class, 'group', $request->getOrigin());
$this->createStandardDeleteResponse($request, $response, $group);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulDelete'),
$group
);
} }
/** /**
@ -1390,15 +1302,7 @@ final class ApiController extends Controller
{ {
/** @var Account $account */ /** @var Account $account */
$account = AccountMapper::get()->where('id', (int) $request->getData('id'))->execute(); $account = AccountMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->createStandardReturnResponse($request, $response, $account);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulReturn'),
$account
);
} }
/** /**
@ -1587,11 +1491,11 @@ final class ApiController extends Controller
$request, $request,
$response, $response,
NotificationLevel::OK, NotificationLevel::OK,
$this->app->l11nManager->getText($response->getLanguage(), 'Admin', 'Api', 'AccountCreateTitle'), '',
\str_replace( \str_replace(
'{url}', '{url}',
UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $account->id), UriFactory::build('{/base}/admin/account/settings?{?}&id=' . $account->id),
$this->app->l11nManager->getText($response->getLanguage(), 'Admin', 'Api', 'AccountCreateMsg' $this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'
)), )),
$account $account
); );
@ -2150,15 +2054,7 @@ final class ApiController extends Controller
/** @var Account $account */ /** @var Account $account */
$account = AccountMapper::get()->where('id', (int) ($request->getData('id')))->execute(); $account = AccountMapper::get()->where('id', (int) ($request->getData('id')))->execute();
$this->deleteModel($request->header->account, $account, AccountMapper::class, 'account', $request->getOrigin()); $this->deleteModel($request->header->account, $account, AccountMapper::class, 'account', $request->getOrigin());
$this->createStandardDeleteResponse($request, $response, $account);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulDelete'),
$account
);
} }
/** /**
@ -2183,15 +2079,7 @@ final class ApiController extends Controller
$new = $this->updateAccountFromRequest($request, clone $old); $new = $this->updateAccountFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, AccountMapper::class, 'account', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, AccountMapper::class, 'account', $request->getOrigin());
$this->createStandardUpdateResponse($request, $response, $new);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$new
);
} }
/** /**
@ -2434,15 +2322,7 @@ final class ApiController extends Controller
{ {
/** @var AccountPermission $account */ /** @var AccountPermission $account */
$account = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $account = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->createStandardReturnResponse($request, $response, $account);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulReturn'),
$account
);
} }
/** /**
@ -2462,15 +2342,7 @@ final class ApiController extends Controller
{ {
/** @var GroupPermission $group */ /** @var GroupPermission $group */
$group = GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $group = GroupPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->createStandardReturnResponse($request, $response, $group);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulReturn'),
$group
);
} }
/** /**
@ -2493,28 +2365,13 @@ final class ApiController extends Controller
if ($permission->getGroup() === 3) { if ($permission->getGroup() === 3) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse( $this->createInvalidDeleteResponse($request, $response, []);
$request,
$response,
NotificationLevel::ERROR,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'InvalidDelete'),
[]
);
return; return;
} }
$this->deleteModel($request->header->account, $permission, GroupPermissionMapper::class, 'group-permission', $request->getOrigin()); $this->deleteModel($request->header->account, $permission, GroupPermissionMapper::class, 'group-permission', $request->getOrigin());
$this->createStandardDeleteResponse($request, $response, $permission);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SucessfulDelete'),
$permission
);
} }
/** /**
@ -2535,15 +2392,7 @@ final class ApiController extends Controller
/** @var AccountPermission $permission */ /** @var AccountPermission $permission */
$permission = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute(); $permission = AccountPermissionMapper::get()->where('id', (int) $request->getData('id'))->execute();
$this->deleteModel($request->header->account, $permission, AccountPermissionMapper::class, 'user-permission', $request->getOrigin()); $this->deleteModel($request->header->account, $permission, AccountPermissionMapper::class, 'user-permission', $request->getOrigin());
$this->createStandardDeleteResponse($request, $response, $permission);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SucessfulDelete'),
$permission
);
} }
/** /**
@ -2563,14 +2412,7 @@ final class ApiController extends Controller
{ {
if (((int) $request->getData('permissionref')) === 3) { if (((int) $request->getData('permissionref')) === 3) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse( $this->createInvalidUpdateResponse($request, $response, []);
$request,
$response,
NotificationLevel::ERROR,
'Group',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'InvalidUpdate'),
[]
);
return; return;
} }
@ -2592,15 +2434,7 @@ final class ApiController extends Controller
} }
$this->createModel($request->header->account, $permission, GroupPermissionMapper::class, 'group-permission', $request->getOrigin()); $this->createModel($request->header->account, $permission, GroupPermissionMapper::class, 'group-permission', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $permission);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'),
$permission
);
} }
/** /**
@ -2635,15 +2469,7 @@ final class ApiController extends Controller
} }
$this->createModel($request->header->account, $permission, AccountPermissionMapper::class, 'account-permission', $request->getOrigin()); $this->createModel($request->header->account, $permission, AccountPermissionMapper::class, 'account-permission', $request->getOrigin());
$this->createStandardCreateResponse($request, $response, $permission);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulCreate'),
$permission
);
} }
/** /**
@ -2740,15 +2566,7 @@ final class ApiController extends Controller
$new = $this->updatePermissionFromRequest($request, clone $old); $new = $this->updatePermissionFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, AccountPermissionMapper::class, 'account-permission', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, AccountPermissionMapper::class, 'account-permission', $request->getOrigin());
$this->createStandardUpdateResponse($request, $response, $new);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$new
);
} }
/** /**
@ -2771,14 +2589,7 @@ final class ApiController extends Controller
if ($old->getGroup() === 3) { if ($old->getGroup() === 3) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse( $this->createInvalidUpdateResponse($request, $response, []);
$request,
$response,
NotificationLevel::ERROR,
'Group',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'InvalidUpdate'),
[]
);
return; return;
} }
@ -2787,15 +2598,7 @@ final class ApiController extends Controller
$new = $this->updatePermissionFromRequest($request, clone $old); $new = $this->updatePermissionFromRequest($request, clone $old);
$this->updateModel($request->header->account, $old, $new, GroupPermissionMapper::class, 'group-permission', $request->getOrigin()); $this->updateModel($request->header->account, $old, $new, GroupPermissionMapper::class, 'group-permission', $request->getOrigin());
$this->createStandardUpdateResponse($request, $response, $new);
$this->fillJsonResponse(
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SuccessfulUpdate'),
$new
);
} }
/** /**
@ -2844,7 +2647,7 @@ final class ApiController extends Controller
$groups = \array_map('intval', $request->getDataList('igroup-idlist')); $groups = \array_map('intval', $request->getDataList('igroup-idlist'));
$this->createModelRelation($request->header->account, $account, $groups, AccountMapper::class, 'groups', 'account-group', $request->getOrigin()); $this->createModelRelation($request->header->account, $account, $groups, AccountMapper::class, 'groups', 'account-group', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Relation added', []); $this->createStandardAddResponse($request, $response, $groups);
} }
/** /**
@ -2866,7 +2669,7 @@ final class ApiController extends Controller
$accounts = \array_map('intval', $request->getDataList('iaccount-idlist')); $accounts = \array_map('intval', $request->getDataList('iaccount-idlist'));
$this->createModelRelation($request->header->account, $group, $accounts, GroupMapper::class, 'accounts', 'group-account', $request->getOrigin()); $this->createModelRelation($request->header->account, $group, $accounts, GroupMapper::class, 'accounts', 'group-account', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Relation added', []); $this->createStandardAddResponse($request, $response, $accounts);
} }
/** /**
@ -2889,13 +2692,13 @@ final class ApiController extends Controller
if (\in_array(3, $groups) && $account === $request->header->account) { if (\in_array(3, $groups) && $account === $request->header->account) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse($request, $response, NotificationLevel::ERROR, 'Account', 'Admin group cannot be removed from yourself', []); $this->createInvalidRemoveResponse($request, $response, []);
return; return;
} }
$this->deleteModelRelation($request->header->account, $account, $groups, AccountMapper::class, 'groups', 'account-group', $request->getOrigin()); $this->deleteModelRelation($request->header->account, $account, $groups, AccountMapper::class, 'groups', 'account-group', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Relation deleted', []); $this->createStandardRemoveResponse($request, $response, $groups);
} }
/** /**
@ -2918,13 +2721,13 @@ final class ApiController extends Controller
if (\in_array($request->header->account, $accounts) && $group === 3) { if (\in_array($request->header->account, $accounts) && $group === 3) {
// admin group cannot be deleted // admin group cannot be deleted
$this->fillJsonResponse($request, $response, NotificationLevel::ERROR, 'Group', 'Admin group cannot be removed from yourself', []); $this->createInvalidRemoveResponse($request, $response, []);
return; return;
} }
$this->deleteModelRelation($request->header->account, $group, $accounts, GroupMapper::class, 'accounts', 'group-account', $request->getOrigin()); $this->deleteModelRelation($request->header->account, $group, $accounts, GroupMapper::class, 'accounts', 'group-account', $request->getOrigin());
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Relation deleted', []); $this->createStandardRemoveResponse($request, $response, $accounts);
} }
/** /**
@ -3130,14 +2933,7 @@ final class ApiController extends Controller
AccountMapper::class, 'contacts', '', $request->getOrigin() AccountMapper::class, 'contacts', '', $request->getOrigin()
); );
$this->fillJsonResponse( $this->createStandardCreateResponse($request, $response, $contact);
$request,
$response,
NotificationLevel::OK,
'',
$this->app->l11nManager->getText($response->getLanguage(), '0', '0', 'SucessfulCreate'),
$contact
);
} }
/** /**

View File

@ -44,8 +44,10 @@ final class AddressMapper extends DataMapperFactory
'address_postal' => ['name' => 'address_postal', 'type' => 'string', 'internal' => 'postal'], 'address_postal' => ['name' => 'address_postal', 'type' => 'string', 'internal' => 'postal'],
'address_state' => ['name' => 'address_state', 'type' => 'string', 'internal' => 'state'], 'address_state' => ['name' => 'address_state', 'type' => 'string', 'internal' => 'state'],
'address_city' => ['name' => 'address_city', 'type' => 'string', 'internal' => 'city'], 'address_city' => ['name' => 'address_city', 'type' => 'string', 'internal' => 'city'],
'address_country' => ['name' => 'address_country', 'type' => 'string', 'internal' => 'country'], 'address_country' => ['name' => 'address_country', 'type' => 'string', 'internal' => 'country'],
'address_type' => ['name' => 'address_type', 'type' => 'int', 'internal' => 'type'], 'address_type' => ['name' => 'address_type', 'type' => 'int', 'internal' => 'type'],
'address_lat' => ['name' => 'address_lat', 'type' => 'float', 'internal' => 'lat'],
'address_lon' => ['name' => 'address_lon', 'type' => 'float', 'internal' => 'lon'],
]; ];
/** /**