mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
trabajando en la lista de tickets
This commit is contained in:
@ -7,11 +7,10 @@ use App\Models\CategoriaModel;
|
||||
use App\Models\EstadoModel;
|
||||
use CodeIgniter\Controller;
|
||||
use App\Entities\Soporte\TicketEntity;
|
||||
use App\Models\Soporte\ticketFileModel;
|
||||
|
||||
class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
{
|
||||
|
||||
|
||||
protected static $primaryModelName = 'App\Models\Soporte\ticketModel';
|
||||
|
||||
protected static $singularObjectNameCc = 'ticket';
|
||||
@ -21,7 +20,7 @@ class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
|
||||
protected static $viewPath = 'themes/vuexy/form/soporte/';
|
||||
|
||||
protected $indexRoute = 'TicketIndex';
|
||||
protected $indexRoute = 'viewTicketList';
|
||||
|
||||
|
||||
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
|
||||
@ -44,7 +43,7 @@ class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
|
||||
$this->viewData['usingClientSideDataTable'] = true;
|
||||
|
||||
$this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tarifaextra.tarifaextra')]);
|
||||
$this->viewData['pageSubTitle'] = lang('Basic.global.ManageAllRecords', [lang('Tickets.tickets')]);
|
||||
parent::index();
|
||||
|
||||
}
|
||||
@ -53,14 +52,18 @@ class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
{
|
||||
|
||||
//checkPermission('tickets.create', $this->indexRoute);
|
||||
|
||||
|
||||
if ($this->request->getPost()) :
|
||||
|
||||
$nullIfEmpty = false; // !(phpversion() >= '8.1');
|
||||
|
||||
$postData = $this->request->getPost();
|
||||
$sanitizedData = $this->sanitized($postData, $nullIfEmpty);
|
||||
|
||||
// get user id
|
||||
$postData['usuario_id'] = auth()->user()->id;
|
||||
$postData['user_soporte_id'] = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('default_soporte_user_id')->value;
|
||||
|
||||
$sanitizedData = $this->sanitized($postData, $nullIfEmpty);
|
||||
|
||||
$noException = true;
|
||||
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) :
|
||||
@ -84,6 +87,34 @@ class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
|
||||
$id = $this->model->db->insertID();
|
||||
|
||||
$uploadPath = WRITEPATH . 'uploads/tickets/';
|
||||
|
||||
$fileModel = new ticketFileModel();
|
||||
$files = $this->request->getFiles();
|
||||
if ($files && isset($files['files'])) {
|
||||
foreach ($files['files'] as $file) {
|
||||
if ($file->isValid() && !$file->hasMoved()) {
|
||||
$originalName = $file->getClientName();
|
||||
$fileExt = $file->getExtension();
|
||||
|
||||
// Generar hash SHA-256 basado en el contenido del archivo
|
||||
$fileHash = hash_file("sha256", $file->getTempName());
|
||||
$newFileName = $fileHash . '.' . $fileExt;
|
||||
|
||||
// Mover el archivo con el nombre basado en el hash
|
||||
$file->move($uploadPath, $newFileName);
|
||||
|
||||
// Guardar en la base de datos
|
||||
$fileModel->insert([
|
||||
'nombre' => $originalName,
|
||||
'ticket_id' => $id,
|
||||
'hash' => $fileHash,
|
||||
'path' => 'uploads/' . $newFileName
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.';
|
||||
|
||||
if ($thenRedirect) :
|
||||
@ -190,4 +221,41 @@ class Ticketcontroller extends \App\Controllers\GoBaseController
|
||||
*/
|
||||
} // end function edit(...)
|
||||
|
||||
public function datatable()
|
||||
{
|
||||
if ($this->request->isAJAX()) {
|
||||
$reqData = $this->request->getPost();
|
||||
if (!isset($reqData['draw']) || !isset($reqData['columns'])) {
|
||||
$errstr = 'No data available in response to this specific request.';
|
||||
$response = $this->respond(Collection::datatable([], 0, 0, $errstr), 400, $errstr);
|
||||
return $response;
|
||||
}
|
||||
$start = $reqData['start'] ?? 0;
|
||||
$length = $reqData['length'] ?? 5;
|
||||
|
||||
$requestedOrder = $reqData['order'] ?? [];
|
||||
|
||||
$searchValues = get_filter_datatables_columns($reqData);
|
||||
|
||||
$resourceData = $this->model->getResource($searchValues, $cliente_id);
|
||||
foreach ($requestedOrder as $order) {
|
||||
$column = $order['column'] ?? 0;
|
||||
$dir = $order['dir'] ?? 'asc';
|
||||
$orderColumn = $this->model::SORTABLE[$column] ?? null;
|
||||
if ($orderColumn) {
|
||||
$resourceData->orderBy($orderColumn, $dir);
|
||||
}
|
||||
}
|
||||
$resourceData = $resourceData->limit($length, $start)->get()->getResultObject();
|
||||
|
||||
return $this->respond(Collection::datatable(
|
||||
$resourceData,
|
||||
$this->model->getResource($searchValues)->countAllResults(),
|
||||
$this->model->getResource($searchValues)->countAllResults()
|
||||
));
|
||||
} else {
|
||||
return $this->failUnauthorized('Invalid request', 403);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user