diff --git a/Controller/ApiController.php b/Controller/ApiController.php index d09b704..eb5dfe3 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -26,6 +26,7 @@ use Modules\Helper\Models\TemplateDataType; use Modules\Helper\Models\TemplateMapper; use Modules\Media\Models\NullCollection; +use Modules\Media\Models\NullMedia; use phpOMS\Account\PermissionType; use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\Message\Http\HttpRequest; @@ -237,15 +238,25 @@ final class ApiController extends Controller */ public function apiTemplateCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $files = $request->getDataJson('media-list'); + $dbFiles = $request->getDataJson('media-list') ?? []; + $uploadedFiles = $request->getFiles() ?? []; + $files = []; - if (empty($files)) { - $files = $this->app->moduleManager->get('Media')->uploadFiles( + if (!empty($uploadedFiles)) { + $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( $request->getData('name') ?? '', - $request->getFiles(), + $uploadedFiles, $request->getHeader()->getAccount(), __DIR__ . '/../../../Modules/Media/Files' ); + + foreach ($uploaded as $upload) { + $files[] = new NullMedia($upload->getId()); + } + } + + foreach ($dbFiles as $db) { + $files[] = new NullMedia($db); } $collection = $this->app->moduleManager->get('Media')->createMediaCollectionFromMedia( @@ -282,8 +293,6 @@ final class ApiController extends Controller $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Template', 'Template successfully created', $template); } - - /** * Method to create template from request. * diff --git a/Models/TemplateMapper.php b/Models/TemplateMapper.php index 1583c40..8419904 100644 --- a/Models/TemplateMapper.php +++ b/Models/TemplateMapper.php @@ -45,9 +45,9 @@ final class TemplateMapper extends DataMapperAbstract 'helper_template_desc' => ['name' => 'helper_template_desc', 'type' => 'string', 'internal' => 'description'], 'helper_template_desc_raw' => ['name' => 'helper_template_desc_raw', 'type' => 'string', 'internal' => 'descriptionRaw'], 'helper_template_media' => ['name' => 'helper_template_media', 'type' => 'int', 'internal' => 'source'], - 'helper_template_creator' => ['name' => 'helper_template_creator', 'type' => 'int', 'internal' => 'createdBy', ], - 'helper_template_unit' => ['name' => 'helper_template_unit', 'type' => 'int', 'internal' => 'unit', ], - 'helper_template_created' => ['name' => 'helper_template_created', 'type' => 'DateTime', 'internal' => 'createdAt', ], + 'helper_template_creator' => ['name' => 'helper_template_creator', 'type' => 'int', 'internal' => 'createdBy'], + 'helper_template_unit' => ['name' => 'helper_template_unit', 'type' => 'int', 'internal' => 'unit'], + 'helper_template_created' => ['name' => 'helper_template_created', 'type' => 'DateTime', 'internal' => 'createdAt'], ]; /**