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

UserListJsonResponder   B

Complexity

Total Complexity 2

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 16

Importance

Changes 7
Bugs 0 Features 1
Metric Value
wmc 2
c 7
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\User;
8
use keeko\core\model\Session;
9
use keeko\core\model\Group;
10
use keeko\core\model\Activity;
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 users
18
 * 
19
 * @author gossi
20
 */
21
class UserListJsonResponder 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 = User::getSerializer();
31
		$resource = new Collection($data, $serializer);
32
		$resource = $resource->with($params->getInclude(['session', 'group', 'activity']));
33
		$resource = $resource->fields($params->getFields([
34
			'user' => User::getSerializer()->getFields(),
35
			'session' => Session::getSerializer()->getFields(),
36
			'group' => Group::getSerializer()->getFields(),
37
			'activity' => Activity::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