diff --git a/Admin/Installer.php b/Admin/Installer.php index 540edc8..f9bd2d2 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -47,8 +47,8 @@ class Installer extends InstallerAbstract 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'group` ( `group_id` int(11) NOT NULL AUTO_INCREMENT, `group_name` varchar(50) NOT NULL, - `group_status` int(11) NOT NULL, - `group_desc` varchar(100) DEFAULT NULL, + `group_status` int(3) NOT NULL, + `group_desc` varchar(255) DEFAULT NULL, `group_created` datetime DEFAULT NULL, PRIMARY KEY (`group_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' diff --git a/Controller.php b/Controller.php index 6a8570f..f4c7e93 100644 --- a/Controller.php +++ b/Controller.php @@ -320,7 +320,10 @@ class Controller extends ModuleAbstract implements WebInterface public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) { - $success = $this->app->appSettings->set((string) $request->getData('settings'), true); + $success = $this->app->appSettings->set( + json_decode((string) $request->getData('settings'), true), + true + ); $response->set($request->__toString(), $success); } @@ -331,6 +334,18 @@ class Controller extends ModuleAbstract implements WebInterface $response->set($request->__toString(), $group->jsonSerialize()); } + public function apiGroupSet(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $group = GroupMapper::get((int) $request->getData('id')); + + $group->setName((string) ($request->getData('name') ?? $group->getName())); + $group->setDescription((string) ($request->getData('description') ?? $group->getDescription())); + + GroupMapper::update($group); + + $response->set($request->__toString(), $group->jsonSerialize()); + } + private function validateGroupCreate(RequestAbstract $request) : array { $val = []; @@ -358,14 +373,15 @@ class Controller extends ModuleAbstract implements WebInterface $group = $this->createGroupFromRequest($request); GroupMapper::create($group); - $response->set('group', $group->__toString()); + $response->set($request->__toString(), $group->jsonSerialize()); } private function createGroupFromRequest(RequestAbstract $request) : Group { $group = new Group(); + $group->setCreatedBy($request->getHeader()->getAccount()); $group->setName((string) ($request->getData('name') ?? '')); - $group->setStatus((int) $request->getData('status')); + $group->setStatus((int) ($request->getData('status') ?? GroupStatus::INACTIVE)); $group->setDescription((string) ($request->getData('description') ?? '')); return $group; @@ -373,15 +389,16 @@ class Controller extends ModuleAbstract implements WebInterface public function apiGroupDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) { - $status = GroupMapper::delete((int) ($request->getData('id'))); + $group = GroupMapper::get((int) $request->getData('id')); + $status = GroupMapper::delete($group); $response->set($request->__toString(), $status); } public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) { - $response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true); - $response->set($request->__toString(), AccountMapper::getByRequest($request)); + $account = AccountMapper::get((int) $request->getData('id')); + $response->set($request->__toString(), $account->jsonSerialize()); } public function apiAccountFind(RequestAbstract $request, ResponseAbstract $response, $data = null) @@ -392,9 +409,10 @@ class Controller extends ModuleAbstract implements WebInterface private function validateAccountCreate(RequestAbstract $request) : array { + // todo: validate email correctness $val = []; if ( - ($val['name'] = empty($request->getData('name'))) + ($val['login'] = empty($request->getData('login'))) || ($val['name1'] = empty($request->getData('name1'))) || ($val['type'] = !AccountType::isValidValue((int) $request->getData('type'))) || ($val['status'] = !AccountStatus::isValidValue((int) $request->getData('status'))) @@ -422,33 +440,40 @@ class Controller extends ModuleAbstract implements WebInterface private function createAccountFromRequest(RequestAbstract $request) : Account { $account = new Account(); - $account->setStatus((int) ($request->getData('status'))); - $account->setType((int) ($request->getData('type'))); - $account->setName((string) ($request->getData('name'))); - $account->setName1((string) ($request->getData('name1'))); - $account->setName2((string) ($request->getData('name2'))); - $account->setName3((string) ($request->getData('name3'))); - $account->setEmail((string) ($request->getData('email'))); - $account->generatePassword((string) ($request->getData('password'))); + $account->setStatus((int) ($request->getData('status') ?? AccountStatus::INACTIVE)); + $account->setType((int) ($request->getData('type') ?? AccountType::USER)); + $account->setName((string) ($request->getData('login') ?? '')); + $account->setName1((string) ($request->getData('name1') ?? '')); + $account->setName2((string) ($request->getData('name2') ?? '')); + $account->setName3((string) ($request->getData('name3') ?? '')); + $account->setEmail((string) ($request->getData('email') ?? '')); + $account->generatePassword((string) ($request->getData('password') ?? '')); return $account; } public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) { - $status = AccountMapper::delete((int) ($request->getData('id'))); + $account = AccountMapper::get((int) ($request->getData('id'))); + $status = AccountMapper::delete($account); - $response->set('account', $status); + $response->set($request->__toString(), $status); } public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) { $account = AccountMapper::get((int) ($request->getData('id'))); - $account->setName((string) ($request->getData('name'))); + $account->setName((string) ($request->getData('login') ?? $account->getName())); + $account->setName1((string) ($request->getData('name1') ?? $account->getName1())); + $account->setName2((string) ($request->getData('name2') ?? $account->getName2())); + $account->setName3((string) ($request->getData('name3') ?? $account->getName3())); + $account->setEmail((string) ($request->getData('email') ?? $account->getEmail())); + $account->setStatus((int) ($request->getData('status') ?? $account->getStatus())); + $account->setType((int) ($request->getData('type') ?? $account->getType())); $status = AccountMapper::update($account); - $response->set('account', ['status' => $status, 'account' => $account->jsonSerialize()]); + $response->set($request->__toString(), $account->jsonSerialize()); } public function apiModuleStatusUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) diff --git a/Models/Group.php b/Models/Group.php index 0eb3aa9..d212ce8 100644 --- a/Models/Group.php +++ b/Models/Group.php @@ -76,4 +76,9 @@ class Group extends \phpOMS\Account\Group { return $this->createdBy; } + + public function setCreatedBy($createdBy) /* : void */ + { + $this->createdBy = $createdBy; + } }