Get next level for a SLT
static public getNextSltLevel ( $slts_id, $slalevels_id ) : id | ||
$slts_id | integer id of the SLT | |
$slalevels_id | integer id of the current SLT level | |
return | id | of the sla level : 0 if not exists |
/** * Do a specific SLAlevel for a ticket * * @param $data array data of an entry of slalevels_tickets * @param $sltType Type of slt * * @since version 9.1 2 parameters mandatory * * @return nothing **/ static function doLevelForTicket(array $data, $sltType) { $ticket = new Ticket(); $slalevelticket = new self(); // existing ticket and not deleted if ($ticket->getFromDB($data['tickets_id']) && !$ticket->isDeleted()) { // search all actors of a ticket foreach ($ticket->getUsers(CommonITILActor::REQUESTER) as $user) { $ticket->fields['_users_id_requester'][] = $user['users_id']; } foreach ($ticket->getUsers(CommonITILActor::ASSIGN) as $user) { $ticket->fields['_users_id_assign'][] = $user['users_id']; } foreach ($ticket->getUsers(CommonITILActor::OBSERVER) as $user) { $ticket->fields['_users_id_observer'][] = $user['users_id']; } foreach ($ticket->getGroups(CommonITILActor::REQUESTER) as $group) { $ticket->fields['_groups_id_requester'][] = $group['groups_id']; } foreach ($ticket->getGroups(CommonITILActor::ASSIGN) as $group) { $ticket->fields['_groups_id_assign'][] = $group['groups_id']; } foreach ($ticket->getGroups(CommonITILActor::OBSERVER) as $group) { $ticket->fields['_groups_id_observer'][] = $group['groups_id']; } foreach ($ticket->getSuppliers(CommonITILActor::ASSIGN) as $supplier) { $ticket->fields['_suppliers_id_assign'][] = $supplier['suppliers_id']; } $slalevel = new SlaLevel(); $slt = new SLT(); // Check if slt datas are OK list($dateField, $sltField) = SLT::getSltFieldNames($sltType); if ($ticket->fields[$sltField] > 0) { if ($ticket->fields['status'] == CommonITILObject::CLOSED) { // Drop line when status is closed $slalevelticket->delete(array('id' => $data['id'])); } else { if ($ticket->fields['status'] != CommonITILObject::SOLVED) { // No execution if ticket has been taken into account if (!($sltType == SLT::TTO && $ticket->fields['takeintoaccount_delay_stat'] > 0)) { // If status = solved : keep the line in case of solution not validated $input['id'] = $ticket->getID(); $input['_auto_update'] = true; if ($slalevel->getRuleWithCriteriasAndActions($data['slalevels_id'], 1, 1) && $slt->getFromDB($ticket->fields[$sltField])) { $doit = true; if (count($slalevel->criterias)) { $doit = $slalevel->checkCriterias($ticket->fields); } // Process rules if ($doit) { $input = $slalevel->executeActions($input, array()); } } // Put next level in todo list $next = $slalevel->getNextSltLevel($ticket->fields[$sltField], $data['slalevels_id']); $slt->addLevelToDo($ticket, $next); // Action done : drop the line $slalevelticket->delete(array('id' => $data['id'])); $ticket->update($input); } else { // Drop line $slalevelticket->delete(array('id' => $data['id'])); } } } } else { // Drop line $slalevelticket->delete(array('id' => $data['id'])); } } else { // Drop line $slalevelticket->delete(array('id' => $data['id'])); } }