Completed
Push — master ( ba6b8c...fbc3ca )
by Thomas
04:38
created

LocalizationListJsonResponder::getPayloadMethods()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 5
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
namespace keeko\core\responder;
3
4
use Symfony\Component\HttpFoundation\Request;
5
use Symfony\Component\HttpFoundation\JsonResponse;
6
use keeko\framework\foundation\AbstractPayloadResponder;
7
use keeko\core\model\Localization;
8
use keeko\core\model\Language;
9
use keeko\core\model\LanguageScript;
10
use keeko\core\model\LanguageVariant;
11
use keeko\framework\domain\payload\Found;
12
use Tobscure\JsonApi\Document;
13
use Tobscure\JsonApi\Collection;
14
use Tobscure\JsonApi\Parameters;
15
16
/**
17
 * Automatically generated JsonResponder for List all localizations
18
 * 
19
 * @author gossi
20
 */
21
class LocalizationListJsonResponder extends AbstractPayloadResponder {
22
23
	/**
24
	 * @param Request $request
25
	 * @param Found $payload
26
	 */
27
	public function found(Request $request, Found $payload) {
28
		$params = new Parameters($request->query->all());
29
		$data = $payload->getModel();
30
		$serializer = Localization::getSerializer();
31
		$resource = new Collection($data, $serializer);
32
		$resource = $resource->with($params->getInclude(['localization', 'language', 'language', 'language-script', 'language-variants']));
33
		$resource = $resource->fields($params->getFields([
34
			'localization' => Localization::getSerializer()->getFields(),
35
			'language' => Language::getSerializer()->getFields(),
36
			'language-script' => LanguageScript::getSerializer()->getFields(),
37
			'language-variants' => LanguageVariant::getSerializer()->getFields()
38
		]));
39
		$document = new Document($resource);
40
41
		// meta
42
		$document->setMeta([
43
			'total' => $data->getNbResults(),
44
			'first' => $data->getFirstPage(),
45
			'next' => $data->getNextPage(),
46
			'previous' => $data->getPreviousPage(),
47
			'last' => $data->getLastPage()
48
		]);
49
50
		// return response
51
		return new JsonResponse($document->toArray());
52
	}
53
54
	/**
55
	 */
56
	protected function getPayloadMethods() {
57
		return [
58
			'keeko\framework\domain\payload\Found' => 'found'
59
		];
60
	}
61
}
62