Files
BeetRound/libs/BeetRoundCore/model/metadata.h

150 lines
4.4 KiB
C

#ifndef METADATA_H
#define METADATA_H
#include <QDebug>
#include <QHash>
#include <QList>
#include <QString>
// TODO add namespace
/// model data
enum UserRoles {
LastNameRole = Qt::UserRole + 1,
FirstNameRole,
MembershipNumberRole,
Bidding1Role,
Bidding2Role,
Bidding3Role,
DepotWish1Role,
DepotWish2Role,
ShareAmountRole,
MailRole,
ShareTypeRole,
BiddingTypeRole,
OnlineIdRole,
AccessCodeRole,
// read-only (calculated)
FullNameRole,
FactoredBiddingRole,
ToStringRole,
JsonObjectRole
};
static UserRoles DEFAULT_ROLE = FullNameRole;
// TODO ?rename USER_FACING_ROLES -> MAIN_ROLES ?
static QList<UserRoles> USER_FACING_ROLES = {
LastNameRole, FirstNameRole, MembershipNumberRole, Bidding1Role, Bidding2Role,
Bidding3Role, DepotWish1Role, DepotWish2Role, ShareAmountRole, MailRole,
ShareTypeRole, BiddingTypeRole, OnlineIdRole, AccessCodeRole};
static QHash<int, QByteArray> ROLE_NAMES = {{MembershipNumberRole, "Mitglieds-nr."},
{LastNameRole, "Name"},
{FirstNameRole, "Vorname"},
{Bidding1Role, "Gebot 1"},
{Bidding2Role, "Gebot 2"},
{Bidding3Role, "Gebot 3"},
{DepotWish1Role, "Wunsch 1"},
{DepotWish2Role, "Wunsch 2"},
{ShareAmountRole, "Anzahl"},
{MailRole, "Mail"},
{ShareTypeRole, "Art"},
{BiddingTypeRole, "Bietart"},
{OnlineIdRole, "Online ID"},
{AccessCodeRole, "Access Code"},
{FactoredBiddingRole, "factoredBidding"}};
static const QList<QString> SHARE_TYPES = {"bezahlt", "teils/teils", "erarbeitet", ""};
static const QList<QString> BIDDING_TYPES = {"paper", "digital", "online", "offline", ""};
static QList<UserRoles> STRING_ROLES = {LastNameRole, FirstNameRole, DepotWish1Role,
DepotWish2Role, MailRole, ShareTypeRole,
BiddingTypeRole, OnlineIdRole, AccessCodeRole};
static QList<UserRoles> INT_ROLES = {
MembershipNumberRole,
Bidding1Role,
Bidding2Role,
Bidding3Role,
};
static QList<UserRoles> DOUBLE_ROLES = {
ShareAmountRole,
};
static const QList<UserRoles> TYPE_ROLES = {ShareTypeRole, BiddingTypeRole};
static const QList<UserRoles> SHARE_TYPE_ROLES = {ShareTypeRole};
static const QList<UserRoles> BIDDING_TYPE_ROLES = {BiddingTypeRole};
/// JSON keys
static const QString ITEMS_KEY_STRING = "items";
static const QString ITEM_KEY_STRING = "item";
/// file naming
static const QString ITEMS_FILE_NAME = ITEMS_KEY_STRING + ".json";
/// functions
static UserRoles GET_ROLE_FOR_COLUMN(const int column) {
switch (column) {
case 0:
return MembershipNumberRole;
break;
case 1:
return LastNameRole;
break;
case 2:
return FirstNameRole;
break;
case 3:
return ShareTypeRole;
break;
case 4:
return ShareAmountRole;
break;
case 5:
return BiddingTypeRole;
break;
case 6:
return Bidding1Role;
break;
case 7:
return Bidding2Role;
break;
case 8:
return Bidding3Role;
break;
case 9:
return DepotWish1Role;
break;
case 10:
return DepotWish2Role;
break;
case 11:
return MailRole;
break;
case 12:
return OnlineIdRole;
break;
case 13:
return AccessCodeRole;
break;
default:
qWarning() << QString("No role found for column %1! Returning 'FullNameRole'...").arg(column);
return FullNameRole;
break;
}
}
static QList<QString> GET_HEADER_NAMES() {
QList<QString> result;
for (const UserRoles& role : USER_FACING_ROLES) {
const QString headerName = ROLE_NAMES.value(role);
result.append(headerName);
}
return result;
}
static QString GET_HEADER_FOR_COLUMN(const int column) {
const UserRoles role = GET_ROLE_FOR_COLUMN(column);
const QString headerName = ROLE_NAMES.value(role);
return headerName;
}
#endif // METADATA_H