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