From 6f5fcde7b387b095dc235063a1ec86abe2558586 Mon Sep 17 00:00:00 2001 From: pero1203 Date: Thu, 28 Jul 2022 11:59:30 +0200 Subject: [PATCH] Kolektor - dokoncano dodajanje respondenta, posiljanje obvestil uredniku, cronjob alerti --- .../modules/mod_KOLEKTOR/class.Kolektor.php | 58 +++++++++++-------- .../class.KolektorNotifications.php | 50 +++++++++++----- .../mod_KOLEKTOR/class.KolektorResponse.php | 5 +- .../modules/mod_KOLEKTOR/script/script.js | 24 +++++++- public/css/admin_new.css | 3 + .../sass/admin_new/modules/kolektor.scss | 4 ++ 6 files changed, 103 insertions(+), 41 deletions(-) diff --git a/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php b/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php index d0bdc8250..4eefb3d90 100644 --- a/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php +++ b/admin/survey/modules/mod_KOLEKTOR/class.Kolektor.php @@ -100,7 +100,8 @@ class Kolektor { public function displayResponses(){ - + global $site_url; + echo ' '; echo ' '; @@ -110,7 +111,8 @@ class Kolektor { echo ' '; echo ' '; echo ' '; - echo ' '; + echo ' '; + echo ' '; echo ' '; // Loop cez vse stranke @@ -125,6 +127,7 @@ class Kolektor { echo ' '; echo ' '; echo ' '; + echo ' '; echo ' '; // TODO echo ' '; } @@ -161,14 +164,14 @@ class Kolektor { // Seznam 6 kolektor anket echo '
'; - echo ' Anketa:'; + echo '
Anketa:
'; $surveys = $this->getSurveys(); $sequence = 0; foreach($surveys as $kolektor_survey){ - echo ''; + echo '
'; echo ' '; echo ' '; - echo ''; + echo '
'; if($data['ank_id'] == $kolektor_survey['ank_id']) $sequence = $kolektor_survey['survey_sequence']; @@ -180,45 +183,54 @@ class Kolektor { // ID projekta echo '
'; - echo ' ID projekta:'; + echo '
ID projekta:
'; echo ' '; echo '
'; // Email echo '
'; - echo ' Email respondenta:'; + echo '
Email respondenta:
'; echo ' '; echo '
'; // Funkcija respondenta + $standard_functions = array('Vodja nabave', 'Vodja projekta', 'Skrbnik pogodbe', 'Nadzornik objekta', 'Član inženirskega tima'); + $other_function = (isset($data['respondent_funkcija']) && $data['respondent_funkcija'] != '' && !in_array($data['respondent_funkcija'], $standard_functions)) ? true : false; + echo '
'; - echo ' Funkcija respondenta v podjetju:'; - echo ' '; + foreach($standard_functions as $standard_function){ + echo ' '; + } echo ' '; + + echo '
'; + echo ' '; echo '
'; - - // Aktivacija na daljavo - samo za anketi 5 in 6 - TODO - echo '
'; - echo ' Aktivacija na daljavo:'; - echo ' '; - echo ' '; + + // Aktivacija na daljavo - samo za anketi 5 in 6 + echo '
'; + echo '
Aktivacija na daljavo:
'; + echo '
'; + echo '
'; echo '
'; // Sporocilo respondentu + $text = 'Pozdravljeni, Prosimo vas, če lahko izpolnite anketo. Povezava do ankete: #URL# Lep pozdrav, Kolektor ETRA'; + echo '
'; - echo ' Spremno besedilo:'; - echo ' '; + echo '
Spremno besedilo:
'; + echo ' '; + echo '
'; + + echo '
'; @@ -228,8 +240,6 @@ class Kolektor { echo ' '; echo '
'; - echo ''; - echo ''; } diff --git a/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php b/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php index 5eb3cd5e2..4116f9e19 100644 --- a/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php +++ b/admin/survey/modules/mod_KOLEKTOR/class.KolektorNotifications.php @@ -50,10 +50,17 @@ class KolektorNotifications { } catch (Exception $e){ } + + // Shranimo, da smo poslali notification in spremenili status + $sql_alert = sisplet_query("INSERT INTO kolektor_survey_response_alert + (respondent_id, alert_time, new_status) + VALUES + ('".$response['usr_id']."', NOW(), '".$this->response['status']."') + "); } // Posljemo mail respondentu z vabilom na anketo - public function sendRespondentNotification(){ + public function sendRespondentNotification($respondent_message=''){ $subject = 'Kolektor ETRA - vabilo na anketo'; @@ -61,8 +68,11 @@ class KolektorNotifications { $kr = new KolektorResponse($this->response['respondent_id']); $url = $kr->getResponseURL(); - $body = $this->response['respondent_message']; - $body .= '

'.$url; + $body = ($respondent_message != '') ? $respondent_message : $this->response['respondent_message']; + + // Zamenjamo line breake in #URL# + $body = nl2br(stripslashes($body)); + $body = str_replace('#URL#', 'Kolektor anketa', $body); // Posljemo mail @@ -83,20 +93,32 @@ class KolektorNotifications { // Loop cez vse response in posljemo notificatione glede na statuse public static function executeCronJob(){ + // Loop po responsih s statusom 1, 2 ali 3 (prozeno, opozorilo 1, opozorilo 3) + $sql = sisplet_query("SELECT ksr.*, ksra.alert_time, ksra.new_status + FROM kolektor_survey_response ksr, kolektor_survey_response_alert ksra + WHERE ksr.respondent_id=ksra.respondent_id + AND ((ksr.status='1' AND ksr.insert_time <= NOW() - INTERVAL 7 DAY) + OR (ksr.status='2' AND ksr.insert_time <= NOW() - INTERVAL 21 DAY) + OR (ksr.status='3' AND ksr.insert_time <= NOW() - INTERVAL 42 DAY)) + "); - // Status 1 - "prozeno" - preklopimo na status 2 "opozorilo 1" - if($this->response['status'] == 0){ + while($row = mysqli_fetch_array($sql)){ - } - // Status 2 - "opozorilo 1" - preklopimo na status 3 "opozorilo 3" - elseif($this->response['status'] == 1){ - - } - // Status 3 "opozorilo 3" - preklopimo na status 4 "neodgovorjeno" - elseif($this->response['status'] == 2){ - - } + $kr = new KolektorResponse($row['respondent_id']); + // Status 1 - "prozeno" - preklopimo na status 2 "opozorilo 1" + if($this->response['status'] == '1'){ + $kr->setStatus($status='2'); + } + // Status 2 - "opozorilo 1" - preklopimo na status 3 "opozorilo 3" + elseif($this->response['status'] == '2'){ + $kr->setStatus($status='3'); + } + // Status 3 "opozorilo 3" - preklopimo na status 4 "neodgovorjeno" + elseif($this->response['status'] == '3'){ + $kr->setStatus($status='4'); + } + } } } diff --git a/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php b/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php index 2fca0a92a..afaf57e3e 100644 --- a/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php +++ b/admin/survey/modules/mod_KOLEKTOR/class.KolektorResponse.php @@ -54,7 +54,8 @@ class KolektorResponse { $url .= '&kolemail='.$this->response['respondent_email']; $url .= '&kolprojekt='.$this->response['respondent_projekt_id']; $url .= '&kolfunkc='.$this->response['respondent_funkcija']; - $url .= '&kolactivat='.$this->response['respondent_remote_activation']; + if($this->response['respondent_remote_activation'] != '') + $url .= '&kolactivat='.$this->response['respondent_remote_activation']; return $url; } @@ -115,7 +116,7 @@ class KolektorResponse { ('".$response_data['ank_id']."', '".$global_user_id."', NOW(), - '0', + '1', '".$respondent_id."', '".$response_data['respondent_email']."', '".$response_data['respondent_funkcija']."', diff --git a/admin/survey/modules/mod_KOLEKTOR/script/script.js b/admin/survey/modules/mod_KOLEKTOR/script/script.js index 7a72a08c3..491d23f36 100644 --- a/admin/survey/modules/mod_KOLEKTOR/script/script.js +++ b/admin/survey/modules/mod_KOLEKTOR/script/script.js @@ -24,6 +24,7 @@ function kolektorCreateResponse(){ } +// Oznacevanje ankete pri kreiranju responsa function kolektorSelectSurvey(){ var survey_sequence = $('input[name="kolektor_survey"]:checked').attr("sequence"); @@ -35,13 +36,34 @@ function kolektorSelectSurvey(){ $('#kolektor_respondent_settings').slideDown(); if(survey_sequence == 5 || survey_sequence == 6){ + $('input[name="respondent_remote_activation"]').prop("disabled", false); $('#kolektor_setting_activation').slideDown(); } else{ + $('input[name="respondent_remote_activation"]').prop("disabled", true); $('#kolektor_setting_activation').slideUp(); } } else{ $('#kolektor_respondent_settings').slideUp(); } -} \ No newline at end of file +} + +// Preklop na drugo funkcijo v podjetju pri kreiranju responsa +function kolektorOtherFunction(){ + + // Vnos druge funkcije + if($('input#respondent_funkcija_other').is(':checked')){ + $('#respondent_funkcija_dropdown').prop("disabled", true); + $('#respondent_funkcija_text').prop("disabled", false).show(); + $('#respondent_funkcija_text').focus(); + } + // Vnos funkcije iz dropdowna + else{ + $('#respondent_funkcija_dropdown').prop("disabled", false); + $('#respondent_funkcija_text').prop("disabled", true).hide(); + $('#respondent_funkcija_dropdown').focus(); + } +} + + diff --git a/public/css/admin_new.css b/public/css/admin_new.css index 6fa7d019a..2464b58a6 100644 --- a/public/css/admin_new.css +++ b/public/css/admin_new.css @@ -32980,6 +32980,9 @@ table.dataTable td:not(:first-of-type), table.dataTable th:not(:first-of-type) { display: flex; flex-direction: column; } +#kolektor_add_response #kolektor_add_response_form textarea { + width: 100%; +} @media (max-width: 1100px) { #quick_comments_link.newCss { diff --git a/resources/sass/admin_new/modules/kolektor.scss b/resources/sass/admin_new/modules/kolektor.scss index ede203d94..8048fef93 100644 --- a/resources/sass/admin_new/modules/kolektor.scss +++ b/resources/sass/admin_new/modules/kolektor.scss @@ -57,6 +57,10 @@ display: flex; flex-direction: column; } + + textarea{ + width: 100%; + } } } \ No newline at end of file
Funkcija respondentaČas proženjaStatusOdgovoriOpomnik
'.$response['respondent_funkcija'].''.date('j.n.Y H:i:s', strtotime($response['insert_time'])).''.$this->statuses[$response['status']].'Preglej odgovorePošlji opomnik