mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 09:48:40 +00:00
Add general api actions update,create,delete
This commit is contained in:
parent
b8f375480d
commit
9aaf6e0125
|
|
@ -14,6 +14,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace phpOMS\Module;
|
||||
|
||||
use phpOMS\Message\RequestAbstract;
|
||||
use phpOMS\Message\ResponseAbstract;
|
||||
use phpOMS\System\MimeType;
|
||||
|
||||
/**
|
||||
* Module abstraction class.
|
||||
*
|
||||
|
|
@ -21,6 +25,9 @@ namespace phpOMS\Module;
|
|||
* @license OMS License 1.0
|
||||
* @link http://website.orange-management.de
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @todo: maybe move to Modules because this is very project specific and not general enough for a framework
|
||||
* @todo: maybe move all of the Module\classes parts to the Modules\?
|
||||
*/
|
||||
abstract class ModuleAbstract
|
||||
{
|
||||
|
|
@ -178,4 +185,152 @@ abstract class ModuleAbstract
|
|||
/** @noinspection PhpUndefinedFieldInspection */
|
||||
return static::$dependencies;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills the response object
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param string $status Response status
|
||||
* @param string $title Response title
|
||||
* @param string $message Response message
|
||||
* @param mixed $obj Response object
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function fillJsonResponse(
|
||||
RequestAbstract $request,
|
||||
ResponseAbstract $response,
|
||||
string $status,
|
||||
string $title,
|
||||
string $message,
|
||||
$obj
|
||||
) : void
|
||||
{
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
|
||||
$response->set($request->getUri()->__toString(), [
|
||||
'status' => $status,
|
||||
'title' => $title,
|
||||
'message' => $message,
|
||||
'response' => $obj,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills the response object
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $obj Response object
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function fillJsonRawResponse(RequestAbstract $request, ResponseAbstract $response, $obj) : void
|
||||
{
|
||||
$response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
|
||||
$response->set($request->getUri()->__toString(), $obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a model
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param mixed $obj Response object
|
||||
* @param string $mapper Object mapper
|
||||
* @param string $trigger Trigger for the event manager
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function createModel(RequestAbstract $request, $obj, string $mapper, string $trigger) : void
|
||||
{
|
||||
$this->app->eventManager->trigger('PRE:Module:' . self::MODULE_NAME . '-' . $trigger . '-create', '', $obj);
|
||||
$mapper::create($obj);
|
||||
$this->app->eventManager->trigger('POST:Module:' . self::MODULE_NAME . '-' . $trigger . '-create', '', [
|
||||
$request->getHEader()->getAccount(),
|
||||
null,
|
||||
$obj,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a model
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param mixed $old Response object old
|
||||
* @param mixed $new Response object new
|
||||
* @param string|\Closure $mapper Object mapper
|
||||
* @param string $trigger Trigger for the event manager
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function updateModel(RequestAbstract $request, $old, $new, $mapper, string $trigger) : void
|
||||
{
|
||||
$this->app->eventManager->trigger('PRE:Module:' . self::MODULE_NAME . '-' . $trigger . '-update', '', $old);
|
||||
if (\is_string($mapper)) {
|
||||
$mapper::update($new);
|
||||
} elseif ($mapper instanceof \Closure) {
|
||||
$mapper();
|
||||
}
|
||||
$this->app->eventManager->trigger('POST:Module:' . self::MODULE_NAME . '-' . $trigger . '-update', '', [
|
||||
$request->getHEader()->getAccount(),
|
||||
$old,
|
||||
$new,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a model
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param mixed $obj Response object
|
||||
* @param string $mapper Object mapper
|
||||
* @param string $trigger Trigger for the event manager
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function deleteModel(RequestAbstract $request, $obj, string $mapper, string $trigger) : void
|
||||
{
|
||||
$this->app->eventManager->trigger('PRE:Module:' . self::MODULE_NAME . '-' . $trigger . '-delete', '', $obj);
|
||||
$mapper::delete($obj);
|
||||
$this->app->eventManager->trigger('POST:Module:' . self::MODULE_NAME . '-' . $trigger . '-delete', '', [
|
||||
$request->getHEader()->getAccount(),
|
||||
$obj,
|
||||
null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a model relation
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param mixed $rel1 Response object relation1
|
||||
* @param mixed $rel2 Response object relation2
|
||||
* @param string $mapper Object mapper
|
||||
* @param string $field Relation field
|
||||
* @param string $trigger Trigger for the event manager
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected function createModelRelation(RequestAbstract $request, $rel1, $rel2, string $mapper, string $field, string $trigger) : void
|
||||
{
|
||||
$this->app->eventManager->trigger('PRE:Module:' . self::MODULE_NAME . '-' . $trigger . '-relation', '', $$rel1);
|
||||
$mapper::createRelation($field, $rel1, $rel2);
|
||||
$this->app->eventManager->trigger('POST:Module:' . self::MODULE_NAME . '-' . $trigger . '-relation', '', [
|
||||
$request->getHEader()->getAccount(),
|
||||
$rel1,
|
||||
$rel2,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user