PSQL id 06.11.2024

This commit is contained in:
krivoshein
2024-11-06 16:06:32 +03:00
parent 0f1fa71c33
commit f4ca58ce91
89 changed files with 1131 additions and 763 deletions

View File

@@ -5,8 +5,7 @@
#include "dialogedittrainee.h"
EditorTrainees::EditorTrainees(DataBaseTrainees* db, bool adminMode, QWidget *parent) :
//QDialog(parent),
TraineesView(db, CommonView::TypeView::control, parent),
TraineesView(db, CommonView::TypeView::control, adminMode, parent),
ui(new Ui::EditorTrainees)
{
ui->setupUi((QDialog*)this);
@@ -23,9 +22,9 @@ EditorTrainees::~EditorTrainees()
void EditorTrainees::on_btnNewGroup_clicked()
{
QString nameGroup = dbTrainees->newGroup();
int id = dbTrainees->newGroup();
loadTraineesFromDB();
setCurrentGroup(nameGroup);
setCurrentGroup(id);
}
void EditorTrainees::on_btnDeleteGroup_clicked()
@@ -37,13 +36,24 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr)
{//Выбрана группа
QString name = treeItemCurrent->text(0);
if(dbTrainees->deleteGroup(name))
{//Удалено
loadTraineesFromDB();
int id_group = treeItemCurrent->text(0).toInt();
if(dbTrainees->getListTraineesInGroup(id_group).count() > 0)
{
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
return;
}
else
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
{//Пустая группа
if(int id = dbTrainees->deleteGroup(id_group))
{//Удалено
loadTraineesFromDB();
}
else
{
//Ошибка удаления
}
}
}
}
}
@@ -57,10 +67,16 @@ void EditorTrainees::on_btnNewTrainee_clicked()
QTreeWidgetItem *treeItemParent = treeItemCurrent->parent();
if(treeItemParent == nullptr)
{//Выбрана группа. Можно добавить Обучаемого
QString nameGroup = treeItemCurrent->text(0);
dbTrainees->newTrainee(nameGroup);
loadTraineesFromDB();
setCurrentGroup(nameGroup);
int id_group = treeItemCurrent->text(0).toInt();
if(int id = dbTrainees->newTrainee(id_group))
{
loadTraineesFromDB();
setCurrentGroup(id_group);
}
else
{
//Ошибка добавления
}
}
}
}
@@ -75,14 +91,20 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
if(treeItemParent != nullptr)
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
QString nameGroup = treeItemParent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
int id_group = treeItemParent->text(0).toInt();
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
{
dbTrainees->deleteTrainee(name);
loadTraineesFromDB();
setCurrentGroup(nameGroup);
if(int id = dbTrainees->deleteTrainee(id_trainee))
{//Удалено
loadTraineesFromDB();
setCurrentGroup(id_group);
}
else
{
//Ошибка удаления
}
}
}
}
@@ -98,29 +120,37 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
if(treeItemParent != nullptr)
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
Trainee trainee = dbTrainees->getTrainee(name);
Trainee trainee = dbTrainees->getTrainee(id_trainee);
if(trainee.getArchived())
{//Архивный
trainee.setArchived(false);
if(dbTrainees->editTrainee(name, trainee))
{
if(int id = dbTrainees->editTrainee(trainee))
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(trainee.getName());
setCurrentTrainee(id);
}
else
{
//Ошибка редактирования
}
}
else
{//Не Архивный
trainee.setArchived(true);
if(dbTrainees->editTrainee(name, trainee))
{
if(int id = dbTrainees->editTrainee(trainee))
{//Отредактировано
if(!archiveVisible)
ui->btnArchive->click();
loadTraineesFromDB();
setCurrentTrainee(trainee.getName());
setCurrentTrainee(id);
}
else
{
//Ошибка редактирования
}
}
}
@@ -138,23 +168,25 @@ void EditorTrainees::on_btnEdit_clicked()
if(treeItemParent == nullptr)
{//Выбрана группа
QString nameGroup = treeItemCurrent->text(0);
int id_group = treeItemCurrent->text(0).toInt();
DialogEditGroup dlg(this);
dlg.setGroup(dbTrainees->getGroup(nameGroup));
dlg.setGroup(dbTrainees->getGroup(id_group));
switch( dlg.exec() )
{
case QDialog::Accepted:
{
if(dbTrainees->editGroup(nameGroup, dlg.getGroup()))
{
if(int id = dbTrainees->editGroup(dlg.getGroup()))
{//Отредактировано
loadTraineesFromDB();
setCurrentGroup(dlg.getGroup().getName());
setCurrentGroup(id);
}
else
QMessageBox::critical(this, tr("Editing error!"),
tr("An existing group name has been entered.\nThe changes will not be accepted."));
{
//Ошибка редактирования
}
break;
}
case QDialog::Rejected:
@@ -166,23 +198,25 @@ void EditorTrainees::on_btnEdit_clicked()
else
{//Выбран обучаемый
QString name = treeItemCurrent->text(0);
int id_trainee = treeItemCurrent->text(0).toInt();
DialogEditTrainee dlg(this);
dlg.setTrainee(dbTrainees->getTrainee(name));
dlg.setTrainee(dbTrainees->getTrainee(id_trainee));
switch( dlg.exec() )
{
case QDialog::Accepted:
{
if(dbTrainees->editTrainee(name, dlg.getTrainee()))
{
if(int id = dbTrainees->editTrainee(dlg.getTrainee()))
{//Отредактировано
loadTraineesFromDB();
setCurrentTrainee(dlg.getTrainee().getName());
setCurrentTrainee(id);
}
else
QMessageBox::critical(this, tr("Editing error!"),
tr("An existing trainee's name or login has been entered.\nThe changes will not be accepted."));
{
//Ошибка редактирования
}
break;
}
case QDialog::Rejected:
@@ -210,8 +244,27 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr)
{//Выбрана группа
ui->btnNewGroup->setEnabled(true);
ui->btnDeleteGroup->setEnabled(true);
int id_group = current->text(0).toInt();
if(adminMode)
{
ui->btnNewGroup->setEnabled(true);
if(dbTrainees->getListTraineesInGroup(id_group).count() > 0)
{//Группа не пуста
ui->btnDeleteGroup->setEnabled(false);
}
else
{//Группа пуста
ui->btnDeleteGroup->setEnabled(true);
}
}
else
{
ui->btnNewGroup->setEnabled(false);
ui->btnDeleteGroup->setEnabled(false);
}
ui->btnNewTrainee->setEnabled(true);
ui->btnDeleteTrainee->setEnabled(false);
ui->btnToOrFromArchiveTrainee->setEnabled(false);
@@ -223,13 +276,13 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
}
else
{//Выбран обучаемый
QString name = current->text(0);
int id_trainee = current->text(0).toInt();
ui->btnNewGroup->setEnabled(false);
ui->btnDeleteGroup->setEnabled(false);
ui->btnNewTrainee->setEnabled(false);
if(dbTrainees->isArchived(name))
if(dbTrainees->isArchived(id_trainee))
{//Архивный
ui->btnDeleteTrainee->setEnabled(true);
@@ -251,13 +304,13 @@ void EditorTrainees::on_treeWidget_currentItemChanged(QTreeWidgetItem *current,
}
}
void EditorTrainees::setCurrentGroup(QString nameGroup)
void EditorTrainees::setCurrentGroup(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem * item = treeWidget->topLevelItem(i);
if(item != nullptr)
if(item->text(0) == nameGroup)
if(item->text(0).toInt() == id)
{
treeWidget->setCurrentItem(item);
break;
@@ -265,7 +318,7 @@ void EditorTrainees::setCurrentGroup(QString nameGroup)
}
}
void EditorTrainees::setCurrentTrainee(QString name)
void EditorTrainees::setCurrentTrainee(int id)
{
for(int i = 0; i < treeWidget->topLevelItemCount(); i++)
{
@@ -276,7 +329,7 @@ void EditorTrainees::setCurrentTrainee(QString name)
{
QTreeWidgetItem * itemChild = item->child(j);
if(itemChild != nullptr)
if(itemChild->text(0) == name)
if(itemChild->text(0).toInt() == id)
{
treeWidget->setCurrentItem(itemChild);
break;