trabajando en la lista de tickets

This commit is contained in:
2025-02-15 17:54:49 +01:00
parent a616ec7ba7
commit 4a8aaf906c
15 changed files with 473 additions and 64 deletions

View File

@ -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);
}
}
}