#include "tickets_model.h" #include #include TicketsModel::TicketsModel(QObject *parent, const QSqlDatabase &database) : BaseSqlTableModel(parent, database) {} void TicketsModel::initialize() { setTable("tickets"); setEditStrategy(QSqlTableModel::OnFieldChange); bool success = select(); if (!success) { qWarning() << "Error:" << lastError().text(); } } QVariant TicketsModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role == Qt::DisplayRole && orientation == Qt::Horizontal) { switch (section) { case TicketsColumns::Id: return tr("ID"); case TicketsColumns::SessionId: return tr("Session ID"); case TicketsColumns::SeatNumber: return tr("Seat Number"); case TicketsColumns::SoldAt: return tr("Sold At"); default: return QVariant(); } } return QSqlTableModel::headerData(section, orientation, role); } QString TicketsModel::createMultiColumnFilter(const QString &filter) const { QStringList conditions; // WARNING: Does not filter these models transmitted through the data method, // such as QDatetime using Columns = TicketsColumns; QStringList columns = {columnName(Columns::Id), columnName(Columns::SessionId), columnName(Columns::SeatNumber)}; #ifndef NO_DATE_TIME_SEARCH columns.append(columnName(Columns::SoldAt)); #endif for (const QString &column : columns) { conditions.append(QString("%1 LIKE '%%2%'").arg(column).arg(filter)); } return conditions.join(" OR "); }