From 42e9c0121c5c7eeff2be96351500b066d7491f04 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Tue, 2 Jan 2024 23:34:19 +0000 Subject: [PATCH] update --- Admin/Installer.php | 39 +++++++-- Controller/ApiController.php | 134 +++++++++++++++++++++++++++++++ Controller/BackendController.php | 12 +-- Models/PermissionCategory.php | 2 +- 4 files changed, 172 insertions(+), 15 deletions(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index 4d62d14..84c3d84 100755 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -51,7 +51,7 @@ final class Installer extends InstallerAbstract { parent::install($app, $info, $cfgHandler); - self::createDefaultStock(); + self::createDefaultStock($app); /* Stock types */ $fileContent = \file_get_contents(__DIR__ . '/Install/types.json'); @@ -75,15 +75,38 @@ final class Installer extends InstallerAbstract * * @since 1.0.0 */ - private static function createDefaultStock() : void + private static function createDefaultStock(ApplicationAbstract $app) : void { - $stock = new Stock('Default'); - $stock->unit = 1; - StockMapper::create()->execute($stock); + /** @var \Modules\WarehouseManagement\Controller\ApiController $module */ + $module = $app->moduleManager->getModuleInstance('WarehouseManagement', 'Api'); - $stockLocation = new StockLocation((string) ($stock->id . '-1')); - $stockLocation->stock = $stock; - StockLocationMapper::create()->execute($stockLocation); + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('name', 'Default'); + $request->setData('unit', 1); + $module->apiStockCreate($request, $response); + + $responseData = $response->getData(''); + if (!\is_array($responseData)) { + return; + } + + $id = $responseData['response']->id; + + $response = new HttpResponse(); + $request = new HttpRequest(new HttpUri('')); + + $request->header->account = 1; + $request->setData('name', $id . '-1'); + $request->setData('stock', $id); + $module->apiStockLocationCreate($request, $response); + + $responseData = $response->getData(''); + if (!\is_array($responseData)) { + return; + } } /** diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 580c697..0ffd6bf 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -28,6 +28,9 @@ use Modules\WarehouseManagement\Models\StockMovementState; use Modules\WarehouseManagement\Models\StockMovementType; use Modules\WarehouseManagement\Models\StockShelf; use Modules\WarehouseManagement\Models\StockShelfMapper; +use phpOMS\Message\Http\RequestStatusCode; +use phpOMS\Message\RequestAbstract; +use phpOMS\Message\ResponseAbstract; /** * WarehouseManagement api controller class. @@ -39,6 +42,137 @@ use Modules\WarehouseManagement\Models\StockShelfMapper; */ final class ApiController extends Controller { + /** + * Api method to create stock + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiStockCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + if (!empty($val = $this->validateStockCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $stock = $this->createStockFromRequest($request); + $this->createModel($request->header->account, $stock, StockMapper::class, 'stock', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $stock); + } + + /** + * Validate stock create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateStockCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['name'] = !$request->hasData('name')) + ) { + return $val; + } + + return []; + } + + /** + * Method to create stock from request. + * + * @param RequestAbstract $request Request + * + * @return Stock + * + * @since 1.0.0 + */ + private function createStockFromRequest(RequestAbstract $request) : Stock + { + $stock = new Stock(); + $stock->name = $request->getDataString('name') ?? ''; + $stock->unit = $request->getDataInt('unit') ?? 1; + + return $stock; + } + + /** + * Api method to create stock + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param array $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiStockLocationCreate(RequestAbstract $request, ResponseAbstract $response, array $data = []) : void + { + if (!empty($val = $this->validateStockLocationCreate($request))) { + $response->header->status = RequestStatusCode::R_400; + $this->createInvalidCreateResponse($request, $response, $val); + + return; + } + + $stock = $this->createStockLocationFromRequest($request); + $this->createModel($request->header->account, $stock, StockLocationMapper::class, 'stocklocation', $request->getOrigin()); + $this->createStandardCreateResponse($request, $response, $stock); + } + + /** + * Validate stock create request + * + * @param RequestAbstract $request Request + * + * @return array + * + * @since 1.0.0 + */ + private function validateStockLocationCreate(RequestAbstract $request) : array + { + $val = []; + if (($val['name'] = !$request->hasData('name')) + || ($val['stock'] = !$request->hasData('stock')) + ) { + return $val; + } + + return []; + } + + /** + * Method to create stock from request. + * + * @param RequestAbstract $request Request + * + * @return StockLocation + * + * @since 1.0.0 + */ + private function createStockLocationFromRequest(RequestAbstract $request) : StockLocation + { + $location = new StockLocation(); + $location->name = $request->getDataString('name') ?? ''; + $location->stock = $request->getDataInt('stock') ?? 1; + + return $location; + } + /** * Event after creating a stock * diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 6c4ed8a..56e87f5 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -35,7 +35,7 @@ use phpOMS\Views\View; final class BackendController extends Controller { /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -77,7 +77,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -113,7 +113,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -137,7 +137,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -168,7 +168,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response @@ -207,7 +207,7 @@ final class BackendController extends Controller } /** - * Routing end-point for application behaviour. + * Routing end-point for application behavior. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response diff --git a/Models/PermissionCategory.php b/Models/PermissionCategory.php index 4765465..5bd227b 100755 --- a/Models/PermissionCategory.php +++ b/Models/PermissionCategory.php @@ -17,7 +17,7 @@ namespace Modules\WarehouseManagement\Models; use phpOMS\Stdlib\Base\Enum; /** - * Permision state enum. + * Permission category enum. * * @package Modules\WarehouseManagement\Models * @license OMS License 2.0