49 lines
1.4 KiB
C++
49 lines
1.4 KiB
C++
![]() |
|
||
|
#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;
|
||
|
}
|