This commit is contained in:
Dennis Eichhorn 2024-01-02 23:34:19 +00:00
parent 12e282057e
commit 42e9c0121c
4 changed files with 172 additions and 15 deletions

View File

@ -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;
}
}
/**

View File

@ -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<string, bool>
*
* @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<string, bool>
*
* @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
*

View File

@ -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

View File

@ -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