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

ActionListJsonResponder   B

Complexity

Total Complexity 2

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 16

Importance

Changes 6
Bugs 0 Features 1
Metric Value
wmc 2
c 6
b 0
f 1
lcom 0
cbo 16
dl 0
loc 41
rs 8.4614

2 Methods

Rating   Name   Duplication   Size   Complexity  
B found() 0 26 1
A getPayloadMethods() 0 5 1
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\Action;
8
use keeko\core\model\Module;
9
use keeko\core\model\Group;
10
use keeko\core\model\Api;
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 actions
18
 * 
19
 * @author gossi
20
 */
21
class ActionListJsonResponder 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 = Action::getSerializer();
31
		$resource = new Collection($data, $serializer);
32
		$resource = $resource->with($params->getInclude(['module', 'group', 'api']));
33
		$resource = $resource->fields($params->getFields([
34
			'action' => Action::getSerializer()->getFields(),
35
			'module' => Module::getSerializer()->getFields(),
36
			'group' => Group::getSerializer()->getFields(),
37
			'api' => Api::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