{
qDebug() << __PRETTY_FUNCTION__;
- QSqlQuery query(QString("SELECT user.id, user.name, user.image_url FROM user WHERE "
- "user.latitude >= '%1' AND user.latitude <= '%2' AND "
- "user.longitude >= '%3' AND user.longitude <= '%4' AND user.id IN "
- "(SELECT DISTINCT usertag.userid FROM usertag WHERE usertag.tagid IN "
- "(SELECT usertag.tagid FROM usertag WHERE usertag.userid = '%5') AND "
- "usertag.userid != '%6')")
- .arg(southWestCoordinates.latitude()).arg(northEastCoordinates.latitude())
- .arg(southWestCoordinates.longitude()).arg(northEastCoordinates.longitude())
- .arg(userId).arg(userId));
+ QHash<QString, QString> tags;
+
+ QSqlQuery tagQuery(QString("SELECT usertag.userid, tag.name FROM usertag, tag WHERE "
+ "usertag.tagid IN (SELECT usertag.tagid FROM usertag WHERE "
+ "usertag.userid = '%1') AND usertag.userid != '%2' "
+ "AND usertag.tagid = tag.id").arg(userId).arg(userId));
+
+ while (tagQuery.next()) {
+ QString userId = tagQuery.value(0).toString();
+ QString tagName = tagQuery.value(1).toString();
+
+ if (tags.contains(userId)) {
+ QString value = tags.take(userId);
+ value.append(", \"" + tagName + "\"");
+ tags.insert(userId, value);
+ }
+ else {
+ tags.insert(userId, QString("\"" + tagName + "\""));
+ }
+ }
+
+ QStringList userIds;
+ QHashIterator<QString, QString> i(tags);
+ while (i.hasNext())
+ userIds.append(i.key());
+
+ QSqlQuery userQuery(QString("SELECT user.id, user.name, user.image_url FROM user WHERE "
+ "user.id IN (") + userIds.join(", ") + QString(") AND "
+ "user.latitude >= '%1' AND user.latitude < '%2' AND "
+ "user.longitude >= '%3' AND user.longitude < '%4")
+ .arg(southWestCoordinates.latitude()).arg(northEastCoordinates.latitude())
+ .arg(southWestCoordinates.longitude()).arg(northEastCoordinates.longitude()));
QString result;
result.append("{\"people\": [");
- while (query.next()) {
+ while (userQuery.next()) {
result.append("{");
- result.append("\"uid\": \"" + query.value(0).toString() + "\",");
- result.append("\"name\": \"" + query.value(1).toString() + "\",");
- result.append("\"image_url\": \"" + query.value(2).toString() + "\"");
+ result.append("\"uid\": \"" + userQuery.value(0).toString() + "\",");
+ result.append("\"name\": \"" + userQuery.value(1).toString() + "\",");
+ result.append("\"image_url\": \"" + userQuery.value(2).toString() + "\",");
+ result.append("\"tags\": [" + tags.value(userQuery.value(0).toString()) + "]");
result.append("},");
}
result.remove(result.lastIndexOf(","), 1);
result.append("]}");
-
+ qWarning() << result;
return result.toUtf8();
}
user.setProfileImage(AvatarImage::create(
QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
user.setProfileImageUrl(person["image_url"].toUrl());
-
+ user.setTags(person["tags"].toList());
interestingPeople.append(user);
- emit fetchImage(user.userId(), user.profileImageUrl());
+ //Remove comment when the actual server is used
+ //emit fetchImage(user.userId(), user.profileImageUrl());
}
emit interestingPeopleReceived(interestingPeople);
messages.append(message);
- emit fetchImage(message.id(), messageMap["image_url"].toString());
+ //emit fetchImage(message.id(), messageMap["image_url"].toString());
}
emit messagesReceived(messages);