1KA_F2F/admin/survey/modules/mod_gorenje/class.SurveyAnalysisGorenje.php
2020-08-14 13:36:36 +02:00

293 lines
8.7 KiB
PHP

<?php
class SurveyAnalysisGorenje{
private $ank_id;
private $spremenljivke = array();
// Pogoji nastavljeni za trenutno anketo in urednika
private $filters = array(
'rekid' => '0',
'brand' => '',
'drzava' => '',
'ser' => '',
'serenota' => '',
'sercenter' => ''
);
public function __construct($ank_id){
$this->ank_id = $ank_id;
if($this->ank_id > 0){
// Napolnimo sistemske spremenljivke potrebne za Gorenje analizo
$this->getGorenjeSpremenljivke();
// Napolnimo nastavljene filtre za anketo in urednika
$this->getGorenjeFilters();
}
else
die();
}
// Prikazemo filtre na vrhu v analizah
public function displayFilters(){
global $lang;
// Ce imamo ustrezne sistemske spremenljivke v anketi
if($this->hasSpremenljivke()){
echo '<form name="gorenje_filters" id="gorenje_filters">';
echo '<h2>Filtriranje</h2>';
// Dobimo vse podatke v bazi med katerimi filtriramo
$data = array();
foreach($this->spremenljivke as $key => $val){
$data[$key] = $this->getGorenjeData($val['vre_id']);
}
// Filter po znamki
echo '<span class="spaceRight spaceLeft">Znamka: ';
echo '<select name="brand" id="brand">';
echo ' <option value="">Vse</option>';
foreach($data['brand'] as $val){
echo ' <option value="'.$val.'" '.($this->filters['brand'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
}
echo '</select>';
echo '</span>';
// Filter po drzavi
echo '<span class="spaceRight spaceLeft">Država: ';
echo '<select name="drzava" id="drzava">';
echo ' <option value="">Vse</option>';
foreach($data['drzava'] as $val){
echo ' <option value="'.$val.'" '.($this->filters['drzava'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
}
echo '</select>';
echo '</span>';
echo '<br /><br />';
// Filter po serviserju
echo '<span class="spaceRight spaceLeft">Serviser: ';
echo '<select name="ser" id="ser">';
echo ' <option value="">Vse</option>';
foreach($data['ser'] as $val){
echo ' <option value="'.$val.'" '.($this->filters['ser'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
}
echo '</select>';
echo '</span>';
// Filter po servisni enoti
echo '<span class="spaceRight spaceLeft">Servisna enota: ';
echo '<select name="serenota" id="serenota">';
echo ' <option value="">Vse</option>';
foreach($data['serenota'] as $val){
echo ' <option value="'.$val.'" '.($this->filters['serenota'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
}
echo '</select>';
echo '</span>';
// Filter po servisnem centru
echo '<span class="spaceLeft">Servisni center: ';
echo '<select name="sercenter" id="sercenter">';
echo ' <option value="">Vse</option>';
foreach($data['sercenter'] as $val){
echo ' <option value="'.$val.'" '.($this->filters['sercenter'] == $val ? ' selected="selected"' : '').'>'.$val.'</option>';
}
echo '</select>';
echo '</span>';
echo '<br /><br />';
// Gumb Pozeni filtriranje
echo '<span class="floatRight" title="Poženi"><div class="buttonwrapper">';
echo '<a class="ovalbutton ovalbutton_orange" href="#" onClick="setGorenjeFilters(); return false;"><span>Poženi</span></a>';
echo '</div></span>';
echo '<br />';
echo '</form>';
//var_dump($data);
//var_dump($this->spremenljivke);
//var_dump($this->filters);
}
}
// Dobimo awk string za gorenje filtriranje
public function getAWKString($_HEADER){
$awkFilter = '';
// Sprehodimo se cez vse mozne filtre
foreach($this->filters as $key => $val){
// Ce je nastavljen filter za doloceno spremenljivko
if($key != 'rekid' && $val != ''){
$awkFilter .= '(';
$spr_id = $this->spremenljivke[$key]['spr_id'];
$vre_id = $this->spremenljivke[$key]['vre_id'];
$sequence = $this->getSequenceForAWKCondition($spr_id, $vre_id, $_HEADER);
$awkFilter .= '$'.$sequence.'==';
if (IS_WINDOWS) {
# za windows
$awkFilter .= "\\\"".$val."\\\"";
} else {
# za linux
$awkFilter .= '"'.$val.'"';
}
$awkFilter .= ')&&';
}
}
// Pobrisemo odvecen zadnji &&
$awkFilter = substr($awkFilter, 0, -2);
return $awkFilter;
}
// Dobimo sekvenco za ustrezno spremenljivko po kateri filtriramo
private function getSequenceForAWKCondition ($spr_id, $vre_id, $_HEADER){
if ($spr_id != null && count($_HEADER[$spr_id.'_0']['grids']) > 0) {
$grd = 0;
if ($vre_id > 0 && count($_HEADER[$spr_id.'_0']['grids'][$grd]['variables']) > 0) {
foreach ($_HEADER[$spr_id.'_0']['grids'][$grd]['variables'] AS $vkey =>$variables) {
if ($variables['vr_id'] == $vre_id && $variables['other'] != 1) {
$var = $vkey;
}
}
}
else {
$var = 0;
}
if ($grd !== null && $var !== null) {
return $_HEADER[$spr_id.'_0']['grids'][$grd]['variables'][$var]['sequence'];
}
}
return;
}
// Preverimo ce obstaja kaksen filter za doloceno anketo in urednika
public function hasFilters(){
if($this->filters['rekid'] == '0'
&& $this->filters['brand'] == ''
&& $this->filters['drzava'] == ''
&& $this->filters['ser'] == ''
&& $this->filters['servisni_enota'] == ''
&& $this->filters['sercenter'] == '')
return false;
else
return true;
}
// Preverimo ce obstajajo vse potrebne sistemske spremenljivke (rekid, brand, drzava, ser, serenota, sercenter)
public function hasSpremenljivke(){
$count = count($this->spremenljivke);
if($count == 6)
return true;
// Ce nimamo vseh preverimo katere manjkajo
if($count > 0){
if(!isset($this->spremenljivke['rekid']))
echo 'Manjka sistemska spremenljivka "rekid" (id reklamacije)!<br />';
if(!isset($this->spremenljivke['brand']))
echo 'Manjka sistemska spremenljivka "brand" (znamka)!<br />';
if(!isset($this->spremenljivke['drzava']))
echo 'Manjka sistemska spremenljivka "drzava"!<br />';
if(!isset($this->spremenljivke['ser']))
echo 'Manjka sistemska spremenljivka "ser" (serviser)!<br />';
if(!isset($this->spremenljivke['serenota']))
echo 'Manjka sistemska spremenljivka "serenota" (servisna enota)!<br />';
if(!isset($this->spremenljivke['sercenter']))
echo 'Manjka sistemska spremenljivka "sercenter (servisni center)"!<br />';
echo '<br />';
}
return false;
}
// Preberemo nastavljen filter za gorenje (ce obstaja)
private function getGorenjeFilters(){
global $global_user_id;
$sql = sisplet_query("SELECT brand, drzava, ser, serenota, sercenter FROM srv_gorenje_analysis WHERE ank_id='".$this->ank_id."' AND usr_id='".$global_user_id."'");
if(mysqli_num_rows($sql) > 0){
$row = mysqli_fetch_assoc($sql);
foreach($row as $key => $val){
$this->filters[$key] = $val;
}
}
}
// Pridobimo vse id-je spremenljivk in vrednosti vezanih na posebno analizo za Gorenje (rekid, brand, drzava, ser, serenota, sercenter)
private function getGorenjeSpremenljivke(){
global $global_user_id;
// Napolnimo spr_id in vre_id za potrebna sistemska vprasanja
$sql = sisplet_query("SELECT s.id AS spr_id, s.variable, v.id AS vre_id FROM srv_vrednost v, srv_spremenljivka s, srv_grupa g
WHERE s.variable IN ('rekid', 'brand', 'drzava', 'ser', 'serenota', 'sercenter')
AND g.ank_id='".$this->ank_id."' AND s.gru_id=g.id
AND v.spr_id=s.id");
while($row = mysqli_fetch_array($sql)){
$this->spremenljivke[$row['variable']]['spr_id'] = $row['spr_id'];
$this->spremenljivke[$row['variable']]['vre_id'] = $row['vre_id'];
}
}
// Dobimo vse mozne vrednosti (distinct vnose) za doloceno spremenljivko
private function getGorenjeData($vre_id){
$data = array();
$sql = sisplet_query("SELECT DISTINCT(text) AS text FROM srv_data_text_active WHERE vre_id='".$vre_id."'");
while($row = mysqli_fetch_array($sql)){
$data[] = $row['text'];
}
return $data;
}
// Ajax klici
public function ajax(){
global $global_user_id;
global $lang;
global $site_path;
$brand = (isset($_POST['brand'])) ? $_POST['brand'] : '';
$drzava = (isset($_POST['drzava'])) ? $_POST['drzava'] : '';
$ser = (isset($_POST['ser'])) ? $_POST['ser'] : '';
$serenota = (isset($_POST['serenota'])) ? $_POST['serenota'] : '';
$sercenter = (isset($_POST['sercenter'])) ? $_POST['sercenter'] : '';
$sql = sisplet_query("INSERT INTO srv_gorenje_analysis
(ank_id, usr_id, brand, drzava, ser, serenota, sercenter)
VALUES ('".$this->ank_id."', '".$global_user_id."', '".$brand."', '".$drzava."', '".$ser."', '".$serenota."', '".$sercenter."')
ON DUPLICATE KEY UPDATE
brand='".$brand."', drzava='".$drzava."', ser='".$ser."', serenota='".$serenota."', sercenter='".$sercenter."'");
if(!$sql)
echo mysqli_error($GLOBALS['connect_db']);
}
}