Passed
Pull Request — developer (#16244)
by Arkadiusz
14:43
created

RecordCollector::getFieldNames()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
/**
3
 * Record collectors task file.
4
 *
5
 * @package 	WorkflowTask
6
 *
7
 * @copyright YetiForce S.A.
8
 * @license   YetiForce Public License 5.0 (licenses/LicenseEN.txt or yetiforce.com)
9
 * @author    Arkadiusz Sołek <[email protected]>
10
 * @author    Mariusz Krzaczkowski <[email protected]>
11
 */
12
/**
13
 * Record collectors task class.
14
 */
15
require_once 'modules/com_vtiger_workflow/VTWorkflowUtils.php';
16
17
class RecordCollector extends VTTask
18
{
19
	/** @var bool Performs the task immediately after saving. */
20
	public $executeImmediately = true;
21
22
	/** {@inheritdoc} */
23
	public function getFieldNames()
24
	{
25
		return ['recordCollector', 'fieldsMap'];
26
	}
27
28
	/** {@inheritdoc} */
29
	public function doTask($recordModel)
30
	{
31
		if (empty($this->recordCollector)) {
32
			return;
33
		}
34
		$value = [];
35
		$moduleName = $recordModel->getModuleName();
36
		$recordCollector = \App\RecordCollector::getInstance($this->recordCollector, $moduleName);
0 ignored issues
show
Bug Best Practice introduced by
The property recordCollector does not exist on RecordCollector. Did you maybe forget to declare it?
Loading history...
37
		foreach ($recordCollector->getFieldsModule($moduleName) as $key => $searchField) {
38
			if ('' !== $recordModel->get($searchField)) {
39
				$value[$key] = $recordModel->get($searchField);
40
				break;
41
			}
42
		}
43
		if (!empty($value)) {
44
			$value['module'] = $moduleName;
45
			$recordCollector->setRequest(new \App\Request($value, false));
46
			$response = $recordCollector->search();
47
			$key = array_key_first($response['dataCounter']);
48
			if (!empty($this->fieldsMap)) {
49
				foreach ($this->fieldsMap as $fieldMapName) {
50
					$updateFields[$fieldMapName] = $response['fields'][$fieldMapName];
51
				}
52
			} else {
53
				$updateFields = $response['fields'];
54
			}
55
			foreach ($updateFields as $fieldName => $values) {
56
				try {
57
					$recordModel->getField($fieldName)->getUITypeModel()->validate($values['data'][$key]['raw']);
58
					$recordModel->set($fieldName, $values['data'][$key]['raw']);
59
				} catch (\Throwable $th) {
60
					\App\Log::error("[taxNumber => $value]Error during data validation: \n{$th->__toString()}\n", __CLASS__);
61
				}
62
			}
63
			$recordModel->setHandlerExceptions(['disableHandlerClasses' => ['Vtiger_Workflow_Handler']]);
64
			$recordModel->save();
65
		}
66
	}
67
}
68