Passed
Push — developer ( 9386d9...490c19 )
by Mariusz
24:38 queued 05:38
created

Settings_MailSignature_SaveAjax_Action   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 25
c 1
b 0
f 0
dl 0
loc 64
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A save() 0 14 3
A getRecordModelFromRequest() 0 9 2
A __construct() 0 5 1
A preSaveValidation() 0 6 1
1
<?php
2
/**
3
 * Mail signature save ajax action file.
4
 *
5
 * @package Settings.Action
6
 *
7
 * @copyright YetiForce S.A.
8
 * @license YetiForce Public License 5.0 (licenses/LicenseEN.txt or yetiforce.com)
9
 * @author  Mariusz Krzaczkowski <[email protected]>
10
 */
11
/**
12
 * Mail signature save ajax action class.
13
 */
14
class Settings_MailSignature_SaveAjax_Action extends Settings_Vtiger_Save_Action
15
{
16
	/** {@inheritdoc} */
17
	public function __construct()
18
	{
19
		parent::__construct();
20
		$this->exposeMethod('save');
21
		$this->exposeMethod('preSaveValidation');
22
	}
23
24
	/**
25
	 * Function to get the record model based on the request parameters.
26
	 *
27
	 * @param \App\Request $request
28
	 *
29
	 * @return Settings_MailSignature_Record_Model
30
	 */
31
	protected function getRecordModelFromRequest(App\Request $request)
32
	{
33
		if ($request->isEmpty('record')) {
34
			$recordModel = Settings_MailSignature_Record_Model::getCleanInstance();
35
		} else {
36
			$recordModel = Settings_MailSignature_Record_Model::getInstanceById($request->getInteger('record'));
37
		}
38
		$recordModel->setDataFromRequest($request);
39
		return $recordModel;
40
	}
41
42
	/**
43
	 * PreSave validation function.
44
	 *
45
	 * @param App\Request $request
46
	 *
47
	 * @return void
48
	 */
49
	public function preSaveValidation(App\Request $request)
50
	{
51
		$recordModel = $this->getRecordModelFromRequest($request);
52
		$response = new Vtiger_Response();
53
		$response->setResult($recordModel->validate());
54
		$response->emit();
55
	}
56
57
	/**
58
	 * Save function.
59
	 *
60
	 * @param App\Request $request
61
	 *
62
	 * @return void
63
	 */
64
	public function save(App\Request $request)
65
	{
66
		try {
67
			$recordModel = $this->getRecordModelFromRequest($request);
68
			$recordId = $recordModel->getId();
69
			$recordModel->save();
70
			\Settings_Vtiger_Tracker_Model::addDetail($recordModel->getPreviousValue(), $recordId ? array_intersect_key($recordModel->getData(), $recordModel->getPreviousValue()) : $recordModel->getData());
71
			$result = ['success' => true, 'url' => $recordModel->getModule()->getDefaultUrl()];
72
		} catch (\App\Exceptions\AppException $e) {
73
			$result = ['success' => false, 'message' => $e->getDisplayMessage()];
74
		}
75
		$response = new Vtiger_Response();
76
		$response->setResult($result);
77
		$response->emit();
78
	}
79
}
80