diff --git a/CHANGELOG b/CHANGELOG index 6943474c..968c2b78 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,36 @@ +CREATE TABLE `qsqr_question` ( + `qsqr_question_id` bigint(20) NOT NULL AUTO_INCREMENT, + `questionnaire_sample_quota_row_id` bigint(20) NOT NULL, + `lime_sgqa` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `value` varchar(2048) COLLATE utf8_unicode_ci NOT NULL, + `comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`qsqr_question_id`), + KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; + +CREATE TABLE `qsqr_sample` ( + `qsqr_sample_id` bigint(20) NOT NULL AUTO_INCREMENT, + `questionnaire_sample_quota_row_id` bigint(20) NOT NULL, + `exclude_var` char(128) COLLATE utf8_unicode_ci NOT NULL, + `exclude_val` varchar(256) COLLATE utf8_unicode_ci NOT NULL, + `comparison` varchar(15) COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`qsqr_sample_id`), + KEY `questionnaire_sample_quota_row_id` (`questionnaire_sample_quota_row_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; + + +INSERT INTO qsqr_question (questionnaire_sample_quota_row_id,lime_sgqa,value,comparison) +SELECT questionnaire_sample_quota_row_id, lime_sgqa, value, comparison +FROM questionnaire_sample_quota_row; + +INSERT INTO qsqr_sample (questionnaire_sample_quota_row_id,exclude_var,exclude_val,comparison) +SELECT questionnaire_sample_quota_row_id, exclude_var,exclude_val, 'LIKE' +FROM questionnaire_sample_quota_row; + + + queXS 1.10.0 - Changes since 1.9.2 New Feature: Operators can choose extension (see: https://blueprints.launchpad.net/quexs/+spec/operatorextension) diff --git a/admin/questionnairelist.php b/admin/questionnairelist.php index b8a01b0f..4a2b0bf1 100644 --- a/admin/questionnairelist.php +++ b/admin/questionnairelist.php @@ -158,6 +158,22 @@ if (isset($_POST['questionnaire_id']) && isset($_POST['submit'])) $db->Execute($sql); + $sql = "DELETE FROM qsqr_question + WHERE questionnaire_sample_quota_row_id IN ( + SELECT questionnaire_sample_quota_row_id + FROM questionnaire_sample_quota_row + WHERE questionnaire_id = $questionnaire_id)"; + + $db->Execute($sql); + + $sql = "DELETE FROM qsqr_sample + WHERE questionnaire_sample_quota_row_id IN ( + SELECT questionnaire_sample_quota_row_id + FROM questionnaire_sample_quota_row + WHERE questionnaire_id = $questionnaire_id)"; + + $db->Execute($sql); + $sql = "DELETE FROM `questionnaire_sample_quota_row` WHERE questionnaire_id = $questionnaire_id"; diff --git a/admin/quotareport.php b/admin/quotareport.php index 3004ccc3..bf2ddbe5 100644 --- a/admin/quotareport.php +++ b/admin/quotareport.php @@ -179,11 +179,12 @@ if ($questionnaire_id) //a. (Standard quota) Monitor outcomes of questions in completed questionnaires, and exclude selected sample records when completion limit is reached //b. (Replicate quota) Exclude selected sample records (where lime_sgqa == -1) - $sql = "SELECT questionnaire_sample_quota_row_id,lime_sgqa,value,completions,quota_reached,lime_sid,comparison,exclude_var,exclude_val,qsq.description,current_completions, priority, autoprioritise - FROM questionnaire_sample_quota_row as qsq, questionnaire as q + $sql = "SELECT questionnaire_sample_quota_row_id,qsqr_question.lime_sgqa,value,completions,quota_reached,lime_sid,qsq.description,current_completions, priority, autoprioritise + FROM questionnaire_sample_quota_row as qsq, questionnaire as q, qsqr_question WHERE qsq.questionnaire_id = '$questionnaire_id' AND qsq.sample_import_id = '$sample_import_id' - AND q.questionnaire_id = '$questionnaire_id'"; + AND q.questionnaire_id = '$questionnaire_id' + AND qsqr_question.questionnaire_sample_quota_row_id = qsq.questionnaire_sample_quota_row_id"; $r = $db->GetAll($sql); @@ -210,9 +211,23 @@ if ($questionnaire_id) //We need to calc Sample size, Sample drawn, Sample remain $sql = "SELECT (c.sample_id is not null) as type, count(*) as count FROM sample as s - JOIN questionnaire_sample as qs ON (qs.questionnaire_id = '$questionnaire_id' and qs.sample_import_id = s.import_id) - JOIN sample_var as sv ON (sv.sample_id = s.sample_id AND sv.var LIKE '{$v['exclude_var']}' AND sv.val LIKE '{$v['exclude_val']}') - LEFT JOIN `case` as c ON (c.questionnaire_id = qs.questionnaire_id and c.sample_id = s.sample_id) + JOIN questionnaire_sample as qs ON (qs.questionnaire_id = '$questionnaire_id' and qs.sample_import_id = s.import_id) "; + + $sql2 = "SELECT exclude_val,exclude_var,comparison + FROM qsqr_sample + WHERE questionnaire_sample_quota_row_id = {$v['questionnaire_sample_quota_row_id']}"; + + $rev = $db->GetAll($sql2); + + //reduce sample by every item in the qsqr_sample table + $x = 1; + foreach($rev as $ev) + { + $sql .= " JOIN sample_var as sv$x ON (sv$x.sample_id = s.sample_id AND sv$x.var LIKE '{$ev['exclude_var']}' AND sv$x.val {$ev['comparison']} '{$ev['exclude_val']}') "; + $x++; + } + + $sql .= " LEFT JOIN `case` as c ON (c.questionnaire_id = qs.questionnaire_id and c.sample_id = s.sample_id) WHERE s.import_id = '$sample_import_id' GROUP BY (c.sample_id is not null)"; diff --git a/admin/quotarow.php b/admin/quotarow.php index b4f3fced..5544a963 100755 --- a/admin/quotarow.php +++ b/admin/quotarow.php @@ -112,12 +112,12 @@ if (isset($_GET['questionnaire_id']) && isset($_GET['sgqa']) && isset($_GET['va if (isset($_GET['questionnaire_id']) && isset($_GET['questionnaire_sample_quota_row_id'])) { - //need to remove quota + //need to edit quota $questionnaire_id = bigintval($_GET['questionnaire_id']); $questionnaire_sample_quota_row_id = bigintval($_GET['questionnaire_sample_quota_row_id']); - open_row_quota($questionnaire_sample_quota_row_id); + //open_row_quota($questionnaire_sample_quota_row_id); } $questionnaire_id = false; @@ -160,9 +160,9 @@ if ($questionnaire_id != false) print "