From d8d99d4fa1fe43df7db673d1919cadbe769ea7f6 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Fri, 12 Apr 2024 00:52:07 +0000 Subject: [PATCH] fix bugs --- Admin/Install/Navigation.install.json | 54 +++++++++--------- Controller/ApiController.php | 81 +++++++-------------------- 2 files changed, 48 insertions(+), 87 deletions(-) diff --git a/Admin/Install/Navigation.install.json b/Admin/Install/Navigation.install.json index 3fd89a4..554e7d1 100755 --- a/Admin/Install/Navigation.install.json +++ b/Admin/Install/Navigation.install.json @@ -19,7 +19,7 @@ "type": 2, "subtype": 1, "name": "Attributes", - "uri": "{/base}/item/attribute/type/list?{?}", + "uri": "{/base}/item/attribute/type/list", "target": "self", "icon": null, "order": 5, @@ -33,7 +33,7 @@ "type": 3, "subtype": 1, "name": "Types", - "uri": "{/base}/item/attribute/type/list?{?}", + "uri": "{/base}/item/attribute/type/list", "target": "self", "icon": null, "order": 5, @@ -48,7 +48,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/item/attribute/type/create?{?}", + "uri": "{/base}/item/attribute/type/create", "target": "self", "icon": null, "order": 10, @@ -65,7 +65,7 @@ "type": 2, "subtype": 1, "name": "Items", - "uri": "{/base}/item/list?{?}", + "uri": "{/base}/item/list", "target": "self", "icon": null, "order": 10, @@ -79,7 +79,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/item/list?{?}", + "uri": "{/base}/item/list", "target": "self", "icon": null, "order": 1, @@ -93,7 +93,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/item/view?{?}", + "uri": "{/base}/item/view", "target": "self", "icon": null, "order": 1, @@ -110,7 +110,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/item/create?{?}", + "uri": "{/base}/item/create", "target": "self", "icon": null, "order": 5, @@ -127,7 +127,7 @@ "type": 2, "subtype": 1, "name": "Materials", - "uri": "{/base}/item/material/list?{?}", + "uri": "{/base}/item/material/list", "target": "self", "icon": null, "order": 5, @@ -141,7 +141,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/item/material/list?{?}", + "uri": "{/base}/item/material/list", "target": "self", "icon": null, "order": 5, @@ -156,7 +156,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/item/material/create?{?}", + "uri": "{/base}/item/material/create", "target": "self", "icon": null, "order": 10, @@ -175,7 +175,7 @@ "type": 2, "subtype": 1, "name": "Items", - "uri": "{/base}/sales/item/list?{?}", + "uri": "{/base}/sales/item/list", "target": "self", "icon": null, "order": 10, @@ -189,7 +189,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/sales/item/list?{?}", + "uri": "{/base}/sales/item/list", "target": "self", "icon": null, "order": 1, @@ -203,7 +203,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/sales/item/view?{?}", + "uri": "{/base}/sales/item/view", "target": "self", "icon": null, "order": 1, @@ -220,7 +220,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/sales/item/create?{?}", + "uri": "{/base}/sales/item/create", "target": "self", "icon": null, "order": 5, @@ -237,7 +237,7 @@ "type": 2, "subtype": 1, "name": "Items", - "uri": "{/base}/purchase/item/list?{?}", + "uri": "{/base}/purchase/item/list", "target": "self", "icon": null, "order": 10, @@ -251,7 +251,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/purchase/item/list?{?}", + "uri": "{/base}/purchase/item/list", "target": "self", "icon": null, "order": 1, @@ -265,7 +265,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/purchase/item/view?{?}", + "uri": "{/base}/purchase/item/view", "target": "self", "icon": null, "order": 1, @@ -282,7 +282,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/purchase/item/create?{?}", + "uri": "{/base}/purchase/item/create", "target": "self", "icon": null, "order": 5, @@ -299,7 +299,7 @@ "type": 2, "subtype": 1, "name": "Items", - "uri": "{/base}/warehouse/item/list?{?}", + "uri": "{/base}/warehouse/item/list", "target": "self", "icon": null, "order": 10, @@ -313,7 +313,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/warehouse/item/list?{?}", + "uri": "{/base}/warehouse/item/list", "target": "self", "icon": null, "order": 1, @@ -327,7 +327,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/warehouse/item/view?{?}", + "uri": "{/base}/warehouse/item/view", "target": "self", "icon": null, "order": 1, @@ -344,7 +344,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/warehouse/item/create?{?}", + "uri": "{/base}/warehouse/item/create", "target": "self", "icon": null, "order": 5, @@ -361,7 +361,7 @@ "type": 2, "subtype": 1, "name": "Items", - "uri": "{/base}/production/item/list?{?}", + "uri": "{/base}/production/item/list", "target": "self", "icon": null, "order": 5, @@ -375,7 +375,7 @@ "type": 3, "subtype": 1, "name": "List", - "uri": "{/base}/production/item/list?{?}", + "uri": "{/base}/production/item/list", "target": "self", "icon": null, "order": 1, @@ -389,7 +389,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/production/item/view?{?}", + "uri": "{/base}/production/item/view", "target": "self", "icon": null, "order": 1, @@ -406,7 +406,7 @@ "type": 3, "subtype": 1, "name": "Create", - "uri": "{/base}/production/item/create?{?}", + "uri": "{/base}/production/item/create", "target": "self", "icon": null, "order": 5, @@ -423,7 +423,7 @@ "type": 3, "subtype": 1, "name": "Item", - "uri": "{/base}/purchase/analysis/item?{?}", + "uri": "{/base}/purchase/analysis/item", "target": "self", "icon": null, "order": 10, diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 43dbef0..07c5655 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -32,7 +32,6 @@ use Modules\ItemManagement\Models\SettingsEnum as ItemSettingsEnum; use Modules\ItemManagement\Models\StockIdentifierType; use Modules\Media\Models\Collection; use Modules\Media\Models\CollectionMapper; -use Modules\Media\Models\MediaMapper; use Modules\Media\Models\MediaTypeMapper; use Modules\Media\Models\PathSettings; use phpOMS\Account\PermissionType; @@ -308,47 +307,28 @@ final class ApiController extends Controller $uploadedFiles = $request->files['item_profile_image'] ?? []; if (!empty($uploadedFiles)) { + /** @var \Modules\Media\Models\MediaType $profileImageType */ + $profileImageType = MediaTypeMapper::get() + ->where('name', 'item_profile_image') + ->execute(); + // upload image - $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( + $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: [], fileNames: [], files: $uploadedFiles, account: $request->header->account, basePath: __DIR__ . '/../../../Modules/Media/Files' . $path, virtualPath: $path, - pathSettings: PathSettings::FILE_PATH - ); - - // create type / media relation - /** @var \Modules\Media\Models\MediaType $profileImageType */ - $profileImageType = MediaTypeMapper::get() - ->where('name', 'item_profile_image') - ->execute(); - - $this->createModelRelation( - $request->header->account, - $uploaded[0]->id, - $profileImageType->id, - MediaMapper::class, - 'types', - '', - $request->getOrigin() - ); - - // create item relation - $this->createModelRelation( - $request->header->account, - $item->id, - $uploaded[0]->id, - ItemMapper::class, - 'files', - '', - $request->getOrigin() + pathSettings: PathSettings::FILE_PATH, + type: $profileImageType->id, + rel: $item->id, + mapper: ItemMapper::class, + field: 'files' ); } $this->createItemSegmentation($request, $response, $item); - $this->createStandardCreateResponse($request, $response, $item); } @@ -407,7 +387,7 @@ final class ApiController extends Controller private function createMediaDirForItem(int $id, int $createdBy) : Collection { $collection = new Collection(); - $collection->name = $id; + $collection->name = (string) $id; $collection->setVirtualPath('/Modules/ItemManagement/Items'); $collection->setPath('/Modules/Media/Files/Modules/ItemManagement/Items/' . $id); $collection->createdBy = new NullAccount($createdBy); @@ -770,11 +750,9 @@ final class ApiController extends Controller return; } - $uploadedFiles = $request->files; - - if (empty($uploadedFiles)) { + if (empty($request->files)) { $response->header->status = RequestStatusCode::R_400; - $this->createInvalidCreateResponse($request, $response, $uploadedFiles); + $this->createInvalidCreateResponse($request, $response, $request->files); return; } @@ -789,40 +767,23 @@ final class ApiController extends Controller $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: $request->getDataList('names'), fileNames: $request->getDataList('filenames'), - files: $uploadedFiles, + files: $request->files, account: $request->header->account, basePath: __DIR__ . '/../../../Modules/Media/Files' . $path, virtualPath: $path, - pathSettings: PathSettings::FILE_PATH + pathSettings: PathSettings::FILE_PATH, + type: $request->getDataInt('type'), + rel: $item->id, + mapper: ItemMapper::class, + field: 'files' ); - if ($request->hasData('type')) { - foreach ($uploaded as $file) { - $this->createModelRelation( - $request->header->account, - $file->id, - $request->getDataInt('type'), - MediaMapper::class, - 'types', - '', - $request->getOrigin() - ); - } - } - - if (empty($uploaded)) { + if (empty($uploaded->sources)) { $this->createInvalidAddResponse($request, $response, []); return; } - $this->createModelRelation( - $request->header->account, - (int) $request->getData('item'), - \reset($uploaded)->id, - ItemMapper::class, 'files', '', $request->getOrigin() - ); - $this->createStandardUpdateResponse($request, $response, $uploaded); }