| Server IP : 162.214.74.102 / Your IP : 216.73.216.192 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/www/lrsys_apps/hexagon/application/plugins/module_helpdesk/assets/libs/ |
Upload File : |
<?php
/**
* Created by PhpStorm.
* User: juelis
* Date: 12/03/17
* Time: 20:25
*/
class Helper {
/** @var array $_L */
protected $_L;
/**
* Helper constructor.
* @param array|null $_L
*/
public function __construct($_L = null) {
$this->_L = $_L;
}
/**
* @param int $status
* @return string
*/
public function formatOSStatus($status) {
switch ($status) {
case 'Atendence':
return "<span class=\"badge badge-default\">{$this->_L['module_helpdesk status Atendence']}</span>";
case 'Closed':
return "<span class=\"badge badge-success\">{$this->_L['module_helpdesk status Closed']}</span>";
case 'Open':
return "<span class=\"badge badge-danger\">{$this->_L['module_helpdesk status Open']}</span>";
}
return '';
}
/**
* @param int $status
* @return string
*/
public function formatSlaValue($status, $value) {
switch ($status) {
case 'Atendence':
return "<span class=\"badge badge-default\">" . $value . "</span>";
case 'Closed':
return "<span class=\"badge badge-success\">" . $value . "</span>";
case 'Open':
return "<span class=\"badge badge-danger\">" . $value . "</span>";
}
return '';
}
/**
* @param string $date
* @return string
*/
public function transformDatePtToEn($date) {
$d = DateTime::createFromFormat('d/m/Y H:i:s', $date);
return $d->format('Y-m-d H:i:s');
}
/**
* @param string $date
* @return string
*/
public function transformDateEnToPt($date) {
$d = DateTime::createFromFormat('Y-m-d H:i:s', $date);
return $d->format('d/m/Y H:i:s');
}
/**
* @param string $date
* @return string
*/
public function transformSla($dateInit, $dateEnd = null) {
$sla = 0;
if ($dateEnd) {
$dateEndAux = new DateTime($dateEnd);
} else {
$dateEndAux = new DateTime();
}
// Pego somente horário comercial
$dateInitAux = new DateTime($dateInit);
$dateInitDiff = new DateTime($dateInitAux->format('Y-m-d'));
$diff = $dateEndAux->diff($dateInitDiff);
$dataAux = new DateTime($dateInit);
// Pego as Horas e Minutos
$hora_init = intval($dateInitAux->format('H'));
$min_init = intval($dateInitAux->format('i'));
$hora_end = intval($dateEndAux->format('H'));
$min_end = intval($dateEndAux->format('i'));
if ($diff->days == 0) {
if ($dataAux->format('D') != 'Sun' && $dataAux->format('D') != 'Sat') {
if ($hora_end >= 18) {
$hora_end = 18;
$min_end = 0;
}
//tratamento ANDRE task whats 22/06/2021
if ($hora_init >= 18) {
$hora_init = 18;
$min_init = 0;
}
if ($hora_init < 8) {
$hora_init = 8;
$min_init = 0;
}
//tratamento ANDRE task whats 22/06/2021
if ($hora_end < 8) {
$hora_end = 8;
$min_end = 0;
}
// Converto os horários em minutos
$min_end_total = $hora_end * 60 + $min_end;
$min_init_total = $hora_init * 60 + $min_init;
if ($hora_init < 12) {
if ($hora_end >= 12 && $hora_end < 14) {
$intervalo = $min_end_total - (12 * 60);
$sla = 12 * 60 - $min_init_total;
} elseif ($hora_end >= 14) {
$sla = $min_end_total - $min_init_total - 120;
} else {
$sla = $min_end_total - $min_init_total;
}
} elseif ($hora_init >= 12 && $hora_init < 14) {
$hora_init = 14;
$min_init = 0;
if ($hora_end < 14) {
$hora_end = 14;
$min_end = 0;
}
// Converto os horários em minutos
$min_end_total = $hora_end * 60 + $min_end;
$min_init_total = $hora_init * 60 + $min_init;
$sla = $min_end_total - $min_init_total;
} else {
$sla = $min_end_total - $min_init_total;
}
}
} else {
if ($dataAux->format('D') != 'Sun' && $dataAux->format('D') != 'Sat') {
$hora_end = 18;
$min_end = 0;
if ($hora_init <= 8) {
$hora_init = 8;
$min_init = 0;
}
//tratamento André
if ($hora_init >= 18) {
$hora_init = 18;
$min_init = 0;
}
// Converto os horários em minutos
$min_end_total = $hora_end * 60 + $min_end;
$min_init_total = $hora_init * 60 + $min_init;
if ($hora_init < 12) {
$sla = $min_end_total - $min_init_total - 120;
} elseif ($hora_init >= 12 && $hora_init < 14) {
$hora_init = 14;
$min_init = 0;
$min_init_total = $hora_init * 60 + $min_init;
$sla = $min_end_total - $min_init_total;
} else {
$sla = $min_end_total - $min_init_total;
}
}
$count_day = 0;
for ($i = 1; $i <= $diff->days; $i++) {
$count_day++;
$dataAux->add(new DateInterval('P1D'));
if ($count_day == $diff->days) {
if ($dataAux->format('D') != 'Sun' && $dataAux->format('D') != 'Sat') {
$hora_end = intval($dateEndAux->format('H'));
$min_end = intval($dateEndAux->format('i'));
if ($hora_end >= 8) {
if ($hora_end >= 18) {
$hora_end = 18;
$min_end = 0;
}
//tratamento André
if ($hora_end <= 8) {
$hora_end = 8;
$min_end = 0;
}
$hora_init = 8;
$min_init = 0;
// Converto os horários em minutos
$min_end_total = $hora_end * 60 + $min_end;
$min_init_total = $hora_init * 60 + $min_init;
if ($hora_end >= 12 && $hora_end < 14) {
$sla += 12 * 60 - $min_init_total;
} elseif ($hora_end >= 14) {
$sla += $min_end_total - $min_init_total - 120;
} else {
$sla += $min_end_total - $min_init_total;
}
}
}
} else {
if ($dataAux->format('D') != 'Sun' && $dataAux->format('D') != 'Sat') {
$sla += 8 * 60;
}
}
}
}
// $sla = $dateEnd - strtotime($dateInit);
// return number_format($sla/3600,0)."h"." ". number_format(($sla%3600)/60,0)."m";
return (number_format($sla / 60, 0)) . "h" . " " . ($sla % 60) . "m";
}
/**
* @param string $date
* @return string
*/
public function transformSlaInt($date, $dateEnd = null) {
if ($dateEnd) {
$dateEnd = strtotime($dateEnd);
} else {
$dateEnd = time();
}
$sla = $dateEnd - strtotime($date);
return number_format($sla / 3600, 0, ".", "");
}
public function transformSlaDecimal($date, $dateEnd = null) {
$sla = $this->transformSla($date, $dateEnd);
$time = explode(" ", $sla);
$retorno = intval(substr($time[0], 0, -1)) + intval(substr($time[1], 0, -1)) / 60;
return number_format($retorno, 2);
}
/**
* @param string $ticket_id
* @return string
*/
public function getRequester($ticket_id) {
$ticket = ORM::for_table('module_helpdesk_tickets')
->table_alias('t')
->select('t.*')
->select('r.fullname')
->join('sys_users', 't.requester_id = r.id', 'r')
->where('t.id', $ticket_id)
->find_one();
if ($ticket)
return $ticket->fullname;
else
return "";
}
/**
* @param string $ticket_id
* @return array
*/
public function getSerial($client_id) {
if ($client_id != null) {
$return = ORM::for_table('crm_customfields')
->table_alias('c')
->select('r.fvalue', 'serial')
->join('crm_customfieldsvalues', 'r.fieldid = c.id AND r.relid = ' . $client_id, 'r')
->where('c.fieldname', 'serial_numbers')
->find_one();
if (isset($return->serial)) {
$return = explode(',', $return->serial);
}
// var_dump($return);
return $return;
} else {
return null;
}
}
/**
* @return array
*/
public function getAllSerial() {
try {
$return2 = ORM::for_table('crm_customfields')
->table_alias('c')
->select_expr('r.fvalue as serial,r.relid as client_id')
->join('crm_customfieldsvalues', 'r.fieldid = c.id ', 'r')
->where('c.fieldname', 'serial_numbers')
->find_many();
$return = array();
foreach ($return2 as $c) {
if (isset($c->serial)) {
$serial = explode(',', $c->serial);
foreach ($serial as $s) {
$return[] = array("client_id" => $c->client_id, 'serial' => trim($s));
}
}
}
return $return;
} catch (Exception $e) {
return array();
}
}
public function getAccounts($type = null, $cost_center_id = null) {
$d = ORM::for_table('crm_accounts')
->table_alias('c')
->select('c.*');
if ($cost_center_id > 0) {
$d->where('cost_center_id', $cost_center_id);
}
if (!empty($type)) {
$d->join('crm_accounts_groups', array('c.id', '=', 'ag.crm_accounts_id'), 'ag')
->join('crm_groups', array('g.id', '=', 'ag.crm_group_id'), 'g')
->where('g.gname', $type);
}
$crms = $d->find_many();
$data = array();
foreach ($crms as $c) {
$data[] = array(
'id' => $c->id,
'name' => $c->account,
'text' => $c->account,
'cpf_cnpj' => $c->cpf_cnpj,
'account' => $c->account,
'company' => $c->company,
'kinf_of_person' => $c->kind_of_person,
'foreign_doc_identification' => $c->foreign_doc_identification,
);
}
return $data;
}
public function getProducts($category = null) {
$data = array();
$d = ORM::for_table('sys_items')
->table_alias('i')
->select('i.*')
->left_outer_join('sys_items_category', array('is.id', '=', 'i.category_id'), 'is')
->order_by_asc('i.description');
if ($category) {
$d->where('is.name', $category);
}
$prods = $d->find_many();
foreach ($prods as $p) {
$data[] = array(
'id' => $p->id,
'text' => $p->item_number . " | " . $p->description,
'price' => $p->sales_price
);
}
return $data;
}
/**
* @param string $value
* @return array
*/
public function getComponentes($value) {
$arr_value = explode('|', $value);
$item = trim(@$arr_value[0]) . ' | ' . trim(@$arr_value[1]);
$quantidade = isset($arr_value[2]) ? preg_replace('/QTD: /', '', trim($arr_value[2])) : '';
$problema = isset($arr_value[3]) ? preg_replace('/PROBLEMA: /', '', trim($arr_value[3])) : '';
$solucao = isset($arr_value[4]) ? preg_replace('/SOLUÇÃO: /', '', trim($arr_value[4])) : '';
$obs = isset($arr_value[5]) ? preg_replace('/OBS: /', '', trim($arr_value[5])) : '';
$return = array('item' => $item,
'quantidade' => $quantidade,
'problema' => $problema,
'solucao' => $solucao,
'obs' => $obs);
return $return;
}
/**
* @param string $value
* @return array
*/
public function getComponentesOrcamentos($value) {
$arr_value = explode('|', $value);
$item = trim($arr_value[0]) . ' | ' . trim($arr_value[1]);
$quantidade = isset($arr_value[2]) ? preg_replace('/QTD: /', '', trim($arr_value[2])) : '';
$valor = isset($arr_value[3]) ? preg_replace('/VALOR: /', '', trim($arr_value[3])) : '';
$obs = isset($arr_value[4]) ? preg_replace('/OBS: /', '', trim($arr_value[4])) : '';
$return = array('item' => $item,
'quantidade' => $quantidade,
'valor' => $valor,
'obs' => $obs);
return $return;
}
}