Completed
Push — master ( 9b53e2...2758ff )
by Andrea
19:08 queued 08:29
created

GrigliaDatiPrecondizioniUtils   A

Complexity

Total Complexity 20

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 59.77%

Importance

Changes 0
Metric Value
wmc 20
lcom 0
cbo 2
dl 0
loc 106
ccs 52
cts 87
cp 0.5977
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setPrecondizioni() 0 17 3
C setPrecondizioniAvanzate() 0 64 9
B elaboravalorecampo() 0 20 8
1
<?php
2
3
namespace Fi\CoreBundle\DependencyInjection;
4
5
class GrigliaDatiPrecondizioniUtils
6
{
7
    public static function setPrecondizioni(&$q, &$primo, $parametri = array())
8
    {
9
        $precondizioni = $parametri['precondizioni'];
10
11
        $i = 1;
12
        foreach ($precondizioni as $nomecampopre => $precondizione) {
13
            if ($primo) {
14
                $q->where("$nomecampopre = :var$i");
15
16
                $primo = false;
17
            } else {
18
                $q->andWhere("$nomecampopre = :var$i");
19
            }
20
            $q->setParameter("var$i", $precondizione);
21
            ++$i;
22
        }
23
    }
24
25 1
    public static function setPrecondizioniAvanzate(&$q, &$primo, $parametri = array())
26
    {
27 1
        $doctrine = $parametri['doctrine'];
28 1
        $nometabella = $parametri['nometabella'];
29 1
        $entityName = $parametri['entityName'];
30 1
        $bundle = $parametri['bundle'];
31 1
        $precondizioniAvanzate = $parametri['precondizioniAvanzate'];
32 1
        $regole = array();
33
34 1
        foreach ($precondizioniAvanzate as $elem) {
35 1
            $nometabellaprecondizione = '';
36 1
            $nomecampoprecondizione = '';
37 1
            $valorecampoprecondizione = '';
38 1
            $operatoreprecondizione = '=';
39 1
            $operatorelogicoprecondizione = '';
40 1
            foreach ($elem as $keypre => $valuepre) {
41
                switch ($keypre) {
42 1
                    case 'nometabella':
43 1
                        $nometabellaprecondizione = $valuepre;
44 1
                        break;
45 1
                    case 'nomecampo':
46 1
                        $nomecampoprecondizione = $valuepre;
47 1
                        break;
48 1
                    case 'operatore':
49 1
                        $array_operatori = array('=' => 'eq', '<>' => 'ne', '<' => 'lt',
50 1
                            '<=' => 'le', '>' => 'gt', '>=' => 'ge',
51 1
                            'LIKE' => 'bw', 'NOT LIKE' => 'bn', 'IN' => 'in', 'NOT IN' => 'ni',
52 1
                            'LIKE' => 'eq', 'NOT LIKE' => 'en',
53 1
                            'LIKE' => 'cn', 'NOT LIKE' => 'nc', 'IS' => 'nu', 'IS NOT' => 'nn');
54 1
                        $operatoreprecondizione = $array_operatori[strtoupper($valuepre)];
55 1
                        break;
56 1
                    case 'valorecampo':
57 1
                        if (is_array($valuepre)) {
58
                            $type = $doctrine->getClassMetadata($parametri['entityName'])->getFieldMapping($nomecampoprecondizione);
59
                            $valorecampoprecondizione = self::elaboravalorecampo($type, $valuepre);
60
                        } else {
61 1
                            $valorecampoprecondizione = $valuepre;
62
                        }
63 1
                        break;
64 1
                    case 'operatorelogico':
65 1
                        $operatorelogicoprecondizione = strtoupper($valuepre);
66 1
                        break;
67
                    default:
68
                        break;
69
                }
70 1
            }
71
72 1
            $regole[] = array(
73 1
                'field' => "$nometabellaprecondizione.$nomecampoprecondizione",
74 1
                'op' => $operatoreprecondizione,
75 1
                'data' => $valorecampoprecondizione, );
76 1
            $tipof = $operatorelogicoprecondizione;
77
            $regolearray = array(
78 1
                'regole' => $regole,
79 1
                'doctrine' => $doctrine,
80 1
                'nometabella' => $nometabella,
81 1
                'entityName' => $entityName,
82 1
                'bundle' => $bundle,
83 1
                'tipof' => $tipof,
84 1
            );
85 1
            GrigliaRegoleUtils::setRegole($q, $primo, $regolearray);
86 1
            $primo = false;
87 1
        }
88 1
    }
89
90
    private static function elaboravalorecampo($type, $valuepre)
91
    {
92
        $tipo = $type['type'];
93
        if ($tipo && ($tipo == 'date' || $tipo == 'datetime')) {
94
            GrigliaUtils::setVettoriPerData();
95
            foreach ($valuepre as $chiave => $valore) {
96
                $valuepre[$chiave] = fiUtilita::data2db($valore);
97
            }
98
            return implode(', ', $valuepre);
99
        } elseif ($tipo && $tipo == 'string') {
100
            GrigliaUtils::setVettoriPerStringa();
101
            foreach ($valuepre as $chiave => $valore) {
102
                $valuepre[$chiave] = strtolower("'" . $valore . "'");
103
            }
104
            return "'" . implode(', ', $valuepre) . "'";
105
        } else {
106
            GrigliaUtils::setVettoriPerNumero();
107
            return implode(', ', $valuepre);
108
        }
109
    }
110
}
111