diff --git a/ci4/app/Controllers/Clientes/Clientecontactos.php b/ci4/app/Controllers/Clientes/Clientecontactos.php index 2ae5cdef..3bc2f19a 100644 --- a/ci4/app/Controllers/Clientes/Clientecontactos.php +++ b/ci4/app/Controllers/Clientes/Clientecontactos.php @@ -10,6 +10,9 @@ use App\Entities\Clientes\ClienteContactoEntity; use App\Models\Clientes\ClienteModel; use App\Models\Clientes\ClienteContactoModel; +use DataTables\Editor; +use DataTables\Editor\Field; +use DataTables\Editor\Validate; class Clientecontactos extends \App\Controllers\GoBaseResourceController { @@ -206,7 +209,7 @@ class Clientecontactos extends \App\Controllers\GoBaseResourceController $length = $reqData['length'] ?? 5; $search = $reqData['search']['value']; $requestedOrder = $reqData['order']['0']['column'] ?? 1; - $order = ClienteContactoModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1]; + $order = ClienteContactoModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 1]; $dir = $reqData['order']['0']['dir'] ?? 'asc'; $id_C = $reqData['id_cliente'] ?? -1; @@ -223,13 +226,71 @@ class Clientecontactos extends \App\Controllers\GoBaseResourceController return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), - $this->model->getResource($search, $id_C)->countAllResults() + $this->model->getResource("", $id_C)->countAllResults() )); } else { return $this->failUnauthorized('Invalid request', 403); } } + public function datatable_editor() { + if ($this->request->isAJAX()) { + + include(APPPATH . "ThirdParty/DatatablesEditor/DataTables.php"); + + // Build our Editor instance and process the data coming from _POST + $response = Editor::inst( $db, 'cliente_contactos' ) + ->fields( + Field::inst( 'nombre' ) + ->validator( 'Validate::notEmpty',array( + 'message' => 'Falta nombre' ) + ), + Field::inst( 'apellidos' ) + ->validator( 'Validate::notEmpty',array( + 'message' => 'Falta apellidos' ) + ), + Field::inst( 'cargo' ) + ->validator( 'Validate::notEmpty',array( + 'message' => 'Falta cargp' ) + ), + Field::inst( 'telefono' ) + ->validator( 'Validate::notEmpty',array( + 'message' => 'Falta telefono' ) + ), + Field::inst( 'email' ) + ->validator( 'Validate::notEmpty',array( + 'message' => 'Falta email' ) + ), + + Field::inst( 'cliente_id' ), + + ) + ->validator( function($editor, $action, $data){ + if ($action === Editor::ACTION_CREATE || $action === Editor::ACTION_EDIT){ + /*foreach ($data['data'] as $pkey => $values ){ + // No se pueden duplicar valores al crear o al editar + if (!empty($response)){ + return $response; + } + }*/ + } + }) + ->debug(true) + ->process( $_POST ) + ->data(); + + $newTokenHash = csrf_hash(); + $csrfTokenName = csrf_token(); + + $response[$csrfTokenName] = $newTokenHash; + + echo json_encode($response); + + } else { + return $this->failUnauthorized('Invalid request', 403); + } + } + public function allItemsSelect() { if ($this->request->isAJAX()) { diff --git a/ci4/app/Models/Clientes/ClienteContactoModel.php b/ci4/app/Models/Clientes/ClienteContactoModel.php index 9ef38f39..5f4c6f68 100644 --- a/ci4/app/Models/Clientes/ClienteContactoModel.php +++ b/ci4/app/Models/Clientes/ClienteContactoModel.php @@ -14,12 +14,11 @@ class ClienteContactoModel extends \App\Models\GoBaseModel protected $useAutoIncrement = true; const SORTABLE = [ - 0 => "t1.cargo", - 1 => "t1.nombre", - 2 => "t1.apellidos", + 0 => "t1.nombre", + 1 => "t1.apellidos", + 2 => "t1.cargo", 3 => "t1.telefono", 4 => "t1.email", - 5 => "t2.nombre", ]; protected $allowedFields = ["cliente_id", "cargo", "nombre", "apellidos", "telefono", "email"]; @@ -109,36 +108,22 @@ class ClienteContactoModel extends \App\Models\GoBaseModel $builder = $this->db ->table($this->table . " t1") ->select( - "t1.id AS id, t1.cargo AS cargo, t1.nombre AS nombre, t1.apellidos AS apellidos, t1.telefono AS telefono, t1.email AS email, t2.nombre AS cliente_id" + "t1.id AS id, t1.cargo AS cargo, t1.nombre AS nombre, t1.apellidos AS apellidos, t1.telefono AS telefono, t1.email AS email, t1.cliente_id AS cliente_id" ); - // IMN - if ($cliente_id != -1) { - $builder->where('cliente_id', $cliente_id); - } + $builder->where('t1.cliente_id', $cliente_id); $builder->where("t1.is_deleted", 0); - $builder->join("clientes t2", "t1.cliente_id = t2.id", "left"); return empty($search) ? $builder : $builder ->groupStart() - ->like("t1.id", $search) - ->orLike("t1.cargo", $search) + ->like("t1.cargo", $search) ->orLike("t1.nombre", $search) ->orLike("t1.apellidos", $search) ->orLike("t1.telefono", $search) ->orLike("t1.email", $search) - ->orLike("t2.id", $search) - ->orLike("t1.id", $search) - ->orLike("t1.cliente_id", $search) - ->orLike("t1.cargo", $search) - ->orLike("t1.nombre", $search) - ->orLike("t1.apellidos", $search) - ->orLike("t1.telefono", $search) - ->orLike("t1.email", $search) - ->orLike("t2.nombre", $search) ->groupEnd(); } } diff --git a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php index 7d3c025b..346f4c91 100644 --- a/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/clientes/cliente/_clienteFormItems.php @@ -495,7 +495,7 @@