Tul xxx Tul
User / IP
:
216.73.216.217
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
/
aircan.me
/
public_html
/
piscina
/
app
/
models
/
Viewing: Cliente.php
<?php namespace App\Models; use App\Models\Membresia; require_once dirname(__DIR__, 2) . '/config/database.php'; use mysqli; class Cliente { public static function all(): array { $conn = self::connection(); $resultado = $conn->query('SELECT id, nombre, apellido, cedula, telefono, membresia, descuento, creado_en FROM clientes ORDER BY creado_en DESC'); return $resultado ? $resultado->fetch_all(MYSQLI_ASSOC) : []; } public static function find(int $id): ?array { $conn = self::connection(); $sql = 'SELECT id, nombre, apellido, cedula, telefono, membresia, descuento, creado_en FROM clientes WHERE id = ? LIMIT 1'; $stmt = $conn->prepare($sql); $stmt->bind_param('i', $id); $stmt->execute(); $resultado = $stmt->get_result()->fetch_assoc(); return $resultado ?: null; } public static function create(array $data): void { $conn = self::connection(); $sql = 'INSERT INTO clientes (nombre, apellido, cedula, telefono, membresia, descuento) VALUES (?, ?, ?, ?, ?, ?)'; $stmt = $conn->prepare($sql); $descuento = self::membresiaDescuentoValor($data['membresia']); $stmt->bind_param('sssssd', $data['nombre'], $data['apellido'], $data['cedula'], $data['telefono'], $data['membresia'], $descuento); $stmt->execute(); } public static function update(int $id, array $data): bool { $conn = self::connection(); $sql = 'UPDATE clientes SET nombre = ?, apellido = ?, cedula = ?, telefono = ?, membresia = ?, descuento = ? WHERE id = ?'; $stmt = $conn->prepare($sql); $descuento = self::membresiaDescuentoValor($data['membresia']); $stmt->bind_param('sssssdi', $data['nombre'], $data['apellido'], $data['cedula'], $data['telefono'], $data['membresia'], $descuento, $id); return $stmt->execute(); } public static function delete(int $id): bool { $conn = self::connection(); $sql = 'DELETE FROM clientes WHERE id = ?'; $stmt = $conn->prepare($sql); $stmt->bind_param('i', $id); return $stmt->execute(); } public static function search(?string $termino): array { $conn = self::connection(); if ($termino === null || trim($termino) === '') { return self::all(); } $termino = '%' . trim($termino) . '%'; $sql = 'SELECT id, nombre, apellido, cedula, telefono, membresia, descuento, creado_en FROM clientes WHERE nombre LIKE ? OR apellido LIKE ? OR cedula LIKE ? OR telefono LIKE ? ORDER BY creado_en DESC'; $stmt = $conn->prepare($sql); $stmt->bind_param('ssss', $termino, $termino, $termino, $termino); $stmt->execute(); $resultado = $stmt->get_result(); return $resultado ? $resultado->fetch_all(MYSQLI_ASSOC) : []; } public static function historial(int $id): array { $conn = self::connection(); $sql = 'SELECT id, fecha, concepto, monto FROM clientes_historial WHERE cliente_id = ? ORDER BY fecha DESC, id DESC'; $stmt = $conn->prepare($sql); $stmt->bind_param('i', $id); $stmt->execute(); $resultado = $stmt->get_result(); return $resultado ? $resultado->fetch_all(MYSQLI_ASSOC) : []; } public static function stats(): array { $conn = self::connection(); $total = self::obtenerValor($conn, 'SELECT COUNT(*) AS total FROM clientes'); $vip = self::obtenerValor($conn, "SELECT COUNT(*) AS total FROM clientes WHERE membresia = 'VIP'"); $visitas = self::obtenerValor($conn, "SELECT COUNT(*) AS total FROM clientes_historial WHERE fecha = CURDATE()"); return [ 'total' => $total, 'vip' => $vip, 'visitas_hoy' => $visitas, ]; } public static function membresiaDescuento(?string $membresia): ?array { $membresia = trim((string) $membresia); if ($membresia === '' || strcasecmp($membresia, 'Ninguna') === 0) { return null; } $registro = Membresia::findByNombre($membresia); if (!$registro) { return null; } $porcentaje = (float) ($registro['descuento'] ?? 0); return [ 'label' => sprintf('%.0f%% descuento', $porcentaje * 100), 'valor' => $porcentaje, ]; } public static function membresiasDisponibles(): array { return Membresia::options(); } public static function agregarHistorial(int $id, array $entrada): bool { $conn = self::connection(); $sql = 'INSERT INTO clientes_historial (cliente_id, fecha, concepto, monto) VALUES (?, ?, ?, ?)'; $stmt = $conn->prepare($sql); $fecha = $entrada['fecha'] ?? date('Y-m-d'); $concepto = $entrada['concepto'] ?? 'Servicio'; $monto = isset($entrada['monto']) ? (float) $entrada['monto'] : 0.0; $stmt->bind_param('issd', $id, $fecha, $concepto, $monto); return $stmt->execute(); } public static function eliminarHistorial(int $id, int $indice): bool { $conn = self::connection(); $sql = 'DELETE FROM clientes_historial WHERE cliente_id = ? AND id = ?'; $stmt = $conn->prepare($sql); $stmt->bind_param('ii', $id, $indice); return $stmt->execute(); } public static function totalHistorial(int $id): float { $conn = self::connection(); $sql = 'SELECT COALESCE(SUM(monto), 0) AS total FROM clientes_historial WHERE cliente_id = ?'; $stmt = $conn->prepare($sql); $stmt->bind_param('i', $id); $stmt->execute(); $resultado = $stmt->get_result()->fetch_assoc(); return (float) ($resultado['total'] ?? 0); } private static function membresiaDescuentoValor(?string $membresia): float { $datos = self::membresiaDescuento($membresia); return $datos['valor'] ?? 0.0; } private static function connection(): mysqli { static $conn = null; if ($conn instanceof mysqli) { return $conn; } $db = new \Database(); $conn = $db->getConnection(); return $conn; } private static function obtenerValor(mysqli $conn, string $sql): int { $resultado = $conn->query($sql); if (!$resultado) { return 0; } $fila = $resultado->fetch_assoc(); return (int) ($fila['total'] ?? 0); } }
Coded With 💗 by
0x6ick