diff --git a/ci4/app/Config/Auth.php b/ci4/app/Config/Auth.php index ef4171f9..f111d63a 100644 --- a/ci4/app/Config/Auth.php +++ b/ci4/app/Config/Auth.php @@ -13,7 +13,7 @@ declare(strict_types=1); namespace Config; -use App\Models\UserModel; +use App\Models\Usuarios\UserModel; use CodeIgniter\Shield\Authentication\Authenticators\JWT; use CodeIgniter\Shield\Authentication\Passwords\ValidationRules; use CodeIgniter\Shield\Config\Auth as ShieldAuth; diff --git a/ci4/app/Controllers/Clientes/Cliente.php b/ci4/app/Controllers/Clientes/Cliente.php index 970118d9..23a7d20f 100755 --- a/ci4/app/Controllers/Clientes/Cliente.php +++ b/ci4/app/Controllers/Clientes/Cliente.php @@ -384,7 +384,7 @@ class Cliente extends \App\Controllers\BaseResourceController { $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; if (!is_null($selId)) : - $userModel = model('App\Models\UserModel'); + $userModel = model('App\Models\Usuarios\UserModel'); $selOption = $userModel->where('id', $selId)->findColumn('first_name'); if (!empty($selOption)) : @@ -414,7 +414,7 @@ class Cliente extends \App\Controllers\BaseResourceController { $data = ['' => lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Users.user'))])]; if (!is_null($selId)) : - $userModel = model('App\Models\UserModel'); + $userModel = model('App\Models\Usuarios\UserModel'); $selOption = $userModel->where('id', $selId)->findColumn('last_name'); if (!empty($selOption)) : diff --git a/ci4/app/Controllers/Configuracion/Users.php b/ci4/app/Controllers/Configuracion/Users.php index 24e57306..b34c3b89 100755 --- a/ci4/app/Controllers/Configuracion/Users.php +++ b/ci4/app/Controllers/Configuracion/Users.php @@ -5,7 +5,7 @@ use App\Models\Chat\ChatDeparmentModel; use App\Models\Chat\ChatDeparmentUserModel; use App\Models\Usuarios\GroupModel; -use App\Models\UserModel; +use App\Models\Usuarios\UserModel; use App\Models\Usuarios\GroupsUsersModel; use App\Models\Collection; diff --git a/ci4/app/Controllers/Facturacion/Facturas.php b/ci4/app/Controllers/Facturacion/Facturas.php index 3d914183..22c4985c 100755 --- a/ci4/app/Controllers/Facturacion/Facturas.php +++ b/ci4/app/Controllers/Facturacion/Facturas.php @@ -220,7 +220,7 @@ class Facturas extends \App\Controllers\BaseResourceController ['title' => lang("Facturas.facturaList"), 'route' => route_to('facturasList'), 'active' => true] ]; - $userModel = model('App\Models\UserModel'); + $userModel = model('App\Models\Usuarios\UserModel'); $factura->created_by = $userModel->getFullName($factura->user_created_id); $factura->updated_by = $userModel->getFullName($factura->user_updated_id); $factura->created_at_footer = $factura->created_at ? date(' H:i d/m/Y', strtotime($factura->created_at)) : ''; diff --git a/ci4/app/Controllers/Pedidos/Pedido.php b/ci4/app/Controllers/Pedidos/Pedido.php index bf4ddc9d..6e28240e 100755 --- a/ci4/app/Controllers/Pedidos/Pedido.php +++ b/ci4/app/Controllers/Pedidos/Pedido.php @@ -583,7 +583,7 @@ class Pedido extends \App\Controllers\BaseResourceController $pedidoEntity->fecha_encuadernado_text = $pedidoEntity->fecha_encuadernado ? date('d/m/Y', strtotime($pedidoEntity->fecha_encuadernado)) : ''; $pedidoEntity->fecha_entrega_externo_text = $pedidoEntity->fecha_entrega_externo ? date('d/m/Y', strtotime($pedidoEntity->fecha_entrega_externo)) : ''; - $userModel = model('App\Models\UserModel'); + $userModel = model('App\Models\Usuarios\UserModel'); $pedidoEntity->created_by = $userModel->getFullName($pedidoEntity->user_created_id); $pedidoEntity->updated_by = $userModel->getFullName($pedidoEntity->user_updated_id); $pedidoEntity->created_at_footer = $pedidoEntity->created_at ? date(' H:i d/m/Y', strtotime($pedidoEntity->created_at)) : ''; diff --git a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php index 47883116..d6973597 100644 --- a/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php +++ b/ci4/app/Controllers/Presupuestos/Presupuestoadmin.php @@ -635,8 +635,8 @@ class Presupuestoadmin extends \App\Controllers\BaseResourceController $data['resumen']['iva_reducido'] = $presupuesto->iva_reducido; - $data['created_by'] = model('App\Models\UserModel')->getFullName($presupuesto->user_created_id); - $data['updated_by'] = model('App\Models\UserModel')->getFullName($presupuesto->user_update_id); + $data['created_by'] = model('App\Models\Usuarios\UserModel')->getFullName($presupuesto->user_created_id); + $data['updated_by'] = model('App\Models\Usuarios\UserModel')->getFullName($presupuesto->user_update_id); $data['created_at'] = date(' H:i d/m/Y', strtotime($presupuesto->created_at)); $data['updated_at'] = date(' H:i d/m/Y', strtotime($presupuesto->updated_at)); diff --git a/ci4/app/Controllers/Profile.php b/ci4/app/Controllers/Profile.php index 67449c84..82fbb5e6 100755 --- a/ci4/app/Controllers/Profile.php +++ b/ci4/app/Controllers/Profile.php @@ -3,7 +3,7 @@ namespace App\Controllers; -use App\Models\UserModel; +use App\Models\Usuarios\UserModel; class Profile extends BaseController { diff --git a/ci4/app/Controllers/Soporte/Ticketcontroller.php b/ci4/app/Controllers/Soporte/Ticketcontroller.php index 51ed1a70..d760d8c7 100644 --- a/ci4/app/Controllers/Soporte/Ticketcontroller.php +++ b/ci4/app/Controllers/Soporte/Ticketcontroller.php @@ -109,7 +109,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController $message = lang('Basic.global.saveSuccess', [lang('Basic.global.record')]) . '.'; - $userModel = new \App\Models\UserModel(); + $userModel = new \App\Models\Usuarios\UserModel(); $this->sendMail(lang('Tickets.newTicket'), lang('Tickets.newTicketBody') . base_url(route_to('editTicket', $id)), $userModel->find($sanitizedData['user_soporte_id'])->email); @@ -195,7 +195,7 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController } // envio de correos - $userModel = new \App\Models\UserModel(); + $userModel = new \App\Models\Usuarios\UserModel(); if ($oldUserSupport != $sanitizedData['user_soporte_id']) { $this->sendMail(lang('Tickets.asgignToChanged'), lang('Tickets.asgignToChangedBody') . base_url(route_to('editTicket', $id)), $userModel->find($sanitizedData['user_soporte_id'])->email); } @@ -379,15 +379,15 @@ class Ticketcontroller extends \App\Controllers\BaseResourceController $supportUsers = array( array( 'id' => $defatulSoporteUserId, - 'name' => model('App\Models\UserModel')->getFullName($defatulSoporteUserId) + 'name' => model('App\Models\Usuarios\UserModel')->getFullName($defatulSoporteUserId) ), array( 'id' => 2, - 'name' => model('App\Models\UserModel')->getFullName(2) + 'name' => model('App\Models\Usuarios\UserModel')->getFullName(2) ), array( 'id' => 1, - 'name' => model('App\Models\UserModel')->getFullName(1) + 'name' => model('App\Models\Usuarios\UserModel')->getFullName(1) ), ); diff --git a/ci4/app/Models/UserModel.php b/ci4/app/Models/UserModel.php deleted file mode 100644 index 919f23df..00000000 --- a/ci4/app/Models/UserModel.php +++ /dev/null @@ -1,152 +0,0 @@ -allowedFields = [ - ...$this->allowedFields, - 'first_name', // Añadido - 'last_name', // Añadido - 'cliente_id', // Añadido - 'comments', // Añadido - ]; - } - - const SORTABLE = [ - 0 => "t1.id", - 1 => "t1.first_name", - 2 => "t1.last_name", - 3 => "t2.secret", - 4 => "t3.nombre", - 5 => "t1.last_active", - ]; - - protected $returnType = UserEntity::class; - - protected $useSoftDeletes = true; - protected $useTimestamps = true; - protected $createdField = 'created_at'; - protected $updatedField = 'updated_at'; - protected $deletedField = 'deleted_at'; - - protected $validationRules = [ - "first_name" => "required|trim|max_length[150]", - "last_name" => "required|trim|max_length[150]", - "email" => "required|valid_email|max_length[150]", - 'new_pwd' => 'permit_empty|min_length[8]', - 'new_pwd_confirm' => 'permit_empty|required_with[new_pwd]|matches[new_pwd]', - "comments" => "permit_empty|trim|max_length[512]" - ]; - - protected $validationMessages = [ - 'first_name' => [ - "max_length" => "Users.validation.first_name.max_length", - "required" => "Users.validation.first_name.required" - ], - 'last_name' => [ - "max_length" => "Users.validation.last_name.max_length", - "required" => "Users.validation.last_name.required" - ], - 'new_pwd' => [ - 'min_length' => "App.profile_rules_password_m" - ], - 'new_pwd_confirm' => [ - 'matches' => "App.profile_rules_password_confirm_m" - ], - 'comments' => [ - "max_length" => "Users.validation.last_name.max_length", - ], - 'email' => [ - "required" => "Users.validation.email.required", - "valid_email" => "Users.validation.email.valid_email", - "max_length" => "Users.validation.email.max_length" - ] - - ]; - - public function getResource($search = []) - { - $builder = $this->db - ->table($this->table . " t1") - ->select( - "t1.id as id, t1.first_name AS first_name, t1.last_name AS last_name, - t2.secret AS email, t1.last_active AS last_active, t3.nombre AS cliente" - ); - - $builder->join("auth_identities t2", "t1.id = t2.user_id", "left"); - $builder->join("clientes t3", "t1.cliente_id = t3.id", "left"); - - $builder->where('t1.deleted_at', null)->groupBy("t1.id"); - - if (empty($search)) - return $builder; - else { - $builder->groupStart(); - foreach ($search as $col_search) { - $column = self::SORTABLE[$col_search[0]]; - $value = $col_search[2]; - $builder->where("LOWER(CONVERT($column USING utf8)) COLLATE utf8_general_ci LIKE", "%" . strtolower($value) . "%"); - } - $builder->groupEnd(); - return $builder; - } - } - - public function getComerciales() - { - - $builder = $this->db - ->table("users" . " t1") - ->select( - "t1.id AS id, CONCAT(t1.first_name, ' ', t1.last_name) AS name" - ); - - $builder->where('t1.deleted_at', null); - $builder->where("t2.group", "comercial"); - $builder->join("auth_groups_users t2", "t1.id = t2.user_id", "left"); - - return $builder->get()->getResult(); - - } - - public function getFullName($id=0){ - $builder = $this->db - ->table("users" . " t1") - ->select( - "CONCAT(t1.first_name, ' ', t1.last_name) AS name" - ); - - $builder->where('t1.deleted_at', null); - $builder->where('t1.id', $id); - - return $builder->get()->getRow()->name; - } - - // Método para comprobar si el email ya está registrado - public function isEmailUnique($email) - { - $builder = $this->db - ->table("auth_identities t1") // La tabla correcta - ->select("t1.secret AS email") - ->where('secret', $email); - - // Obtener resultados - $result = $builder->get()->getRow(); - - // Devuelve true si no se encuentra el correo (es único), false en caso contrario - return $result === null; - } - -} diff --git a/ci4/app/Models/Usuarios/UserModel.php b/ci4/app/Models/Usuarios/UserModel.php index d4e2d993..1906b9ca 100755 --- a/ci4/app/Models/Usuarios/UserModel.php +++ b/ci4/app/Models/Usuarios/UserModel.php @@ -1,64 +1,160 @@ allowedFields = [ + ...$this->allowedFields, + 'first_name', // Añadido + 'last_name', // Añadido + 'cliente_id', // Añadido + 'comments', // Añadido + ]; + } + + const SORTABLE = [ + 0 => "t1.id", + 1 => "t1.first_name", + 2 => "t1.last_name", + 3 => "t2.secret", + 4 => "t3.nombre", + 5 => "t1.last_active", + ]; + + protected $returnType = UserEntity::class; + + protected $useSoftDeletes = true; + protected $useTimestamps = true; + protected $createdField = 'created_at'; + protected $updatedField = 'updated_at'; + protected $deletedField = 'deleted_at'; + protected $validationRules = [ "first_name" => [ "label" => "Users.firstName", - "rules" => "trim|max_length[150]", - ], + "rules" => "required|trim|max_length[150]", + ], "last_name" => [ "label" => "Users.lastName", - "rules" => "trim|max_length[150]", - ], + "rules" => "required|trim|max_length[150]", + ], + 'new_pwd' => 'permit_empty|min_length[8]', + 'new_pwd_confirm' => 'permit_empty|required_with[new_pwd]|matches[new_pwd]', + "comments" => "permit_empty|trim|max_length[512]" ]; protected $validationMessages = [ - "first_name" => [ + 'first_name' => [ "max_length" => "Users.validation.first_name.max_length", - "required" => "Users.validation.first_name.required", + "required" => "Users.validation.first_name.required" ], - "last_name" => [ + 'last_name' => [ "max_length" => "Users.validation.last_name.max_length", - "required" => "Users.validation.last_name.required", - ], + "required" => "Users.validation.last_name.required" + ], + 'new_pwd' => [ + 'min_length' => "App.profile_rules_password_m" + ], + 'new_pwd_confirm' => [ + 'matches' => "App.profile_rules_password_confirm_m" + ], + 'comments' => [ + "max_length" => "Users.validation.last_name.max_length", + ], + 'email' => [ + "required" => "Users.validation.email.required", + "valid_email" => "Users.validation.email.valid_email", + "max_length" => "Users.validation.email.max_length" + ] + ]; + public function getResource($search = []) + { + $builder = $this->db + ->table($this->table . " t1") + ->select( + "t1.id as id, t1.first_name AS first_name, t1.last_name AS last_name, + t2.secret AS email, t1.last_active AS last_active, t3.nombre AS cliente" + ); + + $builder->join("auth_identities t2", "t1.id = t2.user_id", "left"); + $builder->join("clientes t3", "t1.cliente_id = t3.id", "left"); + + $builder->where('t1.deleted_at', null)->groupBy("t1.id"); + + if (empty($search)) + return $builder; + else { + $builder->groupStart(); + foreach ($search as $col_search) { + $column = self::SORTABLE[$col_search[0]]; + $value = $col_search[2]; + $builder->where("LOWER(CONVERT($column USING utf8)) COLLATE utf8_general_ci LIKE", "%" . strtolower($value) . "%"); + } + $builder->groupEnd(); + return $builder; + } + } + + public function getComerciales() + { + + $builder = $this->db + ->table("users" . " t1") + ->select( + "t1.id AS id, CONCAT(t1.first_name, ' ', t1.last_name) AS name" + ); + + $builder->where('t1.deleted_at', null); + $builder->where("t2.group", "comercial"); + $builder->join("auth_groups_users t2", "t1.id = t2.user_id", "left"); + + return $builder->get()->getResult(); + + } + + public function getFullName($id=0){ + $builder = $this->db + ->table("users" . " t1") + ->select( + "CONCAT(t1.first_name, ' ', t1.last_name) AS name" + ); + + $builder->where('t1.deleted_at', null); + $builder->where('t1.id', $id); + + return $builder->get()->getRow()->name; + } + + // Método para comprobar si el email ya está registrado + public function isEmailUnique($email) + { + $builder = $this->db + ->table("auth_identities t1") // La tabla correcta + ->select("t1.secret AS email") + ->where('secret', $email); + + // Obtener resultados + $result = $builder->get()->getRow(); + + // Devuelve true si no se encuentra el correo (es único), false en caso contrario + return $result === null; + } + public function getGroupsTitles($user_token){ $sql = 'SELECT `auth_groups`.`title` FROM `auth_groups` @@ -78,4 +174,5 @@ class UserModel extends \App\Models\BaseModel } + }