Passed
Push — developer ( 57de19...8207c1 )
by Mariusz
35:57
created

DetailView   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
wmc 11
lcom 1
cbo 9
dl 0
loc 46
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B process() 0 42 11
1
<?php
2
/**
3
 * Base detail view file.
4
 *
5
 * @package View
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
 * @author    Radosław Skrzypczak <[email protected]>
11
 */
12
13
namespace YF\Modules\Base\View;
14
15
use App\Purifier;
16
use YF\Modules\Base\Model\DetailView as DetailViewModel;
17
use YF\Modules\Base\Model\Field;
18
use YF\Modules\Base\Model\InventoryField;
19
use YF\Modules\Base\Model\Record;
20
21
/**
22
 * Base detail view class.
23
 */
24
class DetailView extends \App\Controller\View
25
{
26
	/** {@inheritdoc} */
27
	public function process()
28
	{
29
		$moduleName = $this->request->getModule();
30
		$record = $this->request->getByType('record', Purifier::INTEGER);
31
		$recordModel = Record::getInstanceById($moduleName, $record, ['x-header-fields' => 1]);
32
		$moduleStructure = $recordModel->getModuleModel()->getFieldsFromApi();
33
		$inventoryFields = $fields = [];
34
		foreach ($moduleStructure['fields'] as $field) {
35
			if ($field['isViewable']) {
36
				$fieldInstance = Field::getInstance($moduleName, $field);
37
				if ($recordModel->has($field['name'])) {
38
					$fieldInstance->setDisplayValue($recordModel->get($field['name']));
39
				}
40
				$fields[$field['blockId']][] = $fieldInstance;
41
			}
42
		}
43
		if (!empty($moduleStructure['inventory'])) {
44
			$columns = \Conf\Inventory::$columnsByModule[$moduleName] ?? \Conf\Inventory::$columns ?? [];
45
			$columnsIsActive = !empty($columns);
46
			foreach ($moduleStructure['inventory'] as $fieldType => $fieldsInventory) {
47
				if (1 === $fieldType) {
48
					foreach ($fieldsInventory as $field) {
49
						if ($field['isVisibleInDetail'] && (!$columnsIsActive || \in_array($field['columnname'], $columns))) {
50
							$inventoryFields[] = InventoryField::getInstance($moduleName, $field);
51
						}
52
					}
53
				}
54
			}
55
		}
56
		$detailViewModel = DetailViewModel::getInstance($moduleName);
57
		$detailViewModel->setRecordModel($recordModel);
58
		$this->viewer->assign('BREADCRUMB_TITLE', $recordModel->getName());
59
		$this->viewer->assign('RECORD', $recordModel);
60
		$this->viewer->assign('FIELDS', $fields);
61
		$this->viewer->assign('BLOCKS', $moduleStructure['blocks']);
62
		$this->viewer->assign('INVENTORY_FIELDS', $inventoryFields);
63
		$this->viewer->assign('SHOW_INVENTORY_RIGHT_COLUMN', \Conf\Inventory::$showInventoryRightColumn);
64
		$this->viewer->assign('SUMMARY_INVENTORY', $recordModel->getInventorySummary());
65
		$this->viewer->assign('DETAIL_LINKS', $detailViewModel->getLinksHeader());
66
		$this->viewer->assign('FIELDS_HEADER', $recordModel->getCustomData()['headerFields'] ?? []);
67
		$this->viewer->view('Detail/DetailView.tpl', $moduleName);
68
	}
69
}
70