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

UserUpdateJsonResponder::updated()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 7
Bugs 0 Features 1
Metric Value
c 7
b 0
f 1
dl 0
loc 15
rs 9.4285
cc 1
eloc 12
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\framework\domain\payload\NotFound;
8
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
9
use keeko\framework\domain\payload\NotValid;
10
use keeko\framework\exceptions\ValidationException;
11
use keeko\core\model\User;
12
use keeko\core\model\Session;
13
use keeko\core\model\Group;
14
use keeko\core\model\Activity;
15
use keeko\framework\domain\payload\Updated;
16
use Tobscure\JsonApi\Document;
17
use Tobscure\JsonApi\Resource;
18
use Tobscure\JsonApi\Parameters;
19
use keeko\framework\domain\payload\NotUpdated;
20
21
/**
22
 * Automatically generated JsonResponder for Updates an user
23
 * 
24
 * @author gossi
25
 */
26
class UserUpdateJsonResponder extends AbstractPayloadResponder {
27
28
	/**
29
	 * @param Request $request
30
	 * @param NotFound $payload
31
	 */
32
	public function notFound(Request $request, NotFound $payload) {
33
		throw new ResourceNotFoundException($payload->getMessage());
34
	}
35
36
	/**
37
	 * @param Request $request
38
	 * @param NotUpdated $payload
39
	 */
40
	public function notUpdated(Request $request, NotUpdated $payload) {
41
		return new JsonResponse(null, 204);
42
	}
43
44
	/**
45
	 * @param Request $request
46
	 * @param NotValid $payload
47
	 */
48
	public function notValid(Request $request, NotValid $payload) {
49
		throw new ValidationException($payload->getViolations());
50
	}
51
52
	/**
53
	 * @param Request $request
54
	 * @param Updated $payload
55
	 */
56
	public function updated(Request $request, Updated $payload) {
57
		$params = new Parameters($request->query->all());
58
		$serializer = User::getSerializer();
59
		$resource = new Resource($payload->getModel(), $serializer);
60
		$resource = $resource->with($params->getInclude(['session', 'group', 'activity']));
61
		$resource = $resource->fields($params->getFields([
62
			'user' => User::getSerializer()->getFields(),
63
			'session' => Session::getSerializer()->getFields(),
64
			'group' => Group::getSerializer()->getFields(),
65
			'activity' => Activity::getSerializer()->getFields()
66
		]));
67
		$document = new Document($resource);
68
69
		return new JsonResponse($document->toArray(), 200);
70
	}
71
72
	/**
73
	 */
74
	protected function getPayloadMethods() {
75
		return [
76
			'keeko\framework\domain\payload\NotValid' => 'notValid',
77
			'keeko\framework\domain\payload\NotFound' => 'notFound',
78
			'keeko\framework\domain\payload\Updated' => 'updated',
79
			'keeko\framework\domain\payload\NotUpdated' => 'notUpdated'
80
		];
81
	}
82
}
83