// if Forward ticket if (isset($_POST['forward'])) { //Create update message for db $reason = "<div class=update><h3>Ticket forwarded by " . $_SESSION['sAMAccountName'] . " (" . date("d/m/Y H:i:s") . ")</h3>" . htmlspecialchars($_POST['details']) . "</div>"; //PDO Update ticket $STH = $DBH->Prepare("UPDATE calls SET helpdesk = :helpdesk, status=1, assigned = :assigned, lastupdate = :lastupdate, details = CONCAT(details, :details) WHERE callid = :callid"); $STH->bindParam(':helpdesk', $_POST['fwdhelpdesk'], PDO::PARAM_STR); $nullvalue = NULL; $STH->bindParam(':assigned', $nullvalue, PDO::PARAM_STR); $STH->bindParam(':lastupdate', date("c"), PDO::PARAM_STR); $STH->bindParam(':details', $reason, PDO::PARAM_STR); $STH->bindParam(':callid', $_POST['id'], PDO::PARAM_STR); $STH->execute(); //PDO Update engineers assignment $STH = $DBH->Prepare("UPDATE assign_engineers SET engineerId = :engineerid WHERE id = :id"); $STH->bindParam(':engineerid', next_engineer($_POST['fwdhelpdesk']), PDO::PARAM_STR); $STH->bindParam(':id', $_POST['fwdhelpdesk'], PDO::PARAM_STR); $STH->execute(); //Email Managers to let them know ticket forwarded. // Get engineers emails $STHemail = $DBH->Prepare('SELECT engineerEmail FROM engineers WHERE helpdesk = :helpdesk AND engineerLevel=2'); $STHemail->bindParam(':helpdesk', $_POST['fwdhelpdesk'], PDO::PARAM_INT); $STHemail->setFetchMode(PDO::FETCH_OBJ); $STHemail->execute(); while ($rowemail = $STHemail->fetch()) { //Construct message $to = $rowemail->engineerEmail; $message = "<span style='font-family: arial;'><p>Helpdesk ticket (#" . $_POST['id'] . ") has been forwarded to your helpdesk.</p>"; $message .= "<p>To view the details of this ticket please <a href='" . HELPDESK_LOC . "'>Visit " . CODENAME . "</a></p>"; $message .= "<p>This is an automated message please do not reply</p>"; $msgtitle = "New Helpdesk ticket (#" . $_POST['id'] . ")";
function increment_engineer($data) { // Check helpdesk call is for $helpdeskid = $data; // find last engineer assigned global $DBH; // Update engineers asignment (need to do check if should round robin or fixed assignment) $STH = $DBH->Prepare("UPDATE assign_engineers SET engineerId = :engineerid WHERE id = :id"); $STH->bindParam(':engineerid', next_engineer($helpdeskid), PDO::PARAM_STR); $STH->bindParam(':id', $helpdeskid, PDO::PARAM_STR); $STH->execute(); return; }
include '/var/www/html/helpdesk/includes/functions.php'; // Process Scheduled Tickets echo "\n-- Starting Process Scheduled Tickets : " . date("h:i:s") . "\n"; //TODO check scheduled tickets and according to frequency create new tickets for the following day // List all scheduled tickets echo "* Scheduled tickets in database \n"; $STH = $DBH->Prepare("SELECT * FROM scheduled_calls"); $STH->setFetchMode(PDO::FETCH_OBJ); $STH->execute(); if ($STH->rowCount() == 0) { echo "0 items scheduled\n"; } while ($row = $STH->fetch()) { // who to assign if ($row->assigned == -1) { $assigned = next_engineer($row->helpdesk); } else { $assigned = $row->assigned; } // assigned engineer (int) // increment engineer so tickets are round robbin increment_engineer($row->helpdesk); // cleanup ticket objects unset($createticket); // create ticket from scheduled_calls table $createticket = new ticket($row->name, $row->email, $row->tel, $row->details, $assigned, date("c"), date("c"), $row->status, $row->closed, $row->closeengineerid, $row->urgency, $row->location, $row->room, $row->category, $row->owner, $row->helpdesk, $row->invoicedate, $row->callreason, $row->title, $row->lockerid, 1); // prep PDO statment $STHloop = $DBH->Prepare("INSERT INTO calls (name, email, tel, details, assigned, opened, lastupdate, status, closed, closeengineerid, urgency, location, room, category, owner, helpdesk, invoicedate, callreason, title, lockerid, pm) VALUES (:name, :email, :tel, :details, :assigned, :opened, :lastupdate, :status, :closed, :closeengineerid, :urgency, :location, :room, :category, :owner, :helpdesk, :invoicedate, :callreason, :title, :lockerid, :pm)"); // set start date $startdate = date("Y-m-d", strtotime($row->startschedule)); // Process each ticket checking frequency