mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-01-25 07:48:41 +00:00
Create basic api create functionality
This commit is contained in:
parent
b3bad1a17e
commit
195eb07e89
122
Controller.php
122
Controller.php
|
|
@ -25,6 +25,11 @@ use Modules\Knowledgebase\Models\WikiCategoryMapper;
|
|||
use Modules\Knowledgebase\Models\NullWikiCategory;
|
||||
use Modules\Knowledgebase\Models\WikiDocMapper;
|
||||
use Modules\Knowledgebase\Models\NullWikiDoc;
|
||||
use Modules\Knowledgebase\Models\WikiStatus;
|
||||
use Modules\Knowledgebase\Models\WikiStatusMapper;
|
||||
use Modules\Knowledgebase\Models\WikiDoc;
|
||||
use Modules\Knowledgebase\Models\WikiCategory;
|
||||
use Modules\Knowledgebase\Models\WikiBadge;
|
||||
|
||||
/**
|
||||
* Task class.
|
||||
|
|
@ -209,4 +214,121 @@ class Controller extends ModuleAbstract implements WebInterface
|
|||
return $view;
|
||||
}
|
||||
|
||||
public function apiWikiDocCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
|
||||
{
|
||||
if (!empty($val = $this->validateWikiDocCreate($request))) {
|
||||
$response->set('wiki_doc_create', new FormValidation($val));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$doc = $this->createWikiDocFromRquest($request);
|
||||
WikiDocMapper::create($doc);
|
||||
$response->set('doc', $doc->jsonSerialize());
|
||||
}
|
||||
|
||||
public function createWikiDocFromRquest(RequestAbstract $request) : WikiDoc
|
||||
{
|
||||
$mardkownParser = new Markdown();
|
||||
|
||||
$doc = new WikiDoc();
|
||||
$doc->setName($request->getData('title'));
|
||||
$doc->setDoc($request->getData('plain'));
|
||||
$doc->setCategory((int) $request->getData('category'));
|
||||
$doc->setBadges((array) $request->getData('badges'));
|
||||
$doc->setStatus((int) $request->getData('status'));
|
||||
|
||||
return $doc;
|
||||
}
|
||||
|
||||
private function validateWikiDocCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (
|
||||
($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['plain'] = empty($request->getData('plain')))
|
||||
|| ($val['category'] = empty($request->getData('category')))
|
||||
|| ($val['badges'] = empty($request->getData('badges')))
|
||||
|| ($val['status'] = (
|
||||
$request->getData('status') !== null
|
||||
&& !WikiStatus::isValidValue(strtolower($request->getData('status')))
|
||||
))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
public function apiWikiCategoryCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
|
||||
{
|
||||
if (!empty($val = $this->validateWikiCategoryCreate($request))) {
|
||||
$response->set('wiki_category_create', new FormValidation($val));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$category = $this->createWikiCategoryFromRquest($request);
|
||||
WikiCategoryMapper::create($category);
|
||||
$response->set('category', $category->jsonSerialize());
|
||||
}
|
||||
|
||||
public function createWikiCategoryFromRquest(RequestAbstract $request) : WikiCategory
|
||||
{
|
||||
$mardkownParser = new Markdown();
|
||||
|
||||
$category = new WikiCategory();
|
||||
$category->setName($request->getData('title'));
|
||||
$category->setParent((int) $request->getData('parent'));
|
||||
|
||||
return $category;
|
||||
}
|
||||
|
||||
private function validateWikiCategoryCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (
|
||||
($val['title'] = empty($request->getData('title')))
|
||||
|| ($val['parent'] = empty($request->getData('parent')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
public function apiWikiBadgeCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
|
||||
{
|
||||
if (!empty($val = $this->validateWikiBadgeCreate($request))) {
|
||||
$response->set('wiki_badge_create', new FormValidation($val));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$badge = $this->createWikiBadgeFromRquest($request);
|
||||
WikiBadgeMapper::create($badge);
|
||||
$response->set('badge', $badge->jsonSerialize());
|
||||
}
|
||||
|
||||
public function createWikiBadgeFromRquest(RequestAbstract $request) : WikiBadge
|
||||
{
|
||||
$mardkownParser = new Markdown();
|
||||
|
||||
$badge = new WikiBadge();
|
||||
$badge->setName($request->getData('title'));
|
||||
|
||||
return $badge;
|
||||
}
|
||||
|
||||
private function validateWikiBadgeCreate(RequestAbstract $request) : array
|
||||
{
|
||||
$val = [];
|
||||
if (
|
||||
($val['title'] = empty($request->getData('title')))
|
||||
) {
|
||||
return $val;
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user