Passed
Push — master ( 84f592...25f4d2 )
by Jean-Christophe
13:07
created

JsonApiRequestFormatter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Test Coverage

Coverage 57.89%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 8
eloc 18
c 2
b 0
f 0
dl 0
loc 25
ccs 11
cts 19
cp 0.5789
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getDatas() 0 14 4
A loadRelationshipsDatas() 0 7 4
1
<?php
2
3
namespace Ubiquity\controllers\rest\formatters;
4
5
use Ubiquity\orm\OrmUtils;
6
use Ubiquity\utils\http\URequest;
7
8
/**
9
 * Ubiquity\controllers\rest\formatters$JsonApiRequestFormatter
10
 * This class is part of Ubiquity
11
 *
12
 * @author jc
13
 * @version 1.0.0
14
 *
15
 */
16
class JsonApiRequestFormatter extends RequestFormatter {
17
18 1
	public function getDatas(?string $model = null): array {
19 1
		$datas = URequest::getRealInput ();
20 1
		if (\count ( $datas ) > 0) {
21 1
			$datas = \current ( array_keys ( $datas ) );
22 1
			$datas = \json_decode ( $datas, true );
23 1
			$attributes = $datas ['data'] ['attributes'] ?? [ ];
24 1
			if (isset ( $datas ['data'] ['id'] ) && isset($model)) {
25
				$key = OrmUtils::getFirstKey ( $model );
26
				$attributes [$key] = $datas ['data'] ['id'];
27
			}
28 1
			$this->loadRelationshipsDatas ( $datas, $attributes, $model );
29 1
			return $attributes;
30
		}
31
		return ['data'=>[]];
32
	}
33
34 1
	protected function loadRelationshipsDatas($datas, &$attributes,$model) {
35 1
		if (isset ( $datas ['data'] ['relationships'] )) {
36
			$relationShips = $datas ['data'] ['relationships'];
37
			foreach ( $relationShips as $member => $data ) {
38
				if (isset ( $data ['data'] ['id'])) {
39
					$m = OrmUtils::getJoinColumnName ( $model, $member );
40
					$attributes [$m] = $data ['data'] ['id'];
41
				}
42
			}
43
		}
44
	}
45
}