qstr($_GET['start']); $end = $db->qstr($_GET['end']); $case_id = bigintval($_GET['case_id']); $respondent_id = bigintval($_GET['respondent_id']); $require_operator_id = "NULL"; if ($_GET['require_operator_id'] > 1) $require_operator_id = bigintval($_GET['require_operator_id']); //* add new number to db if ( isset($_GET['addphonenumber']) && !empty($_GET['addphonenumber'])){ add_contact_phone($case_id,$_GET['addphonenumber']); $contact_phone_id = $db->Insert_ID(); } else { $contact_phone_id = bigintval($_GET['contact_phone_id']); } if (isset($_GET['new']) && $_GET['new'] == 'create'){ $operator_id = get_operator_id(); if ($operator_id == false) die(); $sql = "SELECT Time_zone_name FROM respondent WHERE respondent_id = '$respondent_id'"; $respondent_tz = $db->GetOne($sql); // create a call attempt $sql = "INSERT INTO call_attempt (call_attempt_id,case_id,operator_id,respondent_id,start,end) VALUES (NULL,$case_id,$operator_id,$respondent_id,CONVERT_TZ(NOW(),'System','UTC'),CONVERT_TZ(NOW(),'System','UTC'))"; $db->Execute($sql); $call_attempt_id = $db->Insert_ID(); $sql = "INSERT INTO `appointment` (appointment_id,case_id,contact_phone_id,call_attempt_id,start,end,require_operator_id,respondent_id,completed_call_id) VALUES(NULL,$case_id,$contact_phone_id,$call_attempt_id,CONVERT_TZ($start,'$respondent_tz','UTC'),CONVERT_TZ($end,'$respondent_tz','UTC'),$require_operator_id,$respondent_id,NULL)"; $db->Execute($sql); $appointment_id = $db->Insert_ID(); $_GET['appointment_id'] = $appointment_id; $appointment_id = bigintval($_GET['appointment_id']); } else { $appointment_id = bigintval($_GET['appointment_id']); //Edit this appointment in the database $sql = "UPDATE appointment as a, respondent as r SET a.start = CONVERT_TZ($start,r.Time_zone_name,'UTC'), a.end = CONVERT_TZ($end,r.Time_zone_name,'UTC'), a.contact_phone_id = $contact_phone_id, a.respondent_id = $respondent_id, a.require_operator_id = $require_operator_id WHERE a.appointment_id = $appointment_id AND r.respondent_id = $respondent_id"; $db->Execute($sql); } unset ($_GET['start'],$_GET['end'],$_GET['new'],$_GET['update'],$_GET['appointment_id'],$_GET['case_id'],$_GET['addphonenumber']); // } if ( (isset($_GET['appointment_id']) && isset($_GET['case_id'])) ||(isset($_GET['new']) && isset($_GET['case_id']))) { if (isset($_GET['appointment_id'])) $appointment_id = bigintval($_GET['appointment_id']); else $appointment_id = ""; if (isset($_GET['case_id'])) $case_id = bigintval($_GET['case_id']); $require_operator_id = "NULL"; if (isset($_GET['delete'])) { $sql = "DELETE FROM appointment WHERE appointment_id = '$appointment_id'"; $db->Execute($sql); xhtml_head(T_("Now modify case outcome"),true,$css,$js_head); print "

" . T_("The appointment has been deleted. Now you must modify the case outcome") . "

