Pull out general functionality

This commit is contained in:
Dennis Eichhorn 2018-12-09 16:30:04 +01:00
parent f0f27abbf2
commit 9c70fcd80a
2 changed files with 34 additions and 189 deletions

View File

@ -93,26 +93,13 @@ final class ApiController extends Controller
*/ */
public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
if (empty($request->getData('settings'))) { $data = empty($request->getData('settings')) ? $request->getLike('(settings_)(.*)') : \json_decode((string) $request->getData('settings'), true);
$data = $request->getLike('(settings_)(.*)');
} else {
$data = \json_decode((string) $request->getData('settings'), true);
}
$this->app->eventManager->trigger('PRE:Module:Admin-settings-set', '', $data); $this->updateModel($request, $data, $data, function() use($data) {
$this->app->appSettings->set($data, true); $this->app->appSettings->set($data, true);
$this->app->eventManager->trigger('POST:Module:Admin-settings-set', '', [ }, 'settings');
$request->getHeader()->getAccount(),
null,
$data,
]);
$response->set($request->getUri()->__toString(), [ $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Settigns', 'Settings successfully modified', $data);
'status' => NotificationLevel::OK,
'title' => 'Settings',
'message' => 'Settings successfully modified.',
'response' => $data
]);
} }
/** /**
@ -131,12 +118,7 @@ final class ApiController extends Controller
public function apiGroupGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiGroupGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$group = GroupMapper::get((int) $request->getData('id')); $group = GroupMapper::get((int) $request->getData('id'));
$response->set($request->getUri()->__toString(), [ $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully returned', $group);
'status' => NotificationLevel::OK,
'title' => 'Group',
'message' => 'Group successfully returned.',
'response' => $group->jsonSerialize()
]);
} }
/** /**
@ -155,22 +137,8 @@ final class ApiController extends Controller
public function apiGroupUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiGroupUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$group = $this->updateGroupFromRequest($request); $group = $this->updateGroupFromRequest($request);
$this->updateModel($request, $group, $group, GroupMapper::class, 'group');
$this->app->eventManager->trigger('PRE:Module:Admin-group-update', '', $group); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully updated', $group);
GroupMapper::update($group);
$this->app->eventManager->trigger('POST:Module:Admin-group-update', '', [
$request->getHeader()->getAccount(),
null,
$group,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Group',
'message' => 'Group successfully updated.',
'response' => $group->jsonSerialize()
]);
} }
/** /**
@ -236,22 +204,8 @@ final class ApiController extends Controller
} }
$group = $this->createGroupFromRequest($request); $group = $this->createGroupFromRequest($request);
$this->createModel($request, $group, GroupMapper::class, 'group');
$this->app->eventManager->trigger('PRE:Module:Admin-group-create', '', $group); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully created', $group);
GroupMapper::create($group);
$this->app->eventManager->trigger('POST:Module:Admin-group-create', '', [
$request->getHeader()->getAccount(),
null,
$group,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Group',
'message' => 'Group successfully created.',
'response' => $group->jsonSerialize()
]);
} }
/** /**
@ -291,22 +245,8 @@ final class ApiController extends Controller
public function apiGroupDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiGroupDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$group = GroupMapper::get((int) $request->getData('id')); $group = GroupMapper::get((int) $request->getData('id'));
$this->deleteModel($request, $group, GroupMapper::class, 'group');
$this->app->eventManager->trigger('PRE:Module:Admin-group-delete', '', $group); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group successfully deleted', $group);
$status = GroupMapper::delete($group);
$this->app->eventManager->trigger('POST:Module:Admin-group-delete', '', [
$request->getHeader()->getAccount(),
$group,
null,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Group',
'message' => 'Group successfully deleted.',
'response' => $status
]);
} }
/** /**
@ -349,14 +289,7 @@ final class ApiController extends Controller
public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$account = AccountMapper::get((int) $request->getData('id')); $account = AccountMapper::get((int) $request->getData('id'));
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully returned', $account);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Account',
'message' => 'Account successfully returned.',
'response' => $account->jsonSerialize()
]);
} }
/** /**
@ -429,15 +362,13 @@ final class ApiController extends Controller
} }
$account = $this->createAccountFromRequest($request); $account = $this->createAccountFromRequest($request);
$this->createModel($request, $account, AccountMapper::class, 'account');
$this->createProfileForAccount($account, $request);
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully created', $account);
}
$this->app->eventManager->trigger('PRE:Module:Admin-account-create', '', $account); private function createProfileForAccount(Account $account, RequestAbstract $request) : void
AccountMapper::create($account); {
$this->app->eventManager->trigger('POST:Module:Admin-account-create', '', [
$request->getHeader()->getAccount(),
null,
$account,
]);
if (((string) ($request->getData('password') ?? '')) !== '' if (((string) ($request->getData('password') ?? '')) !== ''
&& ((string) ($request->getData('login') ?? '')) !== '' && ((string) ($request->getData('login') ?? '')) !== ''
) { ) {
@ -452,14 +383,6 @@ final class ApiController extends Controller
$account, $account,
]); ]);
} }
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Account',
'message' => 'Account successfully created.',
'response' => $account->jsonSerialize()
]);
} }
/** /**
@ -504,22 +427,8 @@ final class ApiController extends Controller
public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$account = AccountMapper::get((int) ($request->getData('id'))); $account = AccountMapper::get((int) ($request->getData('id')));
$this->deleteModel($request, $account, AccountMapper::class, 'account');
$this->app->eventManager->trigger('PRE:Module:Admin-account-delete', '', $account); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully deleted', $account);
$status = AccountMapper::delete($account);
$this->app->eventManager->trigger('POST:Module:Admin-account-delete', '', [
$request->getHeader()->getAccount(),
$account,
null,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Account',
'message' => 'Account successfully deleted.',
'response' => $status
]);
} }
/** /**
@ -538,22 +447,8 @@ final class ApiController extends Controller
public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{ {
$account = $this->updateAccountFromRequest($request, true); $account = $this->updateAccountFromRequest($request, true);
$this->updateModel($request, $account, $account, AccountMapper::class, 'account');
$this->app->eventManager->trigger('PRE:Module:Admin-account-update', '', $account); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account successfully updated', $account);
$status = AccountMapper::update($account);
$this->app->eventManager->trigger('POST:Module:Admin-account-update', '', [
$request->getHeader()->getAccount(),
null,
$account,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Account',
'message' => 'Account successfully updated.',
'response' => $account->jsonSerialize()
]);
} }
/** /**
@ -642,13 +537,7 @@ final class ApiController extends Controller
} }
$this->app->eventManager->trigger('POST:Module:Admin-module-status', '', ['status' => $status, 'module' => $module]); $this->app->eventManager->trigger('POST:Module:Admin-module-status', '', ['status' => $status, 'module' => $module]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true); $this->fillJsonResponse($request, $response, $done ? NotificationLevel::OK : NotificationLevel::WARNING, 'Module', $msg, []);
$response->set($request->getUri()->__toString(), [
'status' => $done ? 'ok' : 'warning',
'title' => 'Module',
'message' => $msg,
'response' => []
]);
} }
/** /**
@ -680,21 +569,8 @@ final class ApiController extends Controller
return; return;
} }
$this->app->eventManager->trigger('PRE:Module:Admin-group-permission-create', '', $permission); $this->createModel($request, $permission, GroupPermissionMapper::class, 'group-permission');
GroupPermissionMapper::create($permission); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Group permission successfully created', $permission);
$this->app->eventManager->trigger('POST:Module:Admin-group-permission-create', '', [
$request->getHeader()->getAccount(),
null,
$permission,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Group',
'message' => 'Group permission successfully created.',
'response' => $permission->jsonSerialize()
]);
} }
/** /**
@ -726,21 +602,8 @@ final class ApiController extends Controller
return; return;
} }
$this->app->eventManager->trigger('PRE:Module:Admin-account-permission-create', '', $permission); $this->createModel($request, $permission, AccountPermissionMapper::class, 'account-permission');
AccountPermissionMapper::create($permission); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Account permission successfully created', $permission);
$this->app->eventManager->trigger('POST:Module:Admin-account-permission-create', '', [
$request->getHeader()->getAccount(),
null,
$permission,
]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => NotificationLevel::OK,
'title' => 'Account',
'message' => 'Account permission successfully created.',
'response' => $permission->jsonSerialize()
]);
} }
/** /**
@ -811,17 +674,8 @@ final class ApiController extends Controller
$account = (int) $request->getData('account'); $account = (int) $request->getData('account');
$groups = \array_map('intval', $request->getDataList('igroup-idlist')); $groups = \array_map('intval', $request->getDataList('igroup-idlist'));
$this->app->eventManager->trigger('PRE:Module:Admin-account-group-add', '', ['account' => $account, 'groups' => $groups]); $this->createModelRelation($request, $account, $groups, AccountMapper::class, 'groups', 'account-group');
$success = AccountMapper::createRelation('groups', $account, $groups); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Account', 'Relation added', []);
$this->app->eventManager->trigger('POST:Module:Admin-account-group-add', '', ['account' => $account, 'groups' => $groups]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => 'ok',
'title' => 'Account',
'message' => 'Group added to account',
'response' => []
]);
} }
/** /**
@ -842,16 +696,7 @@ final class ApiController extends Controller
$group = (int) $request->getData('group'); $group = (int) $request->getData('group');
$accounts = \array_map('intval', $request->getDataList('iaccount-idlist')); $accounts = \array_map('intval', $request->getDataList('iaccount-idlist'));
$this->app->eventManager->trigger('PRE:Module:Admin-group-account-add', '', ['group' => $group, 'accounts' => $accounts]); $this->createModelRelation($request, $group, $accounts, GroupMapper::class, 'accounts', 'group-account');
$success = GroupMapper::createRelation('accounts', $group, $accounts); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Group', 'Relation added', []);
$this->app->eventManager->trigger('POST:Module:Admin-group-account-add', '', ['group' => $group, 'accounts' => $accounts]);
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
$response->set($request->getUri()->__toString(), [
'status' => 'ok',
'title' => 'Group',
'message' => 'Account added to group',
'response' => []
]);
} }
} }