Completed
Push — master ( 1cf10e...bfe5cd )
by Lorenzo
03:07
created

ValidateHelper::checkDispositivo()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 3
Ratio 50 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 3
Bugs 2 Features 1
Metric Value
c 3
b 2
f 1
dl 3
loc 6
ccs 0
cts 5
cp 0
rs 9.4286
cc 3
eloc 3
nc 2
nop 1
crap 12
1
<?php
2
namespace Padosoft\TesseraSanitaria;
3
4
/**
5
 * Class ValidateHelper
6
 * @package Padosoft\TesseraSanitaria
7
 */
8
class ValidateHelper
9
{
10
	use traits\Errorable;
11
12
    private $objPartitaIVA = null;
13
    private $objCFChecker = null;
14
15
	/**+
16
	 * ValidateHelper constructor.
17
	 *
18
	 * @param \fdisotto\PartitaIVA   $objPartitaIVA
19
	 * @param \CodiceFiscale\Checker $objCFChecker
20
	 */
21 6
	public function __construct(\fdisotto\PartitaIVA $objPartitaIVA, \CodiceFiscale\Checker $objCFChecker)
22
	{
23 6
		$this->arrErrors = array();
24 6
		$this->objPartitaIVA = $objPartitaIVA;
25 6
		$this->objCFChecker = $objCFChecker;
26 6
	}
27
28
	/**
29
	 * @param $codiceRegione
30
	 */
31 3
	public function checkCodiceRegione($codiceRegione)
32
	{
33 3
        if (!CodiceRegione::isValidValue($codiceRegione)) {
34 3
            $this->addError("<b>".$codiceRegione."</b> - Codice regione (codiceRegione) non valido. Codici validi: ".CodiceRegione::getCostantsValues());
35 3
        }
36 3
	}
37
38
	/**
39
	 * @param $codiceSSA
40
	 */
41
	public function checkCodiceSSA($codiceSSA)
42
	{
43
        if (!CodiceSSA::isValidValue($codiceSSA)) {
44
            $this->addError("<b>".$codiceSSA."</b> - Codice SSA (codiceSSA) non valido. Codici validi: ".CodiceSSA::getCostantsValues());
45
        }
46
	}
47
48
	/**
49
	 * @param $dateStr
50
	 *
51
	 * @return bool
52
	 */
53 3
	public function isoDateValidate($dateStr)
54
	{
55 3
		if (preg_match('/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/', $dateStr) > 0){
56 3
			return TRUE;
57
		}else{
58 3
			return FALSE;
59
		}
60
	}
61
62
	/**+
63
	 * @param $arrVociSpesa
64
	 */
65
	public function checkArrVociSpesa($arrVociSpesa)
66
	{
67
	    if(empty($arrVociSpesa)){
68
69
			$this->addError("Voci spesa mancanti");
70
		}else{
71
72
			foreach ($arrVociSpesa as $rigaVociSpesa){
73
				foreach ($rigaVociSpesa as $colonnaVociSpesa){
74
					foreach($colonnaVociSpesa as $campo=>$valore){
75
76
                        if ($campo == "tipoSpesa"){
77
78
                            $this->checkTipoSpesa($valore);
79
                        }elseif ($campo == "importo") {
80
81
                            $this->checkImporto($valore);
82
                        }
83
                    }
84
				}
85
			}
86
		}
87
	}
88
89
	/**
90
	 * @param $arrSpesa
91
	 */
92
	public function checkArrSpesa($arrSpesa)
93
	{
94
		if(empty($arrSpesa)){
95
			$this->addError("Dati spesa mancanti");
96
		}else{
97
98
			// Controllo interno array spesa
99
			foreach($arrSpesa as $rigaSpesa){
100
101
                $this->checkRigaSpesa($rigaSpesa);
102
			}
103
		}
104
	}
105
106
	/**
107
	 * @param $pIva
108
	 */
109
	public function checkPIva($pIva)
110
	{
111
		if(empty($pIva)){
112
			$this->addError("Partita IVA mancante");
113
		}else{
114
			// Verifica formale della partita IVA
115
			if(!$this->objPartitaIVA->check($pIva)){
116
				$this->addError("<b>".$pIva."</b> - Partita IVA formalmente non corretta");
117
			}
118
		}
119
	}
120
121
	/**
122
	 * @param $cfProprietario
123
	 */
124
	public function checkCfProprietario($cfProprietario)
125
	{
126
		if(empty($cfProprietario)){
127
			$this->addError("Codice fiscale proprietario (cfProprietario) mancante");
128
		}else{
129
			// Verifica formale del codice fiscale
130
			if (!$this->objCFChecker->isFormallyCorrect($cfProprietario)){
131
				$this->addError("<b>".$cfProprietario."</b> - Codice fiscale proprietario (cfProprietario) formalmente non corretto");
132
			}
133
		}
134
	}
135
136
	/**
137
	 * @param $codiceAsl
138
	 */
139
	public function checkCodiceAsl($codiceAsl)
140
	{
141
        if (!CodiceAsl::isValidValue($codiceAsl)) {
142
            $this->addError("<b>".$codiceAsl."</b> - Codice ASL (codiceAsl) non valido. Codici validi: ".CodiceAsl::getCostantsValues());
143
        }
144
	}
145
146
    /**
147
     * @param $campo
148
     * @param $valore
149
     */
150
    private function checkDataValida($campo, $valore)
151
    {
152
        if (!$this->isoDateValidate($valore)) {
153
            $this->addError("<b>" . $valore . "</b> - $campo non valida. La data deve essere nel formato ISO Es.: 2015-08-01");
154
        }
155
156
        if ($valore < "2015-01-01") {
157
            $this->addError("<b>" . $valore . "</b> - $campo deve essere successiva al 01/01/2015");
158
        }
159
    }
160
161
    /**
162
     * @param $valore
163
     */
164
    private function checkTipoSpesa($valore)
165
    {
166
        if (!TipoSpesa::isValidValue($valore)) {
167
            $this->addError("<b>" . $valore . "</b> - Codice tipo spesa (tipoSpesa) non valido. Codici validi: " . TipoSpesa::getCostantsValues());
168
        }
169
    }
170
171
    /**
172
     * @param $valore
173
     */
174
    private function checkImporto($valore)
175
    {
176
        if (!is_numeric($valore)) {
177
            $this->addError("<b>" . $valore . "</b> - Importo (importo) non numerico");
178
        }
179
    }
180
181
    /**
182
     * @param $valore
183
     * @param $campo
184
     */
185
    private function checkRequiredField($valore, $campo)
186
    {
187
        if ($valore == "" && $campo != "flagPagamentoAnticipato") { // flagPagamentoAnticipato e' facoltativo
188
            $this->addError("Dato spesa mancante campo: " . $campo);
189
        }
190
    }
191
192
    /**
193
     * @param $campo
194
     * @param $valore
195
     */
196
    private function checkDataEmissione($campo, $valore)
197
    {
198
            $this->checkDataValida($campo, $valore);
199
    }
200
201
    /**
202
     * @param $valore
203
     */
204
    private function checkFlagOperazione($valore)
205
    {
206
        if (!FlagOperazione::isValidValue($valore)) {
207
            $this->addError("<b>" . $valore . "</b> - Flag Operazione (flagOperazione) non valido. Codici validi: " . FlagOperazione::getCostantsValues());
208
        }
209
    }
210
211
    /**
212
     * @param $valore
213
     */
214
    private function checkCfCittadino($valore)
215
    {
216
        if (!$this->objCFChecker->isFormallyCorrect($valore)) {
217
            $this->addError("<b>" . $valore . "</b> - Codice fiscale (cfCittadino) cittadino non valido");
218
        }
219
    }
220
221
    /**
222
     * @param $valore
223
     */
224
    private function checkDispositivo($valore)
225
    {
226 View Code Duplication
        if (!is_numeric($valore) || strlen($valore) > 3) {
227
            $this->addError("<b>" . $valore . "</b> - Codice dispositivo (dispositivo) non valido: deve essere numerico, al massimo di 3 cifre");
228
        }
229
    }
230
231
    /**
232
     * @param $valore
233
     */
234
    private function checkNumDocumento($valore)
235
    {
236 View Code Duplication
        if (!is_numeric($valore) || strlen($valore) > 20) {
237
            $this->addError("<b>" . $valore . "</b> - Numero documento (numDocumento) non valido: deve essere numerico, al massimo di 20 cifre");
238
        }
239
    }
240
241
    /**
242
     * @param $rigaSpesa
243
     */
244
    private function checkRigaSpesa($rigaSpesa)
245
    {
246
        if(count($rigaSpesa)<6){
247
            $this->addError("Dati spesa incompleti");
248
        }
249
250
        foreach($rigaSpesa as $campo => $valore) {
251
252
            $this->checkRequiredField($valore, $campo);
253
254
            if ($campo == "dataEmissione" || $campo == "dataPagamento") {
255
256
                $this->checkDataEmissione($campo, $valore);
257
            }elseif ($campo == "flagOperazione") {
258
259
                $this->checkFlagOperazione($valore);
260
            }elseif ($campo == "cfCittadino") {
261
262
                $this->checkCfCittadino($valore);
263
            }elseif ($campo == "dispositivo") {
264
265
                $this->checkDispositivo($valore);
266
            }elseif ($campo == "numDocumento") {
267
268
                $this->checkNumDocumento($valore);
269
            }
270
        }
271
    }
272
}
273