diff --git a/ci4/app/Controllers/Clientes/Cliente.php b/ci4/app/Controllers/Clientes/Cliente.php index ada1ef3a..cd427deb 100644 --- a/ci4/app/Controllers/Clientes/Cliente.php +++ b/ci4/app/Controllers/Clientes/Cliente.php @@ -47,6 +47,7 @@ class Cliente extends \App\Controllers\GoBaseResourceController // Se indica el flag para los ficheros borrados $this->delete_flag = 1; + $this->viewData = ['usingServerSideDataTable' => true]; // JJO // Breadcrumbs (IMN) $this->viewData['breadcrumb'] = [ @@ -136,7 +137,7 @@ class Cliente extends \App\Controllers\GoBaseResourceController $this->viewData['userList2'] = $this->getUserListItems2($clienteEntity->soporte_id ?? null); $this->viewData['formaDePagoList'] = $this->getFormaDePagoListItems($clienteEntity->forma_pago_id ?? null); - $this->viewData['formAction'] = route_to('createCliente'); + $this->viewData['formAction'] = site_url('cliente/add'); // route_to('createCliente'); IMN $this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('Clientes.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix'); diff --git a/ci4/app/Controllers/Clientes/Clientecontactos.php b/ci4/app/Controllers/Clientes/Clientecontactos.php index 68f2059e..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,26 +209,88 @@ 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'; - $resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + $id_C = $reqData['id_cliente'] ?? -1; + + $resourceData = $this->model->getResource("", $id_C)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); + + /*$resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject(); foreach ($resourceData as $item) : if (isset($item->apellidos) && strlen($item->apellidos) > 100) : $item->apellidos = character_limiter($item->apellidos, 100); endif; - endforeach; + endforeach;*/ return $this->respond(Collection::datatable( $resourceData, $this->model->getResource()->countAllResults(), - $this->model->getResource($search)->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 cafe07cc..5f4c6f68 100644 --- a/ci4/app/Models/Clientes/ClienteContactoModel.php +++ b/ci4/app/Models/Clientes/ClienteContactoModel.php @@ -1,4 +1,5 @@ "t1.id", - 2 => "t1.cliente_id", - 3 => "t1.cargo", - 4 => "t1.nombre", - 5 => "t1.apellidos", - 6 => "t1.telefono", - 7 => "t1.email", - 8 => "t2.nombre", + 0 => "t1.nombre", + 1 => "t1.apellidos", + 2 => "t1.cargo", + 3 => "t1.telefono", + 4 => "t1.email", ]; protected $allowedFields = ["cliente_id", "cargo", "nombre", "apellidos", "telefono", "email"]; @@ -105,34 +103,27 @@ class ClienteContactoModel extends \App\Models\GoBaseModel * * @return \CodeIgniter\Database\BaseBuilder */ - public function getResource(string $search = "") + public function getResource(string $search = "", $cliente_id = -1) { $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" ); + + $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 89497da9..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 @@ -15,6 +15,7 @@ Ficha de Cliente + +