| Server IP : 162.214.74.102 / Your IP : 216.73.216.59 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/leve/application/plugins/module_helpdesk/models/ |
Upload File : |
<?php
include_once __DIR__ . "/../../../autoload/My_Model.php";
include_once __DIR__ . "/../factories/TicketFactory.php";
class TicketModel extends My_Model {
/**
* @var string
*/
public $table = 'module_helpdesk_tickets';
public function createTicket($data) {
$ticket = self::create();
TicketFactory::create($data, $ticket, true);
$ticket->save();
$this->saveUpdateProducts($ticket, $data);
$this->updateattach($data, $ticket->id);
if ($ticket->module_helpdesk_tickets_treatment_type_id == 3) {
$this->updateAttachTypeTreatment($data, $ticket->id);
}
$this->saveAttachOffline($data, $ticket->id);
$this->saveAttachTypeAtendenceOffline($data, $ticket->id);
return $ticket;
}
private function saveAttachOffline($data, $id) {
if (!empty($data['attachment_file_name'])) {
$attach = $data['attachment_file_name'];
$listfile = $data['attachment_file_data'];
for ($i = 0; $i < count($listfile); $i++) {
$dir = 'application/plugins/module_helpdesk/uploads/tickets';
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$base_to_php = explode(',', $listfile[$i]);
// the 2nd item in the base_to_php array contains the content of the image
$data = base64_decode($base_to_php[1]);
$ext = explode(".", $attach[$i]);
$file = uniqid() . '.' . $ext[count($ext) - 1];
file_put_contents($dir . '/' . $file, $data);
$d = ORM::for_table('module_helpdesk_tickets_attach')->create();
$d->src = $file;
$d->name = $attach[$i];
$d->module_helpdesk_tickets_id = $id;
$d->save();
}
}
}
private function saveAttachTypeAtendenceOffline($data, $id) {
if (!empty($data['attachment_type_attendence_file_name'])) {
$attach = $data['attachment_type_attendence_file_name'];
$listfile = $data['attachment_type_attendence_file_data'];
for ($i = 0; $i < count($listfile); $i++) {
$dir = 'application/plugins/module_helpdesk/uploads/tickets/type_atendence';
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$base_to_php = explode(',', $listfile[$i]);
// the 2nd item in the base_to_php array contains the content of the image
$data = base64_decode($base_to_php[1]);
$ext = explode(".", $attach[$i]);
$file = uniqid() . '.' . $ext[count($ext) - 1];
file_put_contents($dir . '/' . $file, $data);
$d = ORM::for_table('module_helpdesk_tickets_type_attachment')->create();
$d->src = $file;
$d->name = $attach[$i];
$d->module_helpdesk_tickets_id = $id;
$d->save();
}
}
}
private function saveUpdateProducts($ticket, $data) {
ORM::for_table('module_helpdesk_tickets_products')->where('module_helpdesk_tickets_id', $ticket->id)->delete_many();
if (!empty($data['product_id'])) {
foreach ($data['product_id'] as $p) {
if (intval($p) > 0) {
$d = ORM::for_table('module_helpdesk_tickets_products')->create();
$d->product_cat_id = $data['product_cat_id'];
$d->product_id = intval($p);
$d->module_helpdesk_tickets_id = $ticket->id;
$d->save();
}
}
}
}
public function getProducts($ticket) {
return ORM::for_table('module_helpdesk_tickets_products')
->table_alias('tp')
->select('s.*')
->select('tp.product_cat_id')
->join('sys_items', array('s.id', '=', 'tp.product_id'), 's')
->where('tp.module_helpdesk_tickets_id', $ticket->id)->find_many();
}
public function updateTicket($data, $ticket) {
ORM::for_table($this->table)->create($ticket);
TicketFactory::create($data, $ticket);
$ticket->save();
$this->saveUpdateProducts($ticket, $data);
return $ticket;
}
public function deleteTicket($ticket) {
ORM::for_table('module_helpdesk_tickets_products')->where('module_helpdesk_tickets_id', $ticket->id)->delete_many();
ORM::for_table($this->table)->create($ticket);
$ticket->deleted_at = date('Y-m-d H:i:s');
$ticket->save();
return $ticket;
}
public function updateAttach($data, $ticket) {
if (isset($data['attachment']) && !empty($data['attachment'])) {
$attachs = explode(',', $data['attachment']);
foreach ($attachs as $t) {
if (intval($t) > 0) {
$a = ORM::for_table('module_helpdesk_tickets_attach')->find_one($t);
$a->module_helpdesk_tickets_id = $ticket;
$a->save();
}
}
}
}
public function updateAttachTypeTreatment($data, $ticket) {
if (isset($data['attachment_type_atendence'])) {
$attachs = explode(',', $data['attachment_type_atendence']);
foreach ($attachs as $t) {
if (intval($t) > 0) {
$a = ORM::for_table('module_helpdesk_tickets_type_attachment')->find_one($t);
$a->module_helpdesk_tickets_id = $ticket;
$a->save();
}
}
}
}
public function saveFormData($data) {
try{
if (!empty($data)) {
$ticket_id = $data['ticket_id'];
$form_id = $data['form_id'];
if (isset($data['not_update'])) {
$notUpdate = $data['not_update'];
} else {
$notUpdate = array();
}
unset($data['ticket_id']);
unset($data['form_id']);
unset($data['not_update']);
$delete = ORM::for_table('module_helpdesk_form_data')->where('ticket_id', $ticket_id);
//não deixa remover registros não alterados no caso de edição
if (!empty($notUpdate)) {
$delete->where_not_in('id', $notUpdate);
}
$delete->delete_many();
header('Content-Type: application/json');
foreach ($data as $key => $value) {
if(empty($value)){
continue;
}
if (in_array(@$value[3], $notUpdate)) {
// TODO: VERIFICAR A NECESSIDADE DE DELETAR PARA DEPOIS REINSERIR
$r = ORM::for_table('module_helpdesk_form_data')->where('id', $value[3])->find_array();
$d = ORM::for_table('module_helpdesk_form_data')->create();
$d->ticket_id = $r[0]['ticket_id'];
$d->form_id = $r[0]['form_id'];
$d->question_id = $r[0]['question_id'];
$d->question_type = $r[0]['question_type'];
$d->field = $r[0]['field'];
$d->value = $r[0]['value'];
$d->save();
ORM::for_table('module_helpdesk_form_data')->where('id', $value[3])->delete_many();
continue; //esse não salva pois está marcado que não foi editado
}
$field_value = isset($value[5]) ? $value[5] : null;
$fieldName = $value[2];
if ($value[1] == 'module_helpdesk_add_more') {
continue;
} else if ($value[1] == 'module_helpdesk_singnature') {
if(!empty($value[5])){
$file_return = TicketController::addSingnature($ticket_id, $value[5], 'singnature');
if($file_return['success'] === true){
$field_value = $file_return['file'];
$fieldName = isset($value[6]) ? $value[6] : $value[2];
} else {
return $file_return['msg'];
}
} else {
return 'ERROR | ASSINATURA EM BRANCO NÃO É PERMITIDO';
}
} else if ($value[1] == 'file_upload') {
// if(isset($value[5])&& isset($_FILES[$value[5]])){
// $file_name = TicketController::add_attach_form($ticket_id, $value[5], 'attach');
// $field_value = $file_name;
// }else{
// $field_value='';
// }
if(!empty($value[5])){
$file_return = TicketController::addAttachBase64($ticket_id, $value[5], $value[6], 'attach');
if($file_return['success'] === true){
$field_value = $file_return['file'];
} else {
return $file_return['msg'];
}
} else {
return 'ERROR | ARQUIVO NÃO ANEXADO';
}
} else if ($value[1] == 'email') {
$emails = explode(';', $value[5]);
$msg = "Olá,<br>O Ticket nº " . $ticket_id . " acabou de receber o preenchimento de uma ficha. "
. "Para avaliar utilize o link abaixo: " . U . "module_helpdesk/ticket/view/" . $ticket_id . "/pdf.<br><br>"
. "####Este é um e-mail automático, por favor não responda.####";
// foreach ($emails as $email) {
// $email = trim($email);
// $name = explode('@', $email);
// Notify_Email::_send($name[0], $email, 'HELP DESK HEXAGON | TICKET: ' . $ticket_id . ' | NOVA FICHA', $msg);
// }
} else if ($value[1] == 'module_helpdesk_components') {
$field_value = $value[5] . ' | QTD: ' . @$value[6] . ' | PROBLEMA: ' . @$value[7] . ' | SOLUÇÃO: ' . @$value[8] . ' | OBS: ' . @$value[9];
} else if ($value[1] == 'module_helpdesk_orcamentos') {
$field_value = $value[5] . ' | QTD: ' . @$value[6] . ' | VALOR: ' . @$value[7] . ' | OBS: ' . @$value[8];
} else if ($value[1] == 'checkbox') {
$count_itens = (count($value) - 5) / 2;
// var_dump($count_itens);exit;
for ($i = 0; $i < $count_itens; $i++) {
$field_index = 4 + (2 * $i) + 1;
$value_index = $field_index + 1;
$d = ORM::for_table('module_helpdesk_form_data')->create();
$d->ticket_id = $ticket_id;
$d->form_id = $form_id;
$d->question_id = $value[0];
$d->question_type = $value[1];
$d->field = $value[2] . " | " . $value[$field_index];
$d->value = $value[$value_index];
$d->save();
}
continue;
} else if ($value[1] == 'multiple_choice') {
$temp = $value;
unset($temp[0]);
unset($temp[1]);
unset($temp[2]);
unset($temp[3]);
unset($temp[4]);
if (is_array($temp)) {
$field_value = implode("|", $temp);
} else {
$field_value = '';
}
} else if ($value['1'] == 'module_helpdesk_ticket_number') {
//regra para setar o numero do ticket, que não tem quando vem offline
$field_value = $ticket_id;
}
// Insiro os dados
try {
$d = ORM::for_table('module_helpdesk_form_data')->create();
$d->ticket_id = $ticket_id;
$d->form_id = $form_id;
$d->question_id = $value[0];
$d->question_type = $value[1];
$d->field = $fieldName;
$d->value = $field_value;
$d->save();
} catch (Exception $e) {
return "Exceção capturada: COD: 290 | " . $e->getMessage();
// TODO: VERIFICAR SE NÃO DEVE RETORNO FALSE E APAGAR TODAS AS ENTRADAS PARA ESSE TICKET
}
}
return true;
} else {
return "ERROR | COD: 296 | FORMULÁRIO ENVIADO É VAZIO";
}
} catch (Exception $e) {
return "Exceção capturada: " . $e->getMessage();
}
}
}