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,46 @@
#include "professionsviewmodel.h"
ProfessionsViewModel::ProfessionsViewModel(QObject *parent) : QStandardItemModel(parent) {
}
void ProfessionsViewModel::invalidateData() {
beginResetModel();
clear();
QStandardItemModel::setHeaderData(0, Qt::Orientation::Horizontal, "Professions");
QStandardItem *rootNode = invisibleRootItem();
foreach (auto prof, Database::instance()->professions()) {
QStandardItem *profNode = new QStandardItem("Profession: " + prof.title());
QStandardItem *profUID = new QStandardItem("PID: " + prof.pID().toString());
QStandardItem *currentWorkers = new QStandardItem("Current workers");
QStandardItem *availableWorkers = new QStandardItem("Available workers");
foreach(auto worker, Database::instance()->getUsersByProfession(prof.pID())) {
QStandardItem *workerNode = new QStandardItem(worker->getFullNameShortForm());
UserProfession up;
foreach (auto uProf, worker->getProfessions()) {
if (uProf.getProfession() == prof.pID()) {
up = uProf;
}
}
QStandardItem *workerRank = new QStandardItem(tr("%1 rank").arg(up.getRank()));
QStandardItem *acqDateNode = new QStandardItem(
up.getAcquiredDate().toString(Qt::DateFormat::SystemLocaleShortDate));
workerNode->appendRow(workerRank);
workerNode->appendRow(acqDateNode);
if (worker->getCurrentProfession() == prof.pID()) {
currentWorkers->appendRow(workerNode);
}
else {
availableWorkers->appendRow(workerNode);
}
}
profNode->appendRow(profUID);
profNode->appendRow(currentWorkers);
profNode->appendRow(availableWorkers);
rootNode->appendRow(profNode);
}
endResetModel();
}