diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 41dcfb2..dfa1e7d 100644 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -105,11 +105,6 @@ "null": false, "foreignTable": "suppliermgmt_supplier", "foreignKey": "suppliermgmt_supplier_id" - }, - "suppliermgmt_supplier_media_type": { - "name": "suppliermgmt_supplier_media_type", - "type": "TINYINT", - "null": false } } } diff --git a/Controller/ApiController.php b/Controller/ApiController.php index fd513d6..646820e 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -20,6 +20,7 @@ use Modules\Profile\Models\ContactElementMapper; use Modules\Profile\Models\Profile; use Modules\SupplierManagement\Models\Supplier; use Modules\SupplierManagement\Models\SupplierMapper; +use Modules\Media\Models\PathSettings; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\NotificationLevel; use phpOMS\Message\RequestAbstract; @@ -150,4 +151,50 @@ final class ApiController extends Controller SupplierMapper::class, 'contactElements', '', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Contact Element', 'Contact element successfully created', $contactElement); } + + /** + * Api method to create item files + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiFileCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $uploadedFiles = $request->getFiles() ?? []; + + if (empty($uploadedFiles)) { + $this->fillJsonResponse($request, $response, NotificationLevel::ERROR, 'Item', 'Invalid supplier image', $uploadedFiles); + $response->header->status = RequestStatusCode::R_400; + + return; + } + + $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $request->getData('name') ?? '', + $uploadedFiles, + $request->header->account, + 'Modules/Media/Files/Modules/SupplierManagement/' . ($request->getData('supplier') ?? '0'), + '/Modules/SupplierManagement/' . ($request->getData('supplier') ?? '0'), + $request->getData('type') ?? '', + '', + '', + PathSettings::FILE_PATH + ); + + $this->createModelRelation( + $request->header->account, + (int) $request->getData('supplier'), + \reset($uploaded)->getId(), + SupplierMapper::class, 'files', '', $request->getOrigin() + ); + + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Image', 'Image successfully updated', $uploaded); + } } diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 266d878..e5b6494 100644 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -48,7 +48,7 @@ final class BackendController extends Controller $view->setTemplate('/Modules/SupplierManagement/Theme/Backend/supplier-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1003202001, $request, $response)); - $supplier = SupplierMapper::getAll(); + $supplier = SupplierMapper::getAfterPivot(0, null, 25); $view->addData('supplier', $supplier); return $view; diff --git a/Models/Supplier.php b/Models/Supplier.php index 54964a7..98dc900 100644 --- a/Models/Supplier.php +++ b/Models/Supplier.php @@ -293,4 +293,45 @@ class Supplier { $this->contactElements[] = $element; } + + /** + * Get media file by type + * + * @param string $type Media type + * + * @return Media + * + * @since 1.0.0 + */ + public function getFileByType(string $type) : Media + { + foreach ($this->files as $file) { + if ($file->type === $type) { + return $file; + } + } + + return new NullMedia(); + } + + /** + * Get all media files by type + * + * @param string $type Media type + * + * @return Media[] + * + * @since 1.0.0 + */ + public function getFilesByType(string $type) : array + { + $files = []; + foreach ($this->files as $file) { + if ($file->type === $type) { + $files[] = $file; + } + } + + return $files; + } } diff --git a/Models/SupplierMapper.php b/Models/SupplierMapper.php index d4a7e72..2d8aaa2 100644 --- a/Models/SupplierMapper.php +++ b/Models/SupplierMapper.php @@ -99,8 +99,8 @@ final class SupplierMapper extends DataMapperAbstract 'files' => [ 'mapper' => MediaMapper::class, /* mapper of the related object */ 'table' => 'suppliermgmt_supplier_media', /* table of the related object, null if no relation table is used (many->1) */ - 'external' => 'suppliermgmt_supplier_media_src', - 'self' => 'suppliermgmt_supplier_media_dst', + 'external' => 'suppliermgmt_supplier_media_dst', + 'self' => 'suppliermgmt_supplier_media_src', ], 'contactElements' => [ 'mapper' => ContactElementMapper::class, diff --git a/Theme/Backend/supplier-list.tpl.php b/Theme/Backend/supplier-list.tpl.php index f261e6c..12b67a7 100644 --- a/Theme/Backend/supplier-list.tpl.php +++ b/Theme/Backend/supplier-list.tpl.php @@ -23,23 +23,39 @@ echo $this->getData('nav')->render(); ?>
| = $this->getHtml('ID', '0', '0'); ?> - | = $this->getHtml('Name1'); ?> - | = $this->getHtml('Name2'); ?> + + + | = $this->getHtml('Name'); ?> + + | = $this->getHtml('City'); ?> + + | = $this->getHtml('Zip'); ?> + + | = $this->getHtml('Address'); ?> + + | = $this->getHtml('Country'); ?> + + | |
| = $this->printHtml($value->number); ?> - | = $this->printHtml($value->profile->account->name1); ?> - | = $this->printHtml($value->profile->account->name2); ?> + | = $this->printHtml($value->profile->account->name1); ?> = $this->printHtml($value->profile->account->name2); ?> | = $this->printHtml($value->mainAddress->city); ?> | = $this->printHtml($value->mainAddress->postal); ?> | = $this->printHtml($value->mainAddress->address); ?> diff --git a/Theme/Backend/supplier-profile.tpl.php b/Theme/Backend/supplier-profile.tpl.php index f564477..d39f15b 100644 --- a/Theme/Backend/supplier-profile.tpl.php +++ b/Theme/Backend/supplier-profile.tpl.php @@ -434,8 +434,8 @@ echo $this->getData('nav')->render(); | ||
| = $this->printHtml($this->request->getOrigin()); ?> - | = $this->printHtml($this->request->header->account); ?> - | = $this->printHtml($this->request->header->account); ?> + | = $this->printHtml((string) $this->request->header->account); ?> + | = $this->printHtml((string) $this->request->header->account); ?> | Creating customer | = $this->printHtml((new \DateTime('now'))->format('Y-m-d H:i:s')); ?> |