qstr($_GET['start']);
$end = $db->qstr($_GET['end']);
$contact_phone_id = bigintval($_GET['contact_phone_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']);
if ($_GET['new'] == 'create'){
$case_id = bigintval($_GET['case_id']);
$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(),@@session.time_zone,'UTC'),CONVERT_TZ(NOW(),@@session.time_zone,'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['appointment_id'],$_GET['case_id'],$_GET['new'],$_GET['update']);
}
if ( (isset($_GET['appointment_id']) && isset($_GET['case_id'])) ||(isset($_GET['new']) && isset($_GET['case_id'])))
{
$appointment_id = bigintval($_GET['appointment_id']);
$case_id = bigintval($_GET['case_id']);
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 "
";
}
else
{
//Display an edit form
if ($_GET['new'] == 'new'){$title = T_("Create NEW appointment");} else{$title = T_("Edit appointment"); $subtitle = "ID " . $appointment_id;}
xhtml_head($title,true,$css,$js_head,false,false,false,$subtitle);
$lang = DEFAULT_LOCALE;
$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
FROM `case` as c, `respondent` as r
WHERE c.case_id = '$case_id' AND r.case_id = c.case_id";
$rs = $db->GetRow($sql);
$startdate = $rs['startdate'];
$enddate = $rs['enddate'];
print "";
if ($_GET['new'] =='new'){
$start = $startdate;
$end = $enddate;
$rtz = $_GET['rtz'];
}
if (isset($_GET['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'];
}
}
print "";
}
}
else {
$operator_id = get_operator_id();
$subtitle = T_("Appointments");
xhtml_head(T_("Display Appointments"),true,$css,$js_head,false,30); //array("../css/table.css")
print "" . T_("All appointments (with times displayed in your time zone)") . "
";
$sql = "SELECT q.description, CONVERT_TZ(a.start,'UTC',@@session.time_zone) as start, CONVERT_TZ(a.end,'UTC',@@session.time_zone) as end,CONCAT(r.firstName, ' ', r.lastName) as resp, IFNULL(ou.description,'" . TQ_("Not yet called") . "') as outcome, oo.firstName as makerName, ooo.firstName as callerName,
CONCAT('', c.case_id, '') as case_id,
CONCAT(' ') as link,
CONCAT(' ') as edit,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) on (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)
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
WHERE a.end >= CONVERT_TZ(NOW(),'System','UTC') AND c.current_outcome_id !=10
ORDER BY a.start ASC";
$rs = $db->GetAll($sql);
if (!empty($rs)) {
translate_array($rs,array("outcome"));
xhtml_table($rs,array("description","case_id","start","end","edit","makerName","witho","resp","outcome","callerName","link"),array(T_("Questionnaire"),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 q.description, CONVERT_TZ(a.start,'UTC',@@session.time_zone) as start, CONVERT_TZ(a.end,'UTC',@@session.time_zone) as end, CONCAT(r.firstName, ' ', r.lastName) as resp,
CONCAT('', c.case_id, '') as case_id,
CONCAT(' ') as link,
CONCAT(' ') as edit
FROM appointment as a
JOIN (`case` as c, respondent as r, questionnaire as q, `sample` as s, sample_import as si) 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)
WHERE q.enabled=1 AND si.enabled = 1 AND a.end < CONVERT_TZ(NOW(),'System','UTC') AND a.completed_call_id IS NULL AND c.current_outcome_id !=10
GROUP BY c.case_id
ORDER BY a.start ASC";
$rs = $db->GetAll($sql);
if (!empty($rs)) {
xhtml_table($rs,array("description","case_id","start","end","edit","resp","link"),array(T_("Questionnaire"),T_("Case ID"),T_("Start"),T_("End")," ",T_("Respondent")," "),"tclass",false,false,"bs-table");
} else print "" . T_("No appointments missed") . "
";
}
xhtml_foot($js_foot);
?>