Kolektor - dokoncano dodajanje respondenta, posiljanje obvestil uredniku, cronjob alerti
This commit is contained in:
parent
f8e3dc4575
commit
6f5fcde7b3
@ -100,6 +100,7 @@ class Kolektor {
|
||||
|
||||
|
||||
public function displayResponses(){
|
||||
global $site_url;
|
||||
|
||||
echo ' <table class="kolektor_reponses">';
|
||||
|
||||
@ -110,7 +111,8 @@ class Kolektor {
|
||||
echo ' <th>Funkcija respondenta</th>';
|
||||
echo ' <th>Čas proženja</th>';
|
||||
echo ' <th>Status</th>';
|
||||
echo ' <th></th>';
|
||||
echo ' <th>Odgovori</th>';
|
||||
echo ' <th>Opomnik</th>';
|
||||
echo ' </tr>';
|
||||
|
||||
// Loop cez vse stranke
|
||||
@ -125,6 +127,7 @@ class Kolektor {
|
||||
echo ' <td>'.$response['respondent_funkcija'].'</td>';
|
||||
echo ' <td>'.date('j.n.Y H:i:s', strtotime($response['insert_time'])).'</td>';
|
||||
echo ' <td>'.$this->statuses[$response['status']].'</td>';
|
||||
echo ' <td><a href="'.$site_url.'admin/survey/index.php?anketa='.$response['ank_id'].'&a=data">Preglej odgovore</a></td>';
|
||||
echo ' <td>Pošlji opomnik</td>'; // TODO
|
||||
echo ' </tr>';
|
||||
}
|
||||
@ -161,14 +164,14 @@ class Kolektor {
|
||||
|
||||
// Seznam 6 kolektor anket
|
||||
echo '<div class="kolektor_setting '.(isset($error['ank_id']) ? 'error' : '').'">';
|
||||
echo ' <span class="setting_line">Anketa:</span>';
|
||||
echo ' <div class="setting_line">Anketa:</div>';
|
||||
$surveys = $this->getSurveys();
|
||||
$sequence = 0;
|
||||
foreach($surveys as $kolektor_survey){
|
||||
echo '<span class="setting_line">';
|
||||
echo '<div class="setting_line">';
|
||||
echo ' <input type="radio" id="kolektor_survey_'.$kolektor_survey['survey_sequence'].'" name="kolektor_survey" sequence="'.$kolektor_survey['survey_sequence'].'" value="'.$kolektor_survey['ank_id'].'" '.($data['ank_id'] == $kolektor_survey['ank_id'] ? 'checked="checked"' : '').' onChange="kolektorSelectSurvey();">';
|
||||
echo ' <label for="kolektor_survey_'.$kolektor_survey['survey_sequence'].'">'.$kolektor_survey['survey_sequence'].' - '.$kolektor_survey['naslov'].'</label>';
|
||||
echo '</span>';
|
||||
echo '</div>';
|
||||
|
||||
if($data['ank_id'] == $kolektor_survey['ank_id'])
|
||||
$sequence = $kolektor_survey['survey_sequence'];
|
||||
@ -180,45 +183,54 @@ class Kolektor {
|
||||
|
||||
// ID projekta
|
||||
echo '<div class="kolektor_setting '.(isset($error['respondent_projekt_id']) ? 'error' : '').'">';
|
||||
echo ' <span class="setting_line">ID projekta:</span>';
|
||||
echo ' <div class="setting_line">ID projekta:</div>';
|
||||
echo ' <input type="text" class="medium" name="respondent_projekt_id" value="'.$data['respondent_projekt_id'].'">';
|
||||
echo '</div>';
|
||||
|
||||
|
||||
// Email
|
||||
echo '<div class="kolektor_setting '.(isset($error['respondent_email']) ? 'error' : '').'">';
|
||||
echo ' <span class="setting_line">Email respondenta:</span>';
|
||||
echo ' <div class="setting_line">Email respondenta:</div>';
|
||||
echo ' <input type="text" class="medium" name="respondent_email" value="'.$data['respondent_email'].'">';
|
||||
echo '</div>';
|
||||
|
||||
|
||||
// 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 '<div class="kolektor_setting '.(isset($error['respondent_funkcija']) ? 'error' : '').'">';
|
||||
|
||||
echo ' <span class="setting_line">Funkcija respondenta v podjetju:</span>';
|
||||
echo ' <span class="setting_line"><select name="respondent_funkcija" class="dropdown medium">';
|
||||
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 ' <div class="setting_line">Funkcija respondenta v podjetju:</div>';
|
||||
echo ' <select name="respondent_funkcija" id="respondent_funkcija_dropdown" class="dropdown medium" '.($other_function ? 'disabled="disabled"' : '').'>';
|
||||
foreach($standard_functions as $standard_function){
|
||||
echo ' <option value="'.$standard_function.'" '.($data['respondent_funkcija'] == $standard_function ? 'selected="selected"' : '').'>'.$standard_function.'</option>';
|
||||
}
|
||||
echo ' </select>';
|
||||
|
||||
echo ' <div class="setting_line"><input type="checkbox" id="respondent_funkcija_other" onClick="kolektorOtherFunction();" '.($other_function ? 'checked="checked"' : '').'><label for="respondent_funkcija_other">Druga funkcija</label></div>';
|
||||
echo ' <input type="text" class="medium" name="respondent_funkcija" id="respondent_funkcija_text" '.($other_function ? 'value="'.$data['respondent_funkcija'].'"' : 'style="display:none;" disabled="disabled"').'>';
|
||||
|
||||
echo '</div>';
|
||||
|
||||
|
||||
// Aktivacija na daljavo - samo za anketi 5 in 6 - TODO
|
||||
echo '<div id="kolektor_setting_activation" class="kolektor_setting '.(isset($error['respondent_remote_activation']) ? 'error' : '').'" '.(($sequence == 5 && $sequence == 6) ? '' : 'style="display:none;"').'>';
|
||||
echo ' <span class="setting_line">Aktivacija na daljavo:</span>';
|
||||
echo ' <span class="setting_line"><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></span>';
|
||||
echo ' <span class="setting_line"><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></span>';
|
||||
// Aktivacija na daljavo - samo za anketi 5 in 6
|
||||
echo '<div id="kolektor_setting_activation" class="kolektor_setting '.(isset($error['respondent_remote_activation']) ? 'error' : '').'" '.(($sequence == '5' || $sequence == '6') ? '' : 'style="display:none;"').'>';
|
||||
echo ' <div class="setting_line">Aktivacija na daljavo:</div>';
|
||||
echo ' <div class="setting_line"><input type="radio" id="respondent_remote_activation_0" name="respondent_remote_activation" value="0" '.($data['respondent_remote_activation'] != '1' ? 'checked="checked"' : '').' '.(($sequence == '5' || $sequence == '6') ? '' : 'disabled="disabled"').'><label for="respondent_remote_activation_0">Ne</label></div>';
|
||||
echo ' <div class="setting_line"><input type="radio" id="respondent_remote_activation_1" name="respondent_remote_activation" value="1" '.($data['respondent_remote_activation'] == '1' ? 'checked="checked"' : '').' '.(($sequence == '5' || $sequence == '6') ? '' : 'disabled="disabled"').'><label for="respondent_remote_activation_1">Da</label></div>';
|
||||
echo '</div>';
|
||||
|
||||
|
||||
// Sporocilo respondentu
|
||||
$text = 'Pozdravljeni, Prosimo vas, če lahko izpolnite anketo. Povezava do ankete: #URL# Lep pozdrav, Kolektor ETRA';
|
||||
|
||||
echo '<div class="kolektor_setting '.(isset($error['respondent_message']) ? 'error' : '').'">';
|
||||
echo ' <span class="setting_line">Spremno besedilo:</span>';
|
||||
echo ' <textarea name="respondent_message">'.$data['respondent_message'].'</textarea>';
|
||||
echo ' <div class="setting_line">Spremno besedilo:</div>';
|
||||
echo ' <textarea name="respondent_message">'.(isset($data['respondent_message']) && $data['respondent_message'] != '' ? $data['respondent_message'] : $text).'</textarea>';
|
||||
echo '</div>';
|
||||
|
||||
|
||||
echo '</div>';
|
||||
|
||||
|
||||
@ -228,8 +240,6 @@ class Kolektor {
|
||||
echo ' <button class="medium blue" type="button" onClick="kolektorCreateResponse();">Sproži anketo in pošlji email respondentu</button>';
|
||||
echo '</div>';
|
||||
|
||||
echo '</div>';
|
||||
|
||||
|
||||
echo '</form>';
|
||||
}
|
||||
|
@ -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 .= '<br><br>'.$url;
|
||||
$body = ($respondent_message != '') ? $respondent_message : $this->response['respondent_message'];
|
||||
|
||||
// Zamenjamo line breake in #URL#
|
||||
$body = nl2br(stripslashes($body));
|
||||
$body = str_replace('#URL#', '<a href="'.$url.'">Kolektor anketa</a>', $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))
|
||||
");
|
||||
|
||||
while($row = mysqli_fetch_array($sql)){
|
||||
|
||||
$kr = new KolektorResponse($row['respondent_id']);
|
||||
|
||||
// Status 1 - "prozeno" - preklopimo na status 2 "opozorilo 1"
|
||||
if($this->response['status'] == 0){
|
||||
|
||||
if($this->response['status'] == '1'){
|
||||
$kr->setStatus($status='2');
|
||||
}
|
||||
// Status 2 - "opozorilo 1" - preklopimo na status 3 "opozorilo 3"
|
||||
elseif($this->response['status'] == 1){
|
||||
|
||||
elseif($this->response['status'] == '2'){
|
||||
$kr->setStatus($status='3');
|
||||
}
|
||||
// Status 3 "opozorilo 3" - preklopimo na status 4 "neodgovorjeno"
|
||||
elseif($this->response['status'] == 2){
|
||||
|
||||
elseif($this->response['status'] == '3'){
|
||||
$kr->setStatus($status='4');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,7 @@ class KolektorResponse {
|
||||
$url .= '&kolemail='.$this->response['respondent_email'];
|
||||
$url .= '&kolprojekt='.$this->response['respondent_projekt_id'];
|
||||
$url .= '&kolfunkc='.$this->response['respondent_funkcija'];
|
||||
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']."',
|
||||
|
@ -24,6 +24,7 @@ function kolektorCreateResponse(){
|
||||
}
|
||||
|
||||
|
||||
// Oznacevanje ankete pri kreiranju responsa
|
||||
function kolektorSelectSurvey(){
|
||||
|
||||
var survey_sequence = $('input[name="kolektor_survey"]:checked').attr("sequence");
|
||||
@ -35,9 +36,11 @@ 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();
|
||||
}
|
||||
}
|
||||
@ -45,3 +48,22 @@ function kolektorSelectSurvey(){
|
||||
$('#kolektor_respondent_settings').slideUp();
|
||||
}
|
||||
}
|
||||
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -57,6 +57,10 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
textarea{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user