Completed
Push — master ( 944dfb...9c93d5 )
by Thomas
10:01 queued 37s
created

GroupUpdateJsonResponder::notValid()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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