From 0bb1c55c2e310d1984772d8e96cba845627ee63c Mon Sep 17 00:00:00 2001 From: Adam Zammit Date: Thu, 28 Jan 2021 14:09:43 +1100 Subject: [PATCH] Update search sample function --- searchsample.php | 108 ++++++++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 43 deletions(-) diff --git a/searchsample.php b/searchsample.php index 3265b6bc..4aee45dc 100644 --- a/searchsample.php +++ b/searchsample.php @@ -57,7 +57,7 @@ include("functions/functions.operator.php"); $js = false; if (AUTO_LOGOUT_MINUTES !== false) - $js = array("include/jquery/jquery-1.4.2.min.js","js/childnap.js"); + $js = array("include/jquery/jquery-1.4.2.min.js","js/childnap.js"); xhtml_head(T_("Search sample"),true,array("css/table.css"),$js); @@ -65,63 +65,85 @@ $operator_id = get_operator_id(); if (isset($_GET['callnext'])) { - $cn = intval($_GET['callnext']); + $cs = intval($_GET['callnext']); + $cq = intval($_GET['callnextq']); - $db->StartTrans(); - $sql = "SELECT next_case_id FROM `operator` WHERE operator_id = $operator_id"; - $nc = $db->GetOne($sql); - if (!empty($nc)) - print "

" . T_("Already calling case") . " $nc " . T_("next") . "

"; - else - { - $sql = "UPDATE `operator` SET next_case_id = $cn WHERE operator_id = $operator_id"; - $db->Execute($sql); - print "

" . T_("Will call case") . " $cn " . T_("next") . "

"; - } - $db->CompleteTrans(); + $db->StartTrans(); + $sql = "SELECT next_case_id FROM `operator` WHERE operator_id = $operator_id"; + $nc = $db->GetOne($sql); + if (!empty($nc)) + print "

" . T_("Already calling case") . " $nc " . T_("next") . "

"; + else + { + $sql = "SELECT case_id from `case` WHERE questionnaire_id = $cq and sample_id = $cs"; + $cn = $db->GetOne($sql); + + if (empty($cn)) { + //case does not exist - need to create it + $cn = add_case($cs,$cq); + + $sql = "UPDATE `operator` SET next_case_id = $cn WHERE operator_id = $operator_id"; + $db->Execute($sql); + print "

" . T_("Will call case") . " $cn " . T_("next") . "

"; + + } else { + $sql = "SELECT o.username FROM `case` as c LEFT JOIN `operator` as o on (o.operator_id = c.current_operator_id) WHERE c.case_id = $cn"; + $at = $db->GetOne($sql); + + if (!empty($at)) + print "

" . T_("Operator") . " $at " . T_("is already working on this case") . "

"; + else { + //make sure if this case is set next for someone else - to take it off them + $sql = "UPDATE `operator` set next_case_id = NULL WHERE next_case_id = $cn"; + $db->Execute($sql); + + $sql = "UPDATE `operator` SET next_case_id = $cn WHERE operator_id = $operator_id"; + $db->Execute($sql); + print "

" . T_("Will call case") . " $cn " . T_("next") . "

"; + } + } + } + $db->CompleteTrans(); } $rs = ""; //search if (isset($_POST['search'])) { - //display sample details - //limit to those allowed by admin - // - $search = $db->qstr("%" . $_POST['search'] . "%"); + //display sample details + //limit to those allowed by admin + // + $search = $db->qstr("%" . $_POST['search'] . "%"); - $sql = "SELECT c.case_id,CASE WHEN op.next_case_id IS NULL THEN CONCAT('".T_("Call next")."') ELSE CONCAT('".T_("Calling case")." ', op.next_case_id, ' ".T_("next")."') END as callnext, - sv.val,sivr.var - FROM `sample_var` as sv, `sample_import_var_restrict` as sivr, `case` as c, `operator_questionnaire` as oq, `questionnaire_sample` as qs, `sample` as s, operator as op - WHERE oq.operator_id = '$operator_id' - AND op.operator_id = oq.operator_id - AND oq.questionnaire_id = qs.questionnaire_id - AND s.import_id = qs.sample_import_id - AND c.sample_id = s.sample_id - AND c.questionnaire_id = qs.questionnaire_id - AND sv.sample_id = s.sample_id - AND sivr.var_id = sv.var_id - AND (sivr.restrict IS NULL OR sivr.restrict = 0) - AND sv.val like $search"; + $sql = "SELECT CASE WHEN c.case_id IS NULL THEN '".T_("Not yet called")."' ELSE c.case_id END as case_id, CASE WHEN op.next_case_id IS NULL THEN CONCAT('".T_("Call next")."') ELSE CONCAT('".T_("Calling case")." ', op.next_case_id, ' ".T_("next")."') END as callnext, + sv.val,sivr.var + FROM operator_questionnaire as oq + JOIN operator as op on (op.operator_id = oq.operator_id) + JOIN questionnaire_sample as qs on (oq.questionnaire_id = qs.questionnaire_id) + JOIN sample as s on (s.import_id = qs.sample_import_id) + JOIN sample_var as sv on (sv.sample_id = s.sample_id AND sv.val like $search) + JOIN sample_import_var_restrict as sivr on (sivr.var_id = sv.var_id AND (sivr.restrict IS NULL OR sivr.restrict = 0)) + LEFT JOIN `case` as c on (c.sample_id = s.sample_id and c.questionnaire_id = qs.questionnaire_id) + WHERE oq.operator_id = '$operator_id'"; - $rs = $db->GetAll($sql); + $rs = $db->GetAll($sql); - if (!empty($rs)) - { - xhtml_table($rs,array("case_id","var","val","callnext"),array(T_("Case id"),T_("Var"),T_("Value"),T_("Call next"))); - } else { - print "

" . T_("No results") . "

"; - } + if (!empty($rs)) + { + xhtml_table($rs,array("case_id","var","val","callnext"),array(T_("Case id"),T_("Var"),T_("Value"),T_("Call next"))); + } else { + print "

" . T_("No results") . "

"; + } } //display search form - print "
"; - print ""; - print ""; - print "

"; +print "
"; +print ""; +print ""; +print "

"; + - xhtml_foot();