This commit is contained in:
Dennis Eichhorn 2016-07-05 11:35:20 +02:00
parent fd09b26911
commit b1bb03f216
3 changed files with 51 additions and 18 deletions

View File

@ -27,4 +27,11 @@ return [
'verb' => RouteVerb::GET, 'verb' => RouteVerb::GET,
], ],
], ],
'^.*/api/news.*$' => [
[
'dest' => '\Modules\News\Controller:apiNewsCreate',
'verb' => RouteVerb::SET,
],
],
]; ];

View File

@ -162,30 +162,30 @@ class Controller extends ModuleAbstract implements WebInterface
} }
/** /**
* Creating news. * @param RequestAbstract $request Request
* * @param ResponseAbstract $response Response
* @param array $articleElements Article elements * @param mixed $data Generic data
*
* @return NewsArticle
* *
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>
*/ */
public function createNews(...$articleElements) public function apiNewsCreate(RequestAbstract $request, ResponseAbstract $response, $data = null)
{ {
$newsArticle = new NewsArticle(); $newsArticle = new NewsArticle();
$newsArticle->setCreatedBy($articleElements[0]); $newsArticle->setCreatedBy($requst->getAccount()->getId());
$newsArticle->setCreatedAt($articleElements[1]); $newsArticle->setCreatedAt(new \DateTime('now'));
$newsArticle->setPublish($articleElements[2]); $newsArticle->setPublish((bool) ($request->getData('publish') ?? false));
$newsArticle->setTitle($articleElements[3]); $newsArticle->setTitle($request->getData('title') ?? '');
$newsArticle->setPlain($articleElements[4]); $newsArticle->setPlain($request->getData('plain') ?? '');
$newsArticle->setContent($articleElements[5]); $newsArticle->setContent($request->getData('content') ?? '');
$newsArticle->setLanguage($articleElements[6]); $newsArticle->setLanguage($request->getData('lang') ?? $request->getL11n()->getLanguage());
$newsArticle->setType($articleElements[7]); $newsArticle->setType((int) ($requst->getData('type') ?? 1));
$newsArticle->setStatus($articleElements[8]); $newsArticle->setStatus((int) ($request->getData('status') ?? 1));
$newsArticle->setFeatured($articleElements[9]); $newsArticle->setFeatured((bool) ($request->getData('featured') ?? true));
return NewsArticleMapper::create($newsArticle); NewsArticleMapper::create($newsArticle);
$response->set('news', $newsArticle->jsonSerialize());
} }
/** /**

View File

@ -29,7 +29,7 @@ use phpOMS\Localization\ISO639x1Enum;
* @link http://orange-management.com * @link http://orange-management.com
* @since 1.0.0 * @since 1.0.0
*/ */
class NewsArticle class NewsArticle implements ArrayableInterface, \JsonSerializable
{ {
/** /**
@ -362,4 +362,30 @@ class NewsArticle
{ {
$this->featured = $featured; $this->featured = $featured;
} }
public function toArray() : array
{
return [
'id' => $this->id,
'title' => $this->title,
'plain' => $this->plain,
'content' => $this->content,
'type' => $this->type,
'status' => $this->status,
'featured' => $this->featured,
'publish' => $this->publish,
'createdAt' => $this->createdAt,
'createdBy' => $this->createdBy,
];
}
public function __toString()
{
return $this->jsonSerialize();
}
public function jsonSerialize()
{
return json_encode($this->toArray());
}
} }