update dversionmangle in watch file to deal with local +svn versions
[debian/fosdem-schedule.git] / src / mvc / event.cpp
index cf0a2bdeccbc6ea295f1fef29c91ec93760d2315..1cd600d600eaeed5c3b8647100860a01678c0518 100644 (file)
@@ -38,7 +38,7 @@ QSqlRecord const Event::sColumns = Event::toRecord(QList<QSqlField>()
     << QSqlField("description", QVariant::String));
 
 Event::Event() :
-    mRoomId( 0 )
+    room_(NULL)
 {
 }
 
@@ -119,32 +119,14 @@ QList<Event> Event::getFavByDate(const QDate& date, int conferenceId)
     return load(query);
 }
 
-QString Event::room()
+Room* Event::room()
 {
-    if ( mRoomName.isEmpty() )
+    if (room_ == NULL)
     {
         QSqlQuery query;
-        // TODO: conference ID isn't used here
-        query.prepare("SELECT name FROM room WHERE id = :roomId");
-        query.bindValue(":roomId", roomId());
-        query.exec();
-        // TODO: handle qeury error
-        //qDebug() << query.lastError();
-        if(query.next())
-            mRoomName = query.record().value("name").toString();
-        else
-            mRoomName = QString("not-available");
-    }
-    return mRoomName;
-}
-
-int Event::roomId()
-{
-    if ( mRoomId == 0 )
-    {
-        QSqlQuery query;
-        query.prepare("SELECT xid_room FROM event_room WHERE xid_event = :id");
+        query.prepare("SELECT xid_room FROM event_room WHERE xid_event = :id AND xid_conference = :conf");
         query.bindValue(":id", id());
+        query.bindValue(":conf", conferenceId());
         if (!query.isActive())
             if (!query.exec())
                 throw OrmSqlException(query.lastError().text());
@@ -153,9 +135,20 @@ int Event::roomId()
             qDebug() << "No room found for event id: " << id();
             throw OrmNoObjectException();
         }
-        mRoomId = query.record().value("xid_room").toInt();
+        int id = query.record().value("xid_room").toInt();
+        room_ = new Room(Room::retrieve(id));
     }
-    return mRoomId;
+    return room_;
+}
+
+QString Event::roomName()
+{
+    return room()->name();
+}
+
+int Event::roomId()
+{
+    return room()->id();
 }
 
 QStringList Event::persons()
@@ -164,8 +157,9 @@ QStringList Event::persons()
     {
         QSqlQuery query;
         // TODO: conference ID isn't used here
-        query.prepare("SELECT person.name FROM person INNER JOIN event_person ON person.id = event_person.xid_person AND event_person.xid_event = :id");
+        query.prepare("SELECT person.name FROM person INNER JOIN event_person ON person.id = event_person.xid_person AND event_person.xid_event = :id AND event_person.xid_conference = :conf");
         query.bindValue(":id", id());
+        query.bindValue(":conf", conferenceId());
         query.exec();
         // TODO: handle qeury error
         //qDebug() << query.lastError();