iFacilityProject/iFacility/viewmodels/professionsviewmodel.cpp

46 lines
1.9 KiB
C++

#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();
}