Add fully-functional administration panel for administrators and dispatchers

This commit is contained in:
E. Kozlovskaya 2021-01-05 16:01:34 +07:00
parent bf599549ea
commit ff6901e3a9
22 changed files with 1257 additions and 42 deletions

View file

@ -0,0 +1,64 @@
#include "administrationviewmodel.h"
AdministrationViewModel::AdministrationViewModel(QObject *parent) : QAbstractTableModel(parent) {
}
int AdministrationViewModel::rowCount(const QModelIndex &/*parent*/) const {
return mUserData.length();
}
int AdministrationViewModel::columnCount(const QModelIndex &/*parent*/) const {
return 4;
}
QVariant AdministrationViewModel::headerData(int section, Qt::Orientation orientation,
int role) const {
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
switch (section) {
case 0:
return QString("UID");
case 1:
return QString("Login");
case 2:
return QString("Full name");
case 3:
return QString("Status");
}
}
return QVariant();
}
QVariant AdministrationViewModel::data(const QModelIndex &index, int role) const {
if (role == Qt::DisplayRole) {
auto usr = mUserData[index.row()];
int col = index.column();
switch (col) {
case 0:
return usr.uID();
case 1:
return usr.getLogin();
case 2:
return usr.getFullName();
case 3:
return usr.getUserType() == UserType::ADMINISTRATOR? "Administrator" : "Dispatcher";
}
return "UNKNOWN FIELD";
}
return QVariant();
}
void AdministrationViewModel::invalidateData() {
beginResetModel();
mUserData.clear();
foreach (auto u, Database::instance()->getUsersByType(UserType::ADMINISTRATOR)) {
mUserData += *u;
}
foreach (auto u, Database::instance()->getUsersByType(UserType::DISPATCHER)) {
mUserData += *u;
}
endResetModel();
}