Passed
Push — developer ( e0199d...a3edbd )
by Mariusz
63:10 queued 29:14
created

RelatedList::setViewModel()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
/**
3
 * Related list view model file.
4
 *
5
 * @package   Model
6
 *
7
 * @copyright YetiForce Sp. z o.o
8
 * @license   YetiForce Public License 3.0 (licenses/LicenseEN.txt or yetiforce.com)
9
 * @author    Mariusz Krzaczkowski <[email protected]>
10
 */
11
12
namespace YF\Modules\Base\Model;
13
14
use App\Purifier;
15
16
/**
17
 * Related list view model class.
18
 */
19
class RelatedList extends AbstractListView
20
{
21
	/** @var \App\Request Request object. */
22
	protected $request;
23
24
	/** @var string Related module name. */
25
	protected $relatedModuleName;
26
27
	/** {@inheritdoc} */
28
	protected $actionName = 'RecordRelatedList';
29
30
	/** {@inheritdoc} */
31
	protected function getFromApi(array $headers): array
32
	{
33
		$api = \App\Api::getInstance();
34
		$api->setCustomHeaders($headers);
35
		return $api->call("{$this->getModuleName()}/RecordRelatedList/{$this->request->getInteger('record')}/{$this->relatedModuleName}", [
36
			'relationId' => $this->request->getInteger('relationId'),
37
		]);
38
	}
39
40
	/** {@inheritdoc} */
41
	public function getDefaultCustomView(): ?int
42
	{
43
		return null;
44
	}
45
46
	/**
47
	 * Set request.
48
	 *
49
	 * @param \App\Request $request
50
	 *
51
	 * @return void
52
	 */
53
	public function setRequest(\App\Request $request): void
54
	{
55
		$this->request = $request;
56
		$this->relatedModuleName = $request->getByType('relatedModuleName', Purifier::ALNUM);
57
	}
58
59
	/**
60
	 * Get records list model.
61
	 *
62
	 * @return Record[]
63
	 */
64
	public function getRecordsListModel(): array
65
	{
66
		$recordsModel = [];
67
		if (!empty($this->recordsList['records'])) {
68
			foreach ($this->recordsList['records'] as $id => $value) {
69
				$recordModel = Record::getInstance($this->relatedModuleName);
70
				if (isset($value['recordLabel'])) {
71
					$recordModel->setName($value['recordLabel']);
72
					unset($value['recordLabel']);
73
				}
74
				$recordModel->setData($value)->setId($id)->setPrivileges($this->recordsList['permissions'][$id]);
75
				$recordsModel[$id] = $recordModel;
76
			}
77
		}
78
		if (!empty($this->recordsList['rawData'])) {
79
			foreach ($this->recordsList['rawData'] as $id => $value) {
80
				$recordsModel[$id]->setRawData($value);
81
			}
82
		}
83
		return $recordsModel;
84
	}
85
}
86