mirror of
https://github.com/Karaka-Management/oms-Knowledgebase.git
synced 2026-02-14 01:08:42 +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\NullWikiCategory;
|
||||||
use Modules\Knowledgebase\Models\WikiDocMapper;
|
use Modules\Knowledgebase\Models\WikiDocMapper;
|
||||||
use Modules\Knowledgebase\Models\NullWikiDoc;
|
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.
|
* Task class.
|
||||||
|
|
@ -209,4 +214,121 @@ class Controller extends ModuleAbstract implements WebInterface
|
||||||
return $view;
|
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