Files
cinema-ticket-management-sy…/ui/models/tickets_model.cpp
T
2026-07-12 14:34:52 +04:00

60 lines
1.6 KiB
C++

#include "tickets_model.h"
#include <QSqlError>
#include <QSqlRecord>
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 ");
}