You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
8.0 KiB
174 lines
8.0 KiB
<?php
|
|
include_once('config.php');
|
|
require_once('include/logging.php');
|
|
require_once('include/database/PearDatabase.php');
|
|
require_once('data/SugarBean.php');
|
|
require_once('data/CRMEntity.php');
|
|
require_once('include/utils.php');
|
|
|
|
|
|
class HelpDesk extends CRMEntity {
|
|
var $log;
|
|
var $db;
|
|
|
|
|
|
// Stored fields
|
|
var $id;
|
|
var $mode;
|
|
|
|
var $tab_name = Array('crmentity','troubletickets','seticketsrel','ticketcf','ticketcomments');
|
|
var $tab_name_index = Array('crmentity'=>'crmid','troubletickets'=>'ticketid','seticketsrel'=>'ticketid','ticketcf'=>'ticketid','ticketcomments'=>'ticketid');
|
|
var $column_fields = Array();
|
|
|
|
var $sortby_fields = Array('title','status','priority','crmid','firstname');
|
|
|
|
var $list_fields = Array(
|
|
'Ticket ID'=>Array('crmentity'=>'crmid'),
|
|
'Subject'=>Array('troubletickets'=>'title'),
|
|
'Related to'=>Array('troubletickets'=>'parent_id'),
|
|
'Status'=>Array('troubletickets'=>'status'),
|
|
'Priority'=>Array('troubletickets'=>'priority'),
|
|
'Assigned To'=>Array('crmentity','smownerid')
|
|
);
|
|
|
|
var $list_fields_name = Array(
|
|
'Ticket ID'=>'',
|
|
'Subject'=>'ticket_title',
|
|
'Related to'=>'parent_id',
|
|
'Status'=>'ticketstatus',
|
|
'Priority'=>'ticketpriorities',
|
|
'Assigned To'=>'assigned_user_id');
|
|
|
|
var $list_link_field= 'ticket_title';
|
|
|
|
var $range_fields = Array(
|
|
'ticketid',
|
|
'title',
|
|
'firstname',
|
|
'lastname',
|
|
'parent_id',
|
|
'productid',
|
|
'productname',
|
|
'priority',
|
|
'severity',
|
|
'status',
|
|
'category',
|
|
'description',
|
|
'solution',
|
|
'modifiedtime',
|
|
'createdtime'
|
|
);
|
|
|
|
function HelpDesk() {
|
|
$this->log =LoggerManager::getLogger('helpdesk');
|
|
$this->db = new PearDatabase();
|
|
$this->column_fields = getColumnFields('HelpDesk');
|
|
}
|
|
|
|
function get_summary_text()
|
|
{
|
|
return $this->name;
|
|
}
|
|
|
|
function get_opportunities($id)
|
|
{
|
|
//include('modules/HelpDesk/RenderRelatedListUI.php');
|
|
//$query ='select * from troubletickets inner join crmentity on crmentity.crmid = troubletickets.ticketid where crmentity.crmid = '.$id;
|
|
$query = 'select potential.*, seticketsrel.* from troubletickets inner join crmentity on crmentity.crmid = troubletickets.ticketid inner join seticketsrel on seticketsrel.ticketid = troubletickets.ticketid inner join potential on potential.potentialid = seticketsrel.crmid where crmentity.crmid = '.$id;
|
|
renderRelatedPotentials($query,$id);
|
|
}
|
|
function get_activities($id)
|
|
{
|
|
$query = "SELECT activity.*, crmentity.crmid, contactdetails.contactid, contactdetails.lastname, contactdetails.firstname, recurringevents.recurringtype, crmentity.smownerid, crmentity.modifiedtime, users.user_name from activity inner join seactivityrel on seactivityrel.activityid=activity.activityid inner join crmentity on crmentity.crmid=activity.activityid left outer join recurringevents on recurringevents.activityid=activity.activityid left join cntactivityrel on cntactivityrel.activityid= activity.activityid left join contactdetails on contactdetails.contactid= cntactivityrel.contactid left join users on users.id=crmentity.smownerid where seactivityrel.crmid=".$id." and (activitytype='Task' or activitytype='Call' or activitytype='Meeting')";
|
|
renderRelaredActivities($query,$id);
|
|
}
|
|
function get_attachments($id)
|
|
{
|
|
//Done for Merge -- Don
|
|
$query = "select notes.title,'Notes ' ActivityType, notes.filename, attachments.type FileType,crm2.modifiedtime lastmodified, seattachmentsrel.attachmentsid attachmentsid, notes.notesid crmid from notes inner join senotesrel on senotesrel.notesid= notes.notesid inner join crmentity on crmentity.crmid= senotesrel.crmid inner join crmentity crm2 on crm2.crmid=notes.notesid left join seattachmentsrel on seattachmentsrel.crmid =notes.notesid left join attachments on seattachmentsrel.attachmentsid = attachments.attachmentsid where crmentity.crmid=".$id;
|
|
$query .= ' union all ';
|
|
$query .= "select attachments.description title ,'Attachments' ActivityType, attachments.name filename, attachments.type FileType,crm2.modifiedtime lastmodified, attachments.attachmentsid attachmentsid, seattachmentsrel.attachmentsid crmid from attachments inner join seattachmentsrel on seattachmentsrel.attachmentsid= attachments.attachmentsid inner join crmentity on crmentity.crmid= seattachmentsrel.crmid inner join crmentity crm2 on crm2.crmid=attachments.attachmentsid where crmentity.crmid=".$id;
|
|
renderRelatedAttachments($query,$id);
|
|
}
|
|
|
|
function get_ticket_comments_list($ticketid)
|
|
{
|
|
$sql = "select * from ticketcomments where ticketid=".$ticketid;
|
|
$result = $this->db->query($sql);
|
|
$noofrows = $this->db->num_rows($result);
|
|
for($i=0;$i<$noofrows;$i++)
|
|
{
|
|
$ownerid = $this->db->query_result($result,$i,"ownerid");
|
|
$ownertype = $this->db->query_result($result,$i,"ownertype");
|
|
if($ownertype == 'user')
|
|
$name = getUserName($ownerid);
|
|
elseif($ownertype == 'customer')
|
|
{
|
|
$sql1 = 'select * from PortalInfo where id='.$ownerid;
|
|
$name = $this->db->query_result($this->db->query($sql1),0,'user_name');
|
|
}
|
|
|
|
$output['comments'][$i] = nl2br($this->db->query_result($result,$i,"comments"));
|
|
$output['owner'][$i] = $name;
|
|
$output['createdtime'][$i] = $this->db->query_result($result,$i,"createdtime");
|
|
}
|
|
return $output;
|
|
}
|
|
function get_user_tickets_list($user_name,$id)
|
|
{
|
|
$query = "select crmentity.crmid, troubletickets.*, crmentity.smownerid, crmentity.createdtime, crmentity.modifiedtime, contactdetails.firstname, contactdetails.lastname, products.productid, products.productname, ticketcf.* from troubletickets inner join ticketcf on ticketcf.ticketid = troubletickets.ticketid inner join crmentity on crmentity.crmid=troubletickets.ticketid left join contactdetails on troubletickets.parent_id=contactdetails.contactid left join products on products.productid = troubletickets.product_id left join users on crmentity.smownerid=users.id where crmentity.deleted=0 and contactdetails.email='".$user_name."' and troubletickets.parent_id = '".$id."'";
|
|
return $this->process_list_query($query);
|
|
}
|
|
|
|
function process_list_query($query)
|
|
{
|
|
|
|
$result =& $this->db->query($query,true,"Error retrieving $this->object_name list: ");
|
|
$list = Array();
|
|
$rows_found = $this->db->getRowCount($result);
|
|
if($rows_found != 0)
|
|
{
|
|
$ticket = Array();
|
|
for($index = 0 , $row = $this->db->fetchByAssoc($result, $index); $row && $index <$rows_found;$index++, $row = $this->db->fetchByAssoc($result, $index))
|
|
{
|
|
foreach($this->range_fields as $columnName)
|
|
{
|
|
if (isset($row[$columnName]))
|
|
{
|
|
$ticket[$columnName] = $row[$columnName];
|
|
}
|
|
else
|
|
{
|
|
$ticket[$columnName] = "";
|
|
}
|
|
}
|
|
$list[] = $ticket;
|
|
}
|
|
}
|
|
|
|
$response = Array();
|
|
$response['list'] = $list;
|
|
$response['row_count'] = $rows_found;
|
|
$response['next_offset'] = $next_offset;
|
|
$response['previous_offset'] = $previous_offset;
|
|
|
|
return $response;
|
|
}
|
|
|
|
function getColumnNames_Hd()
|
|
{
|
|
$table1flds = $this->db->getColumnNames("troubletickets");
|
|
$sql1 = "select fieldlabel from field where generatedtype=2 and tabid=13";
|
|
$result = $this->db->query($sql1);
|
|
$numRows = $this->db->num_rows($result);
|
|
for($i=0; $i < $numRows;$i++)
|
|
{
|
|
$custom_fields[$i] = $this->db->query_result($result,$i,"fieldlabel");
|
|
}
|
|
|
|
$mergeflds = array_merge($table1flds,$custom_fields);
|
|
return $mergeflds;
|
|
}
|
|
|
|
}
|
|
?>
|
|
|