GrigliaFiltriUtils::traduciFiltri()   A
last analyzed

Complexity

Conditions 5
Paths 8

Size

Total Lines 31
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 5.025

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 31
ccs 9
cts 10
cp 0.9
rs 9.2248
c 0
b 0
f 0
cc 5
nc 8
nop 1
crap 5.025
1
<?php
2
3
namespace Fi\CoreBundle\Utils;
4
5
class GrigliaFiltriUtils
6
{
7
    /**
8
     * Funzione alla quale si passano i filtri nel formato gestito da jqGrid e
9
     * che restituisce una stringa che contiene la descrizione in linguaggio
10
     * naturale.
11
     *
12
     * @param array   $parametri
13
     *
14
     * @return string
15
     */
16 2
    public static function traduciFiltri($parametri = array())
17
    {
18 2
        $genericofiltri = $parametri['filtri'];
19
20 2
        $filtri = isset($genericofiltri->rules) ? $genericofiltri->rules : '';
21 2
        $tipofiltro = isset($genericofiltri->groupOp) ? $genericofiltri->groupOp : '';
22 2
        GrigliaUtils::$decodificaop = array(
23 2
            'eq' => ' è uguale a ',
24
            'ne' => ' è diverso da ',
25
            'lt' => ' è inferiore a ',
26
            'le' => ' è inferiore o uguale a ',
27
            'gt' => ' è maggiore di ',
28
            'ge' => ' è maggiore o uguale di ',
29
            'bw' => ' comincia con ',
30
            'bn' => ' non comincia con ',
31
            'in' => ' è uno fra ',
32
            'ni' => ' non è uno fra ',
33
            'ew' => ' finisce con ',
34
            'en' => ' con finisce con ',
35
            'cn' => ' contiene ',
36
            'nc' => ' non contiene ',
37
            'nu' => ' è vuoto',
38
            'nn' => ' non è vuoto',);
39
40 2
        if (!isset($filtri) || (!$filtri)) {
41
            return '';
42
        }
43
44 2
        $filtrodescritto = self::getFiltrodescritto($filtri, $tipofiltro);
45
46 2
        return $filtrodescritto;
47
    }
48 2
    public static function getFiltrodescritto($filtri, $tipofiltro)
49
    {
50 2
        $filtrodescritto = ('I dati mostrati rispondono a' . ($tipofiltro == 'AND' ? ' tutti i' : 'd almeno uno dei') . ' seguenti criteri: ');
51
52 2
        foreach ($filtri as $indice => $filtro) {
53 2
            $campo = $filtro->field;
54 2
            $operatore = $filtro->op;
55 2
            $data = $filtro->data;
56 2
            $strtipofiltro = ($indice !== 0 ? ($tipofiltro == 'AND' ? ' e ' : ' o ') : '');
57 2
            $strcampo = GrigliaUtils::toCamelCase(array('str' => $campo, 'primamaiuscola' => true));
58 2
            $stroperatore = GrigliaUtils::$decodificaop[$operatore];
59 2
            $strdata = "\"$data\"";
60 2
            $filtrodescritto = sprintf("%s%s%s%s%s", $filtrodescritto, $strtipofiltro, $strcampo, $stroperatore, $strdata);
61
        }
62
63 2
        $filtrodescritto .= '.';
64
65 2
        return $filtrodescritto;
66
    }
67
}
68