1KA_F2F/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php
2022-07-26 10:14:04 +02:00

276 lines
11 KiB
PHP

<?php
/*
VPRASANJA
- lahko razlicni userji aktivirajo razlicne faze iste stranke? Potem vidjo vse ankete te stranke?
- kaj povezuje ankete stranke - porjekt id? potem se ga vnese samo pri prvi anketi
- je lahko vec faz istocasno aktivnih (npr. anketa 1 in anketa 2)?
- kdaj se poslje sporocilo? ob 8h zjutraj?
- se lahko zacne sekvenca na npr. 2. anketi (oz. se preskoci anketo 2...?)
*/
class Kolektor {
function __construct(){
global $site_url;
global $lang;
echo '<script src="'.$site_url.'admin/survey/modules/mod_KOLEKTOR/script/script.js" type="text/javascript"></script>';
}
private function getResponses(){
global $global_user_id;
global $admin_type;
$data = array();
// Admini vidijo vse reposnse
if($admin_type == '0'){
$sql = sisplet_query("SELECT sr.*, s.survey_sequence
FROM kolektor_survey s, kolektor_survey_response sr
WHERE s.ank_id=sr.ank_id
ORDER BY sr.insert_time DESC
");
while($row = mysqli_fetch_array($sql)){
$data[$row['id']] = $row;
}
}
else{
// Uporabnik vidi samo svoje reponse
$sql = sisplet_query("SELECT sr.*, s.survey_sequence
FROM kolektor_survey s, kolektor_survey_response sr
WHERE sr.usr_id='".$global_user_id."' AND s.ank_id=sr.ank_id
ORDER BY sr.insert_time DESC
");
while($row = mysqli_fetch_array($sql)){
$data[$row['id']] = $row;
}
}
return $data;
}
private function getSurveys(){
$data = array();
$sql = sisplet_query("SELECT ks.*, a.hash, a.naslov, a.akronim FROM kolektor_survey ks, srv_anketa a WHERE a.id=ks.ank_id ORDER BY ks.survey_sequence ASC");
while($row = mysqli_fetch_array($sql)){
$data[$row['ank_id']] = $row;
}
return $data;
}
// Osnovni pogled
public function display(){
global $site_url;
global $lang;
echo '<button class="medium blue" onClick="createKolektorResponsePopup();">Proži novo anketo</button>';
echo '<div id="kolektor_reponses_holder">';
$this->displayResponses();
echo '</div>';
}
public function displayResponses(){
echo ' <table class="kolektor_reponses">';
echo ' <tr>';
echo ' <th>Anketa</th>';
echo ' <th>ID projekta</th>';
echo ' <th>Email respondenta</th>';
echo ' <th>Funkcija respondenta</th>';
echo ' <th>Čas proženja</th>';
echo ' <th>Status</th>';
echo ' <th></th>';
echo ' </tr>';
// Loop cez vse stranke
$responses = $this->getResponses();
$surveys = $this->getSurveys();
foreach($responses as $response_id => $response){
echo ' <tr class="kolektor_response">';
echo ' <td>'.$surveys[$response['ank_id']]['naslov'].'</td>';
echo ' <td>'.$response['respondent_projekt_id'].'</td>';
echo ' <td>'.$response['respondent_email'].'</td>';
echo ' <td>'.$response['respondent_funkcija'].'</td>';
echo ' <td>'.date('j.n.Y H:i:s', strtotime($response['insert_time'])).'</td>';
echo ' <td>'.$response['status'].'</td>';
echo ' <td>Pošlji opomnik</td>';
echo ' </tr>';
}
echo ' </table>';
}
// Prikaze formo za dodajanje novega responsa
public function displayAddResponse($data=array(), $error=array()){
echo '<div class="popup_close"><a href="#" onclick="createKolektorResponseClose();">✕</a></div>';
echo '<h2>Dodajanje novega respondenta</h2>';
echo '<form id="kolektor_add_response_form" name="kolektor_add_response_form">';
// Izpisemo napake, ce kaksno polje manjka
if(!empty($error)){
echo '<div class="error_messages">';
echo 'Prosimo izpolnite vsa obvezna polja:';
foreach($error as $error_msg){
echo '<div class="error_message">'.$error_msg.'</div>';
}
echo '</div>';
}
// Seznam 6 kolektor anket
echo '<div class="kolektor_setting '.(isset($error['ank_id']) ? 'error' : '').'">';
$surveys = $this->getSurveys();
foreach($surveys as $kolektor_survey){
echo ' <input type="radio" id="kolektor_survey_'.$kolektor_survey['survey_sequence'].'" name="kolektor_survey" value="'.$kolektor_survey['ank_id'].'" '.($data['ank_id'] == $kolektor_survey['ank_id'] ? 'checked="checked"' : '').'>';
echo ' <label for="kolektor_survey_'.$kolektor_survey['survey_sequence'].'">'.$kolektor_survey['survey_sequence'].' - '.$kolektor_survey['naslov'].'</label>';
}
echo '</div>';
// ID projekta
echo '<div class="kolektor_setting '.(isset($error['respondent_projekt_id']) ? 'error' : '').'">';
echo ' ID projekta: <input type="text" name="respondent_projekt_id" value="'.$data['respondent_projekt_id'].'">';
echo '</div>';
// Email
echo '<div class="kolektor_setting '.(isset($error['respondent_email']) ? 'error' : '').'">';
echo ' Email respondenta: <input type="text" name="respondent_email" value="'.$data['respondent_email'].'">';
echo '</div>';
// Funkcija respondenta
echo '<div class="kolektor_setting '.(isset($error['respondent_funkcija']) ? 'error' : '').'">';
echo ' Funkcija respondenta v podjetju: ';
echo ' <select name="respondent_funkcija">';
echo ' <option value="Vodja nabave" '.($data['respondent_funkcija'] == 'Vodja nabave' ? 'selected="selected"' : '').'>Vodja nabave</option>';
echo ' <option value="Vodja projekta" '.($data['respondent_funkcija'] == 'Vodja projekta' ? 'selected="selected"' : '').'>Vodja projekta</option>';
echo ' <option value="Skrbnik pogodbe" '.($data['respondent_funkcija'] == 'Skrbnik pogodbe' ? 'selected="selected"' : '').'>Skrbnik pogodbe</option>';
echo ' <option value="Nadzornik objekta" '.($data['respondent_funkcija'] == 'Nadzornik objekta' ? 'selected="selected"' : '').'>Nadzornik objekta</option>';
echo ' <option value="Član inženirskega tima" '.($data['respondent_funkcija'] == 'Član inženirskega tima' ? 'selected="selected"' : '').'>Član inženirskega tima</option>';
echo ' </select>';
echo '</div>';
// Aktivacija na daljavo - samo za anketi 5 in 6
if(true){
echo '<div class="kolektor_setting '.(isset($error['respondent_remote_activation']) ? 'error' : '').'">';
echo ' Aktivacija na daljavo:';
echo ' <input type="radio" id="respondent_remote_activation_0" name="respondent_remote_activation" value="0" '.($data['respondent_remote_activation'] == '0' ? 'checked="checked"' : '').'><label for="respondent_remote_activation_0">Ne</label>';
echo ' <input type="radio" id="respondent_remote_activation_1" name="respondent_remote_activation" value="1" '.($data['respondent_remote_activation'] == '1' ? 'checked="checked"' : '').'><label for="respondent_remote_activation_1">Da</label>';
echo '</div>';
}
// Sporocilo respondentu
echo '<div class="kolektor_setting '.(isset($error['respondent_message']) ? 'error' : '').'">';
echo ' Spremno besedilo: <textarea name="respondent_message">'.$data['respondent_message'].'</textarea>';
echo '</div>';
// Gumbi
echo '<div class="button_holder">';
echo ' <button class="medium white-blue" type="button" onClick="createKolektorResponseClose();">Zapri</button>';
echo ' <button class="medium blue" type="button" onClick="createKolektorResponse();">Sproži anketo in pošlji email respondentu</button>';
echo '</div>';
echo '</form>';
}
public function displayResponseDetails(){
}
// Ajax klici
public function ajax(){
global $lang;
global $site_path;
global $global_user_id;
if($_GET['a'] == 'add_repsonse_popup'){
echo '<div id="kolektor_add_response">';
$this->displayAddResponse();
echo '</div>';
}
elseif($_GET['a'] == 'add_repsonse'){
$response_data['ank_id'] = (isset($_POST['kolektor_survey'])) ? $_POST['kolektor_survey'] : '';
$response_data['respondent_email'] = (isset($_POST['respondent_email'])) ? $_POST['respondent_email'] : '';
$response_data['respondent_funkcija'] = (isset($_POST['respondent_funkcija'])) ? $_POST['respondent_funkcija'] : '';
$response_data['respondent_projekt_id'] = (isset($_POST['respondent_projekt_id'])) ? $_POST['respondent_projekt_id'] : '';
$response_data['respondent_remote_activation'] = (isset($_POST['respondent_remote_activation'])) ? $_POST['respondent_remote_activation'] : '';
$response_data['respondent_message'] = (isset($_POST['respondent_message'])) ? $_POST['respondent_message'] : '';
// Pohendlamo errorje
$error = array();
if($response_data['ank_id'] == ''){
$error['ank_id'] = 'Izberite anketo.';
}
if($response_data['respondent_email'] == ''){
$error['respondent_email'] = 'Vnesite email respondenta.';
}
if($response_data['respondent_funkcija'] == ''){
$error['respondent_funkcija'] = 'Vnesite funkcijo respondenta.';
}
if($response_data['respondent_projekt_id'] == ''){
$error['respondent_projekt_id'] = 'Vnesite ID projekta oz. krovnega projekta.';
}
if($response_data['respondent_remote_activation'] == ''){
$error['respondent_remote_activation'] = 'Izberite, če gre za aktivacijo na daljavo.';
}
if($response_data['respondent_message'] == ''){
$error['respondent_message'] = 'Vnesite spremno besedilo.';
}
// Imamo napake
if(!empty($error)){
$this->displayAddResponse($response_data, $error);
}
else{
// Dodamo nov response
KolektorResponse::addResponse($response_data);
}
}
}
}
?>