" . T_("Modify case outcome") . "
"; } else { $sql = "SELECT CONVERT_TZ(NOW(),'SYSTEM',r.Time_zone_name) as startdate, CONVERT_TZ(DATE_ADD(NOW(), INTERVAL 10 YEAR),'SYSTEM',r.Time_zone_name) as enddate, r.respondent_id, ca.contact_phone_id FROM `case` as c, `respondent` as r, `call` as ca WHERE c.case_id = '$case_id' AND r.case_id = c.case_id AND c.last_call_id = ca.call_id"; $rs = $db->GetRow($sql); $startdate = $rs['startdate']; $enddate = $rs['enddate']; $respondent_id = $rs['respondent_id']; if (!isset($contact_phone_id)) $contact_phone_id = $rs['contact_phone_id']; if (isset($_GET['new']) && $_GET['new'] == 'new'){ $title = T_("Create NEW appointment"); $subtitle =""; $start = $startdate; $end = $enddate; $rtz = $_GET['rtz']; } if (isset($_GET['appointment_id'])) { $title = T_("Edit appointment"); $subtitle = "ID " . $appointment_id; $sql = "SELECT a.contact_phone_id,a.call_attempt_id, CONVERT_TZ(a.start,'UTC',r.Time_zone_name) as `start`, CONVERT_TZ(a.end,'UTC',r.Time_zone_name) as `end`, a.respondent_id, a.require_operator_id, r.Time_zone_name as rtz FROM `appointment` as a, respondent as r WHERE a.appointment_id = '$appointment_id' AND a.case_id = '$case_id' AND r.respondent_id = a.respondent_id"; $rs = $db->GetRow($sql); if (!empty($rs)){ $respondent_id = $rs['respondent_id']; $contact_phone_id = $rs['contact_phone_id']; $require_operator_id = $rs['require_operator_id']; $start = $rs['start']; $end = $rs['end']; $rtz = $rs['rtz']; } else die(T_("ERROR in DB records, Check tables 'appointment' and 'respondent' and Time zone settings")); } //Display an edit form xhtml_head($title,true,$css,$js_head,false,false,false,$subtitle); print ""; print "
"; print ""; display_chooser($db->GetAll("SELECT respondent_id as value, CONCAT(firstName,' ',lastName) as description, CASE when respondent_id = '$respondent_id' THEN 'selected=\'selected\'' ELSE '' END as selected FROM respondent WHERE case_id = '$case_id'"),"respondent_id","respondent_id",false,false,false,true,false,true,"pull-left"); print "

"; $sql = "SELECT contact_phone_id as value, phone as description, CASE when contact_phone_id = '$contact_phone_id' THEN 'selected=\'selected\'' ELSE '' END as selected FROM contact_phone WHERE case_id = '$case_id'"; $rs = $db->GetAll($sql); //* added option to add new number print "
"; print ""; //*end option print "

". T_("ATTENTION! Keep in mind that you're setting 'Start' & 'End' appoinment times in RESPONDENT LOCAL TIME !!!") . "
"; date_default_timezone_set($rtz); print "

" . $rtz . "

"; print "

"; print "

"; print "

"; $ops = $db->GetAll("SELECT o.operator_id as value, CONCAT(o.firstName, ' ', o.lastName) as description, CASE WHEN o.operator_id = '$require_operator_id' THEN 'selected=\'selected\'' ELSE '' END as selected FROM operator as o"); $selected = "selected=\'selected\'"; foreach($ops as $o) { if (!empty($o['selected'])) { $selected = ""; break; } } array_unshift($ops,array('value'=>0,'description'=>T_("Any operator"),'selected'=>$selected)); display_chooser($ops,"require_operator_id","require_operator_id",false,false,false,true,false,true,"pull-left"); print " "; if (isset($_GET['new']) && $_GET['new'] == 'new') { print ""; } print "


 " . T_("Cancel edit") . "
"; print "
"; print "
 " . T_("Delete this appointment") . "
"; print "
"; } } else { $operator_id = get_operator_id(); $subtitle = T_("Appointments"); xhtml_head(T_("Display Appointments"),true,$css,$js_head,false,30); print "

" . T_("All appointments (with times displayed in your time zone)") . "

