diff --git a/modules/itop-tickets-1.0.0/model.itop-tickets.php b/modules/itop-tickets-1.0.0/model.itop-tickets.php index 9d7bfc802..9f5309b65 100644 --- a/modules/itop-tickets-1.0.0/model.itop-tickets.php +++ b/modules/itop-tickets-1.0.0/model.itop-tickets.php @@ -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); + } + } +} + ?> diff --git a/webservices/check_sla_for_tickets.php b/webservices/check_sla_for_tickets.php deleted file mode 100644 index 35be1a610..000000000 --- a/webservices/check_sla_for_tickets.php +++ /dev/null @@ -1,64 +0,0 @@ - - * @author Romain Quetiez - * @author Denis Flaven - * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL - */ - -require_once('../approot.inc.php'); -require_once(APPROOT.'/application/startup.inc.php'); - -require_once(APPROOT.'/application/loginwebpage.class.inc.php'); -LoginWebPage::DoLogin(); // Check user rights and prompt if needed - -$oMyChange = new CMDBChange(); -$oMyChange->Set("date", time()); -$oMyChange->Set("userinfo", "Automatic updates"); -$iChangeId = $oMyChange->DBInsertNoReload(); - -$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); - echo "

ticket ".$oToEscalate->Get('ref')." reached TTO ESCALATION deadline

\n"; -} - -$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); - echo "

ticket ".$oToEscalate->Get('ref')." reached TTR ESCALATION deadline

\n"; -} - -$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); - echo "

ticket ".$oToEscalate->Get('ref')." reached closure deadline

\n"; -} - -?>