1 | #include "event.h" |
---|
2 | |
---|
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"; |
---|
12 | |
---|
13 | |
---|
14 | |
---|
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)); |
---|
32 | |
---|
33 | |
---|
34 | Event Event::getById(int id, int conferenceId) |
---|
35 | { |
---|
36 | QSqlQuery query; |
---|
37 | query.prepare( |
---|
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); |
---|
42 | |
---|
43 | return loadOne(query); |
---|
44 | } |
---|
45 | |
---|
46 | QList<Event> Event::getByDate(const QDate& date, int conferenceId, QString orderBy) |
---|
47 | { |
---|
48 | QSqlQuery query; |
---|
49 | query.prepare( |
---|
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)); |
---|
55 | |
---|
56 | return load(query); |
---|
57 | } |
---|
58 | |
---|
59 | QList<Event> Event::getFavByDate(const QDate& date, int conferenceId) |
---|
60 | { |
---|
61 | QSqlQuery query; |
---|
62 | query.prepare( |
---|
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)); |
---|
68 | |
---|
69 | return load(query); |
---|
70 | } |
---|
71 | |
---|
72 | QString Event::room() const |
---|
73 | { |
---|
74 | QSqlQuery query; |
---|
75 | query.prepare("SELECT name FROM room WHERE id = (SELECT xid_room FROM event_room WHERE xid_event = :id)"); |
---|
76 | query.bindValue(":id", id()); |
---|
77 | query.exec(); |
---|
78 | // TODO: handle qeury error |
---|
79 | //qDebug() << query.lastError(); |
---|
80 | if(query.next()) |
---|
81 | { |
---|
82 | QString map = query.record().value("name").toString(); |
---|
83 | map=map.toLower(); // room names are stored in lower-case format |
---|
84 | map=map.remove("."); // room names are stored without dots in the name, eg. "aw.1124.png" -> "aw1124.png" |
---|
85 | return map; |
---|
86 | } |
---|
87 | else |
---|
88 | return QString("not-available"); |
---|
89 | } |
---|
90 | |
---|
91 | void Event::setRoom(const QString &room) |
---|
92 | { |
---|
93 | qWarning("WARINING: setRoom() is NOT IMPLEMENTED YET"); |
---|
94 | // TODO: implement |
---|
95 | } |
---|
96 | |
---|