Completed
Push — master ( 94e820...3f0fe0 )
by Thomas
10:39
created

ExtensionListJsonResponder::found()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 1
Metric Value
c 6
b 0
f 1
dl 0
loc 23
rs 9.0856
cc 1
eloc 16
nc 1
nop 2
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\Extension;
8
use keeko\framework\domain\payload\Found;
9
use Tobscure\JsonApi\Document;
10
use Tobscure\JsonApi\Collection;
11
use Tobscure\JsonApi\Parameters;
12
13
/**
14
 * Automatically generated JsonResponder for List all extensions
15
 * 
16
 * @author gossi
17
 */
18
class ExtensionListJsonResponder extends AbstractPayloadResponder {
19
20
	/**
21
	 * @param Request $request
22
	 * @param Found $payload
23
	 */
24
	public function found(Request $request, Found $payload) {
25
		$params = new Parameters($request->query->all());
26
		$data = $payload->getModel();
27
		$serializer = Extension::getSerializer();
28
		$resource = new Collection($data, $serializer);
29
		$resource = $resource->with($params->getInclude([]));
30
		$resource = $resource->fields($params->getFields([
31
			'extension' => Extension::getSerializer()->getFields()
32
		]));
33
		$document = new Document($resource);
34
35
		// meta
36
		$document->setMeta([
37
			'total' => $data->getNbResults(),
38
			'first' => $data->getFirstPage(),
39
			'next' => $data->getNextPage(),
40
			'previous' => $data->getPreviousPage(),
41
			'last' => $data->getLastPage()
42
		]);
43
44
		// return response
45
		return new JsonResponse($document->toArray());
46
	}
47
48
	/**
49
	 */
50
	protected function getPayloadMethods() {
51
		return [
52
			'keeko\framework\domain\payload\Found' => 'found'
53
		];
54
	}
55
}
56