File "DashboardComputers.php"

Full Path: C:/wamp64/www/RegistroEquipos/backend/computador/DashboardComputers.php
File size: 3.49 KB
MIME-type: text/x-php
Charset: utf-8

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

$host = '192.200.100.40';
$db = 'sistemas';
$user = 'SANMARINO';
$pass = 'sanmarino2021*';
$charset = 'utf8mb4';

try {
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $pdo = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    ]);

    // --- 1. Contar entregados (siempre desde registroComputers)
    try {
        $stmt = $pdo->query("SELECT COUNT(*) as total FROM registroComputers WHERE estado = 'entregado'");
        $entregados = $stmt->fetch(PDO::FETCH_ASSOC);
    } catch (Exception $e) {
        // Si la tabla no existe o la columna es otra, registra el error
        error_log("Error en entregados: " . $e->getMessage());
        $entregados = ['total' => 0];
    }

    // --- 2. Intentar contar devueltos desde registrodevoluciones
    $devueltos = ['total' => 0];
    try {
        // Primero verificamos si la tabla existe
        $checkTable = $pdo->query("SHOW TABLES LIKE 'registrodevoluciones'");
        if ($checkTable->rowCount() > 0) {
            // Verificamos qué columnas tiene realmente
            $columns = $pdo->query("DESCRIBE registrodevoluciones")->fetchAll(PDO::FETCH_COLUMN);
            
            // Si existen 'tipo' y 'estado', usamos la consulta original
            if (in_array('tipo', $columns) && in_array('estado', $columns)) {
                $stmt = $pdo->query("SELECT COUNT(*) as total FROM registrodevoluciones WHERE tipo = 'Computer' AND estado = 'devuelto'");
                $devueltos = $stmt->fetch(PDO::FETCH_ASSOC);
            } else {
                // Si no, intentamos con nombres comunes alternativos
                $condiciones = [];
                if (in_array('tipo_equipo', $columns)) $condiciones[] = "tipo_equipo = 'Computer'";
                if (in_array('estado_devolucion', $columns)) $condiciones[] = "estado_devolucion = 'devuelto'";
                
                if (!empty($condiciones)) {
                    $sql = "SELECT COUNT(*) as total FROM registrodevoluciones WHERE " . implode(' AND ', $condiciones);
                    $stmt = $pdo->query($sql);
                    $devueltos = $stmt->fetch(PDO::FETCH_ASSOC);
                } else {
                    // No hay columnas que coincidan, asumimos 0
                    $devueltos = ['total' => 0];
                }
            }
        }
    } catch (Exception $e) {
        error_log("Error en devueltos (tabla devoluciones): " . $e->getMessage());
        // Si falla, dejamos $devueltos como 0 por ahora
    }

    // --- 3. Si aún no hay devueltos, consultar en registroComputers con estado 'devuelto'
    if (($devueltos['total'] ?? 0) == 0) {
        try {
            $stmt = $pdo->query("SELECT COUNT(*) as total FROM registroComputers WHERE estado = 'devuelto'");
            $devueltos = $stmt->fetch(PDO::FETCH_ASSOC);
        } catch (Exception $e) {
            error_log("Error en devueltos (registroComputers): " . $e->getMessage());
            $devueltos = ['total' => 0];
        }
    }

    $stats = [
        'entregados' => (int)($entregados['total'] ?? 0),
        'devueltos'  => (int)($devueltos['total'] ?? 0),
    ];

    echo json_encode([
        'status' => 'success',
        'data' => $stats
    ]);

} catch (PDOException $e) {
    echo json_encode([
        'status' => 'error',
        'mensaje' => 'Error de conexión: ' . $e->getMessage()
    ]);
}
?>