#include "dbutils.h" #include #include #include DbUtils::DbUtils() { // Initialize database connection (example using a default connection) // We'll use a connection named "BudgetProUtils" m_db = QSqlDatabase::database(QStringLiteral("BudgetProUtils")); if (!m_db.isValid()) { m_db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), QStringLiteral("BudgetProUtils")); // Set the database name to the same as the enterprise list or a default? // For simplicity, we'll use the same as EnterpriseListDB from MApplication // But we don't have access to that here. Let's use a default path. // Alternatively, we can try to use the existing EnterpriseListDB connection. // Since we cannot access MApplication's private members, we'll create a separate connection. // However, note that the formBudget.cpp uses m_dbUtils.isConnected() and getLastDocumentId. // The getLastDocumentId function likely queries the current enterprise database. // We need to know which database is currently open. // Looking at mapplication.cpp, EnterpriseListDB is a static? Actually it's a member of MApplication. // We can't access it from here without a singleton or global. // Let's change approach: Instead of creating a new connection, we'll use the default connection // that is set by MApplication when an enterprise is opened. // But we don't have that context. // For now, we'll leave the database unconfigured and return false for isConnected. // This is a placeholder. m_db.setDatabaseName(QStringLiteral(":memory:")); // fallback to in-memory } } bool DbUtils::isConnected() { return m_db.isOpen(); } QString DbUtils::getLastDocumentId(const QString& docType) { if (!m_db.isOpen()) { return QStringLiteral("0"); } QSqlQuery query(m_db); query.prepare(QStringLiteral("SELECT MAX(ID) FROM ") + docType); if (!query.exec()) { qWarning() << "Failed to get last document id:" << query.lastError().text(); return QStringLiteral("0"); } if (query.next()) { return query.value(0).toString(); } return QStringLiteral("0"); }