162 lines
4.7 KiB
C
162 lines
4.7 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};
|
|
|
|
static const QStringList OPTIONAL_CSV_HEADERS = {"Bietart", "Online ID", "Access Code"};
|
|
|
|
/// 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";
|
|
|
|
/// server communication
|
|
enum GetRequestTypes {
|
|
GetCurrentBiddingRound,
|
|
StartNewBiddingRound,
|
|
RestartLastBiddingRound,
|
|
StopCurrentBiddingRound,
|
|
GetBiddingsOfSpecificRound,
|
|
GetBiddingsOfHighestRound
|
|
};
|
|
|
|
/// 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
|