Check SLA for tickets, integrated into the internal CRON architecture (and moved into the Tickets module)

SVN:trunk[1136]
This commit is contained in:
Romain Quetiez
2011-03-21 10:57:37 +00:00
parent 736247f6e1
commit c3bd0b1b9e
2 changed files with 57 additions and 64 deletions

View File

@@ -610,4 +610,61 @@ abstract class ResponseTicket extends Ticket
*/
}
class ProcessSLAResponseTicket implements iBackgroundProcess
{
public function Process($iTimeLimit)
{
$oMyChange = new CMDBChange();
$oMyChange->Set("date", time());
$oMyChange->Set("userinfo", "Automatic updates");
$iChangeId = $oMyChange->DBInsertNoReload();
$aReport = array();
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'new\' AND tto_escalation_deadline <= NOW()'));
while ($oToEscalate = $oSet->Fetch())
{
$oToEscalate->ApplyStimulus('ev_timeout');
//$oToEscalate->Set('tto_escalation_deadline', null);
$oToEscalate->DBUpdateTracked($oMyChange, true);
$aReport['reached TTO ESCALATION deadline'][] = $oToEscalate->Get('ref');
}
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'assigned\' AND ttr_escalation_deadline <= NOW()'));
while ($oToEscalate = $oSet->Fetch())
{
$oToEscalate->ApplyStimulus('ev_timeout');
//$oToEscalate->Set('ttr_escalation_deadline', null);
$oToEscalate->DBUpdateTracked($oMyChange, true);
$aReport['reached TTR ESCALATION deadline'][] = $oToEscalate->Get('ref');
}
$oSet = new DBObjectSet(DBObjectSearch::FromOQL('SELECT ResponseTicket WHERE status = \'resolved\' AND closure_deadline <= NOW()'));
while ($oToEscalate = $oSet->Fetch())
{
$oToEscalate->ApplyStimulus('ev_close');
//$oToEscalate->Set('closure_deadline', null);
$oToEscalate->DBUpdateTracked($oMyChange, true);
$aReport['reached closure deadline'][] = $oToEscalate->Get('ref');
}
$aStringReport = array();
foreach ($aReport as $sOperation => $aTicketRefs)
{
if (count($aTicketRefs) > 0)
{
$aStringReport[] = $sOperation.': '.count($aTicketRefs).' {'.implode(', ', $aTicketRefs).'}';
}
}
if (count($aStringReport) == 0)
{
return "No ticket to process";
}
else
{
return "Some tickets reached the limit - ".implode('; ', $aStringReport);
}
}
}
?>