"; $sql = "SELECT MIN(q.description) as description, MIN(si.description) as smpl, MIN(CONVERT_TZ(a.start,'UTC',co.Time_zone_name)) as start, MIN(CONVERT_TZ(a.end,'UTC',co.Time_zone_name)) as end,MIN(CONCAT(r.firstName, ' ', r.lastName)) as resp, MIN( IFNULL(ou.description,'" . TQ_("Not yet called") . "')) as outcome, MIN(oo.firstName) as makerName, MIN(ooo.firstName) as callerName, CONCAT('', c.case_id, '') as case_id, MIN(CONCAT('  ')) as link, MIN(CONCAT('  ')) as edit,MIN(IFNULL(ao.firstName,'" . TQ_("Any operator") . "')) as witho FROM appointment as a JOIN (`case` as c, respondent as r, questionnaire as q, operator as oo, call_attempt as cc, operator as co, `sample` as s, sample_import as si) on (c.sample_id = s.sample_id and a.case_id = c.case_id and a.respondent_id = r.respondent_id and q.questionnaire_id = c.questionnaire_id and a.call_attempt_id = cc.call_attempt_id and cc.operator_id = oo.operator_id and si.sample_import_id = s.import_id) LEFT JOIN (`call` as ca, outcome as ou, operator as ooo) ON (ca.call_id = a.completed_call_id and ou.outcome_id = ca.outcome_id and ca.operator_id = ooo.operator_id) LEFT JOIN operator AS ao ON ao.operator_id = a.require_operator_id LEFT JOIN (questionnaire_sample_quota as qsq) on (s.import_id = qsq.sample_import_id and c.questionnaire_id = qsq.questionnaire_id) LEFT JOIN (questionnaire_sample_quota_row as qsqr) on (s.import_id = qsqr.sample_import_id and c.questionnaire_id = qsqr.questionnaire_id) WHERE q.enabled=1 AND si.enabled=1 AND a.end >= CONVERT_TZ(NOW(),'System','UTC') AND (qsq.quota_reached IS NULL OR qsq.quota_reached != 1) AND (qsqr.quota_reached IS NULL OR qsqr.quota_reached != 1) AND co.operator_id = '$operator_id' GROUP BY a.appointment_id ORDER BY a.start ASC"; $rs = $db->GetAll($sql); if (!empty($rs)) { translate_array($rs,array("outcome")); xhtml_table($rs,array("description","smpl","case_id","start","end","edit","makerName","witho","resp","outcome","callerName","link"),array(T_("Questionnaire"),T_("Sample"),T_("Case ID"),T_("Start"),T_("End"),"  ",T_("Created by"),T_("Appointment with"),T_("Respondent"),T_("Current outcome"),T_("Operator who called"),"  "),"tclass",false,false,"bs-table"); } else print "

" . T_("No future appointments") . "

"; print "

" . T_("Missed appointments (with times displayed in your time zone)") . "

"; $sql = "SELECT MIN(q.description) as description, MIN(si.description) as smpl, MIN(CONVERT_TZ(a.start,'UTC',co.Time_zone_name)) as start, MIN(CONVERT_TZ(a.end,'UTC',co.Time_zone_name)) as end, MIN(CONCAT(r.firstName, ' ', r.lastName)) as resp, MIN(CONCAT('', c.case_id, '')) as case_id, MIN(CONCAT('  ')) as link, MIN(CONCAT('  ')) as edit FROM appointment as a JOIN (`case` as c, respondent as r, questionnaire as q, `sample` as s, sample_import as si, operator as co) on (a.case_id = c.case_id and a.respondent_id = r.respondent_id and q.questionnaire_id = c.questionnaire_id and s.sample_id = c.sample_id and s.import_id= si.sample_import_id) LEFT JOIN (`call` as ca) ON (ca.call_id = a.completed_call_id) LEFT JOIN (questionnaire_sample_quota as qsq) on (s.import_id = qsq.sample_import_id and c.questionnaire_id = qsq.questionnaire_id) LEFT JOIN (questionnaire_sample_quota_row as qsqr) on (s.import_id = qsqr.sample_import_id and c.questionnaire_id = qsqr.questionnaire_id) WHERE q.enabled=1 AND si.enabled=1 AND a.end < CONVERT_TZ(NOW(),'System','UTC') AND a.completed_call_id IS NULL AND (qsq.quota_reached IS NULL OR qsq.quota_reached != 1 ) AND (qsqr.quota_reached IS NULL OR qsqr.quota_reached != 1) AND co.operator_id = '$operator_id' GROUP BY a.appointment_id ORDER BY a.start ASC"; $rs = $db->GetAll($sql); if (!empty($rs)) { xhtml_table($rs,array("description","smpl","case_id","start","end","edit","resp","link"),array(T_("Questionnaire"),T_("Sample"),T_("Case ID"),T_("Start"),T_("End"),"  ",T_("Respondent"),"  "),"tclass",false,false,"bs-table"); } else print "

" . T_("No missed appointments") . "

"; } xhtml_foot($js_foot); ?>