Tul xxx Tul
User / IP
:
216.73.217.33
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
emprendo.com.co
/
public_html
/
soy4
/
admin
/
models
/
Viewing: Cliente.php
<?php class Cliente { private const TABLE = 'gral_clientes'; private static function baseSelect(): string { return 'SELECT c.*, ' . 'owner.nombre_usuario AS usuario_nombre, ' . 'owner.email AS usuario_email, ' . 'owner.foto AS usuario_foto, ' . 'owner.rol AS usuario_rol, ' . 'owner.estado AS usuario_estado, ' . 'assigned.nombre_usuario AS asignado_nombre, ' . 'assigned.email AS asignado_email, ' . 'assigned.foto AS asignado_foto, ' . 'assigned.rol AS asignado_rol, ' . 'assigned.estado AS asignado_estado ' . 'FROM `' . self::TABLE . '` c ' . 'INNER JOIN `gral_usuarios` owner ON owner.id = c.usuario_id ' . 'LEFT JOIN `gral_usuarios` assigned ON assigned.id = c.usuario_asignado_id'; } public static function all(): array { $pdo = Database::connection(); $stmt = $pdo->query(self::baseSelect() . ' ORDER BY c.creado_en DESC'); $rows = $stmt->fetchAll() ?: []; return array_map([self::class, 'mapRow'], $rows); } public static function optionsForSelect(): array { return array_map(static function ($cliente) { return [ 'id' => $cliente['id'], 'nombre' => $cliente['nombre'], ]; }, self::all()); } public static function find(int $id): ?array { $pdo = Database::connection(); $stmt = $pdo->prepare(self::baseSelect() . ' WHERE c.id = :id LIMIT 1'); $stmt->execute(['id' => $id]); $row = $stmt->fetch(); return $row ? self::mapRow($row) : null; } public static function create(array $data): int { $pdo = Database::connection(); $columns = [ 'usuario_id', 'tipo_cliente', 'estado', 'usuario_asignado_id', 'razon_social', 'tipo_empresa', 'nit', 'digito_verificacion', 'primer_nombre', 'segundo_nombre', 'primer_apellido', 'segundo_apellido', 'tipo_documento', 'num_documento', 'cargo', 'representante_legal', 'actividad_economica_codigo', 'actividad_economica_detalle', 'telefono_fijo', 'telefono_movil', 'email', 'email_contacto', 'departamento', 'ciudad', 'direccion', 'contacto_nombre', 'contacto_telefono', 'num_empleados', 'observaciones', 'fecha_registro' ]; $placeholders = array_map(static fn($col) => ':' . $col, $columns); $sql = 'INSERT INTO `' . self::TABLE . '` (' . implode(', ', $columns) . ') VALUES (' . implode(', ', $placeholders) . ')'; $stmt = $pdo->prepare($sql); $stmt->execute(self::prepareParams($data)); return (int)$pdo->lastInsertId(); } public static function update(int $id, array $data): bool { $pdo = Database::connection(); $columns = [ 'tipo_cliente', 'estado', 'usuario_asignado_id', 'razon_social', 'tipo_empresa', 'nit', 'digito_verificacion', 'primer_nombre', 'segundo_nombre', 'primer_apellido', 'segundo_apellido', 'tipo_documento', 'num_documento', 'cargo', 'representante_legal', 'actividad_economica_codigo', 'actividad_economica_detalle', 'telefono_fijo', 'telefono_movil', 'email', 'email_contacto', 'departamento', 'ciudad', 'direccion', 'contacto_nombre', 'contacto_telefono', 'num_empleados', 'observaciones', 'fecha_registro' ]; $setParts = array_map(static fn($col) => $col . ' = :' . $col, $columns); $sql = 'UPDATE `' . self::TABLE . '` SET ' . implode(', ', $setParts) . ' WHERE id = :id'; $params = self::prepareParams($data); unset($params['usuario_id']); $params['id'] = $id; $stmt = $pdo->prepare($sql); return $stmt->execute($params); } public static function delete(int $id): bool { $pdo = Database::connection(); $stmt = $pdo->prepare('DELETE FROM `' . self::TABLE . '` WHERE id = :id'); return $stmt->execute(['id' => $id]); } public static function assignableUsers(?int $selectedId = null): array { $pdo = Database::connection(); $sql = 'SELECT id, nombre_usuario, email, foto, rol, estado ' . 'FROM `gral_usuarios` ' . 'WHERE rol <> :cliente OR id = :selected ' . 'ORDER BY nombre_usuario ASC'; $stmt = $pdo->prepare($sql); $stmt->execute([ 'cliente' => 'cliente', 'selected' => $selectedId ?? 0, ]); return $stmt->fetchAll() ?: []; } public static function pendingUsers(?int $selectedId = null): array { return array_map(static function ($user) { return [ 'id' => $user['id'], 'nombre_usuario' => $user['name'] ?? $user['nombre_usuario'] ?? '', 'email' => $user['email'] ?? '', 'foto' => $user['avatar'] ?? $user['foto'] ?? '', 'rol' => $user['role'] ?? 'cliente', 'estado' => $user['status'] ?? 'activo', 'cliente_id' => $user['cliente_id'] ?? null, ]; }, UserOnboardingService::pendingClients($selectedId)); } private static function prepareParams(array $data): array { $sanitize = static function ($value) { $value = is_string($value) ? trim($value) : $value; return $value === '' ? null : $value; }; $estado = strtolower((string)($data['estado'] ?? 'activo')); if (!in_array($estado, ['activo', 'inactivo', 'prospecto'], true)) { $estado = 'activo'; } $tipoCliente = $data['tipo_cliente'] ?? 'Empresa'; if (!in_array($tipoCliente, ['Empresa', 'Empleado', 'Independiente', 'Independiente empleador'], true)) { $tipoCliente = 'Empresa'; } return [ 'usuario_id' => (int)($data['usuario_id'] ?? 0), 'tipo_cliente' => $tipoCliente, 'estado' => $estado, 'usuario_asignado_id' => isset($data['usuario_asignado_id']) && $data['usuario_asignado_id'] !== '' ? (int)$data['usuario_asignado_id'] : null, 'razon_social' => $sanitize($data['razon_social'] ?? null), 'tipo_empresa' => $sanitize($data['tipo_empresa'] ?? null), 'nit' => $sanitize($data['nit'] ?? null), 'digito_verificacion' => $sanitize($data['digito_verificacion'] ?? null), 'primer_nombre' => $sanitize($data['primer_nombre'] ?? null), 'segundo_nombre' => $sanitize($data['segundo_nombre'] ?? null), 'primer_apellido' => $sanitize($data['primer_apellido'] ?? null), 'segundo_apellido' => $sanitize($data['segundo_apellido'] ?? null), 'tipo_documento' => $data['tipo_documento'] ?? 'CC', 'num_documento' => $sanitize($data['num_documento'] ?? null), 'cargo' => $sanitize($data['cargo'] ?? null), 'representante_legal' => $sanitize($data['representante_legal'] ?? null), 'actividad_economica_codigo' => $sanitize($data['actividad_economica_codigo'] ?? null), 'actividad_economica_detalle' => $sanitize($data['actividad_economica_detalle'] ?? null), 'telefono_fijo' => $sanitize($data['telefono_fijo'] ?? null), 'telefono_movil' => $sanitize($data['telefono_movil'] ?? null), 'email' => $sanitize($data['email'] ?? null), 'email_contacto' => $sanitize($data['email_contacto'] ?? null), 'departamento' => $sanitize($data['departamento'] ?? null), 'ciudad' => $sanitize($data['ciudad'] ?? null), 'direccion' => $sanitize($data['direccion'] ?? null), 'contacto_nombre' => $sanitize($data['contacto_nombre'] ?? null), 'contacto_telefono' => $sanitize($data['contacto_telefono'] ?? null), 'num_empleados' => isset($data['num_empleados']) && $data['num_empleados'] !== '' ? (int)$data['num_empleados'] : null, 'observaciones' => $sanitize($data['observaciones'] ?? null), 'fecha_registro' => $sanitize($data['fecha_registro'] ?? null), ]; } private static function mapRow(array $row): array { $tipoCliente = $row['tipo_cliente'] ?? 'Empresa'; $estado = strtolower($row['estado'] ?? 'activo'); $nombreEmpresa = trim((string)($row['razon_social'] ?? '')); $nombrePersona = trim(implode(' ', array_filter([ $row['primer_nombre'] ?? null, $row['segundo_nombre'] ?? null, $row['primer_apellido'] ?? null, $row['segundo_apellido'] ?? null, ], static fn($value) => $value !== null && $value !== ''))); $displayName = $nombreEmpresa !== '' ? $nombreEmpresa : ($nombrePersona !== '' ? $nombrePersona : 'Cliente sin nombre'); $documento = trim(sprintf( '%s %s%s', $row['tipo_documento'] ?? '', $row['num_documento'] ?? '', isset($row['digito_verificacion']) && $row['digito_verificacion'] !== null && $row['digito_verificacion'] !== '' ? '-' . $row['digito_verificacion'] : '' )); $actividadDetalle = $row['actividad_economica_detalle'] ?? ''; if ($actividadDetalle === '' && ($row['actividad_economica_codigo'] ?? '') !== '') { $actividadDetalle = $row['actividad_economica_codigo']; } $assigned = null; if (!empty($row['usuario_asignado_id'])) { $assigned = [ 'id' => (int)$row['usuario_asignado_id'], 'nombre' => $row['asignado_nombre'] ?? '', 'nombre_usuario' => $row['asignado_nombre'] ?? '', 'email' => $row['asignado_email'] ?? '', 'foto' => $row['asignado_foto'] ?? '', 'rol' => $row['asignado_rol'] ?? '', 'estado' => $row['asignado_estado'] ?? '', ]; } $owner = [ 'id' => (int)($row['usuario_id'] ?? 0), 'nombre' => $row['usuario_nombre'] ?? '', 'nombre_usuario' => $row['usuario_nombre'] ?? '', 'email' => $row['usuario_email'] ?? '', 'foto' => $row['usuario_foto'] ?? '', 'rol' => $row['usuario_rol'] ?? '', 'estado' => $row['usuario_estado'] ?? '', ]; return [ 'id' => (int)($row['id'] ?? 0), 'usuario_id' => (int)($row['usuario_id'] ?? 0), 'tipo_cliente' => $tipoCliente, 'estado' => $estado, 'usuario_asignado_id' => isset($row['usuario_asignado_id']) ? (int)$row['usuario_asignado_id'] : null, 'razon_social' => $row['razon_social'] ?? null, 'tipo_empresa' => $row['tipo_empresa'] ?? null, 'nit' => $row['nit'] ?? null, 'digito_verificacion' => $row['digito_verificacion'] ?? null, 'primer_nombre' => $row['primer_nombre'] ?? null, 'segundo_nombre' => $row['segundo_nombre'] ?? null, 'primer_apellido' => $row['primer_apellido'] ?? null, 'segundo_apellido' => $row['segundo_apellido'] ?? null, 'tipo_documento' => $row['tipo_documento'] ?? null, 'num_documento' => $row['num_documento'] ?? null, 'documento' => $documento, 'cargo' => $row['cargo'] ?? null, 'representante_legal' => $row['representante_legal'] ?? null, 'actividad_economica_codigo' => $row['actividad_economica_codigo'] ?? null, 'actividad_economica_detalle' => $actividadDetalle, 'telefono_fijo' => $row['telefono_fijo'] ?? null, 'telefono_movil' => $row['telefono_movil'] ?? null, 'email' => $row['email'] ?? null, 'email_contacto' => $row['email_contacto'] ?? null, 'departamento' => $row['departamento'] ?? null, 'ciudad' => $row['ciudad'] ?? null, 'direccion' => $row['direccion'] ?? null, 'contacto_nombre' => $row['contacto_nombre'] ?? null, 'contacto_telefono' => $row['contacto_telefono'] ?? null, 'num_empleados' => isset($row['num_empleados']) ? (int)$row['num_empleados'] : null, 'observaciones' => $row['observaciones'] ?? null, 'fecha_registro' => $row['fecha_registro'] ?? null, 'creado_en' => $row['creado_en'] ?? null, 'actualizado_en' => $row['actualizado_en'] ?? null, 'nombre' => $displayName, 'nombreEmpresa' => $nombreEmpresa, 'nombre_persona' => $nombrePersona, 'usuario' => $owner, 'assigned' => $assigned, 'assigned_name' => $assigned['nombre'] ?? null, 'assigned_email' => $assigned['email'] ?? null, ]; } public static function findByUsuarioId(int $usuarioId): ?array { $pdo = Database::connection(); $stmt = $pdo->prepare(self::baseSelect() . ' WHERE c.usuario_id = :usuario_id LIMIT 1'); $stmt->execute(['usuario_id' => $usuarioId]); $row = $stmt->fetch(); return $row ? self::mapRow($row) : null; } public static function deleteByUsuarioId(int $usuarioId): bool { $pdo = Database::connection(); $stmt = $pdo->prepare('DELETE FROM `' . self::TABLE . '` WHERE usuario_id = :usuario_id'); return $stmt->execute(['usuario_id' => $usuarioId]); } }
Coded With 💗 by
0x6ick