'VARCHAR(255) NULL', 'licencia' => 'VARCHAR(100) NULL', 'municipio' => "ENUM('TIAS', 'TEGUISE', 'YAIZA') NULL", 'ultima_localizacion_lat' => 'DECIMAL(10, 8) NULL', 'ultima_localizacion_lng' => 'DECIMAL(11, 8) NULL', 'id_departamento' => 'INT NULL' ]; foreach ($columns as $column => $type) { $stmt = $pdo->query("SHOW COLUMNS FROM taxis LIKE '$column'"); if ($stmt->rowCount() == 0) { $pdo->exec("ALTER TABLE taxis ADD COLUMN `$column` $type;"); } } // Add foreign key for id_departamento separately to avoid issues in loop $stmt = $pdo->query("SELECT 1 FROM information_schema.table_constraints WHERE constraint_schema = DATABASE() AND table_name = 'taxis' AND constraint_name = 'taxis_ibfk_1'"); if($stmt->rowCount() == 0) { $stmt = $pdo->query("SHOW COLUMNS FROM taxis LIKE 'id_departamento'"); if ($stmt->rowCount() > 0) { $pdo->exec("ALTER TABLE taxis ADD FOREIGN KEY (id_departamento) REFERENCES departamentos(id) ON DELETE SET NULL;"); } } // Handle POST requests if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['add_conductor'])) { $sql = "INSERT INTO taxis (nombre, licencia, matricula, municipio, id_departamento) VALUES (?, ?, ?, ?, ?)"; $pdo->prepare($sql)->execute([$_POST['nombre'], $_POST['licencia'], $_POST['matricula'], $_POST['municipio'], $_POST['id_departamento'] ?: null]); $message = 'Conductor añadido con éxito.'; } elseif (isset($_POST['edit_conductor'])) { $sql = "UPDATE taxis SET nombre=?, licencia=?, matricula=?, municipio=?, id_departamento=? WHERE id=?"; $pdo->prepare($sql)->execute([$_POST['nombre'], $_POST['licencia'], $_POST['matricula'], $_POST['municipio'], $_POST['id_departamento'] ?: null, $_POST['id']]); $message = 'Conductor actualizado con éxito.'; } elseif (isset($_POST['delete_conductor'])) { $sql = "DELETE FROM taxis WHERE id=?"; $pdo->prepare($sql)->execute([$_POST['id']]); $message = 'Conductor eliminado con éxito.'; } } // Fetch data for table $conductores = $pdo->query("SELECT t.id, t.nombre, t.licencia, t.matricula, t.municipio, t.ultima_localizacion_lat, t.ultima_localizacion_lng, (SELECT COUNT(*) FROM documents WHERE id_conductor = t.id) as num_documentos, (SELECT COUNT(*) FROM citas WHERE id_conductor = t.id) as num_citas, (SELECT COUNT(*) FROM consultas WHERE id_conductor = t.id) as num_consultas, (SELECT COUNT(*) FROM localizacion_historico WHERE id_taxi = t.id) as num_ubicaciones FROM taxis t GROUP BY t.id ORDER BY t.nombre ASC")->fetchAll(PDO::FETCH_ASSOC); $departamentos = $pdo->query("SELECT id, nombre FROM departamentos ORDER BY nombre")->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { $message = 'Error de base de datos: ' . $e->getMessage(); $message_type = 'danger'; } ?>