3 // 'event' record is splitted into two separate tables 'event' and 'virtual_event'
4 // for the FTS (Full-Text-Search) support and so, it is necessary to provide/use
5 // two table names + corresponding parameters/methods, see bellow
6 QString const Event::sTable1Name = QString("event");
7 QString const Event::sTable2Name = QString("virtual_event");
8 int const Event::sTable1ColCount = 9; // see 'toRecord()' for more details
9 int const Event::sTable2ColCount = 5; // see 'toRecord()' for more details
10 const QString Event::XID_ACTIVITY = "xid_activity";
11 const QString Event::START = "start";
15 QSqlRecord const Event::sColumns = Event::toRecord(QList<QSqlField>()
16 /* 'columns from Table 1 */
17 << QSqlField("id", QVariant::Int)
18 << QSqlField("xid_conference", QVariant::Int)
19 << QSqlField("start", QVariant::DateTime)
20 << QSqlField("duration", QVariant::Int)
21 << QSqlField("xid_activity", QVariant::Int)
22 << QSqlField("type", QVariant::String)
23 << QSqlField("language", QVariant::String)
24 << QSqlField("favourite", QVariant::Bool)
25 << QSqlField("alarm", QVariant::Bool)
26 /* 'columns' from Table2 */
27 << QSqlField("tag", QVariant::String)
28 << QSqlField("title", QVariant::String)
29 << QSqlField("subtitle", QVariant::String)
30 << QSqlField("abstract", QVariant::String)
31 << QSqlField("description", QVariant::String));
34 Event Event::getById(int id, int conferenceId)
38 selectQueryJoin2T("id")
39 + QString("WHERE %1.id = :id AND %1.xid_conference = :conf").arg(sTable1Name));
40 query.bindValue(":id", id);
41 query.bindValue(":conf", conferenceId);
43 return loadOne(query);
46 QList<Event> Event::getByDate(const QDate& date, int conferenceId, QString orderBy)
50 selectQueryJoin2T("id")
51 + QString("WHERE %1.xid_conference = :conf AND %1.start >= :start AND %1.start < :end ORDER BY %1.%2").arg(sTable1Name).arg(orderBy));
52 query.bindValue(":conf", conferenceId);
53 query.bindValue(":start", convertToDb(date, QVariant::DateTime));
54 query.bindValue(":end", convertToDb(date.addDays(1), QVariant::DateTime));
59 QList<Event> Event::getFavByDate(const QDate& date, int conferenceId)
63 selectQueryJoin2T("id")
64 + QString("WHERE %1.xid_conference = :conf AND %1.start >= :start AND %1.start < :end AND %1.favourite = 1 ORDER BY %1.start").arg(sTable1Name));
65 query.bindValue(":conf", conferenceId);
66 query.bindValue(":start", convertToDb(date, QVariant::DateTime));
67 query.bindValue(":end", convertToDb(date.addDays(1), QVariant::DateTime));
72 QString Event::room() const
75 query.prepare("SELECT name FROM room WHERE id = (SELECT xid_room FROM event_room WHERE xid_event = :id)");
76 query.bindValue(":id", id());
78 // TODO: handle qeury error
79 //qDebug() << query.lastError();
81 return query.record().value("name").toString();
83 return QString("not-available");
86 void Event::setRoom(const QString &room)
88 qWarning("WARINING: setRoom() is NOT IMPLEMENTED YET");