itat_challenge/src/discipline/Sport.cpp

49 lines
1.4 KiB
C++
Raw Normal View History

#include "Sport.h"
#include <set>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValueRef>
#include <QString>
/**
* @brief Sport::getCategories Reads all possible categories (also called units).
* @return A set of all category names.
*/
set<QString> Sport::getCategories() {
set<QString> categoryNames;
for (const QJsonValueRef& unit : this->discipline["units"].toArray()) {
categoryNames.insert(unit.toObject()["eventUnitName"].toString());
}
return categoryNames;
}
/**
* @brief Sport::getCompetitorsByCategory Searches for all competitors, who took part in the given category.
* @param category The category to search in.
* @return An QJsonArray with all competitors as QJsonValueRef, which can be casted to QJsonObject.
*/
QJsonArray Sport::getCompetitorsByCategory(QString category) {
QJsonArray competitors;
for (const QJsonValueRef& unitRef : this->discipline["units"].toArray()) {
QJsonObject unit = unitRef.toObject();
// search all units with the same category
if (QString::compare(unit["eventUnitName"].toString(), category, Qt::CaseSensitive) == 0) {
// add all competitors from one unit
for (const QJsonValueRef& comp : unit["competitors"].toArray()) {
competitors.push_back(comp.toObject());
}
}
}
return competitors;
}