gestionale/argento/EditWindow.cpp

126 lines
4.2 KiB
C++
Raw Normal View History

2019-08-07 12:12:36 +00:00
#include "EditWindow.h"
2020-09-19 23:18:10 +00:00
#include "ui_EditWindow.h"
2019-08-03 15:24:44 +00:00
2020-09-20 20:03:35 +00:00
EditWindow::EditWindow(int idSocio, QWidget* parent) :
QDialog(parent),
ui(new Ui::EditWindow)
{
2019-08-03 15:24:44 +00:00
ui->setupUi(this);
model = new QSqlRelationalTableModel(this);
model->setTable("socio");
model->setFilter(QString("socio.id = %1").arg(idSocio));
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
2019-08-03 15:24:44 +00:00
int professioneIdx = model->fieldIndex("professione");
int fonteIdx = model->fieldIndex("fonte");
2019-08-03 15:48:30 +00:00
model->setJoinMode(QSqlRelationalTableModel::LeftJoin);
2019-08-03 15:24:44 +00:00
model->setRelation(professioneIdx, QSqlRelation("professione", "id", "professione"));
model->setRelation(fonteIdx, QSqlRelation("fonte", "id", "fonte"));
2019-08-05 13:32:44 +00:00
if (! model->select()) {
2019-08-05 13:32:44 +00:00
qDebug() << fullQuery(query);
2020-09-19 23:18:10 +00:00
qDebug() << query.lastError().text();
2019-08-06 13:33:11 +00:00
Ui::status(Ui::ERROR, "query error");
2019-08-05 13:32:44 +00:00
return;
}
2019-08-03 16:18:29 +00:00
QSqlTableModel* professioneModel = model->relationModel(professioneIdx);
ui->comboProfessione->setModel(professioneModel);
ui->comboProfessione->setModelColumn(professioneModel->fieldIndex("professione"));
QSqlTableModel* fonteModel = model->relationModel(fonteIdx);
ui->comboFonte->setModel(fonteModel);
ui->comboFonte->setModelColumn(fonteModel->fieldIndex("fonte"));
2019-08-16 17:23:43 +00:00
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(ui->lineID, model->fieldIndex("id"));
mapper->addMapping(ui->lineCognome, model->fieldIndex("cognome"));
mapper->addMapping(ui->lineNome, model->fieldIndex("nome"));
mapper->addMapping(ui->dateDataNascita, model->fieldIndex("dataNascita"));
mapper->addMapping(ui->lineComuneResidenza, model->fieldIndex("comuneResidenza"));
mapper->addMapping(ui->lineEmail, model->fieldIndex("email"));
mapper->addMapping(ui->comboProfessione, professioneIdx);
mapper->addMapping(ui->comboFonte, fonteIdx);
2019-08-16 17:23:43 +00:00
mapper->addMapping(ui->checkAbilitaQuestionario, model->fieldIndex("abilitaQuestionario"));
mapper->addMapping(ui->linePin, model->fieldIndex("pin"));
mapper->toFirst();
QSqlQuery query;
query.prepare("SELECT COUNT(*) AS count FROM iscrizione WHERE socio = :socio AND YEAR(anno) = :anno");
query.bindValue(":socio", idSocio);
query.bindValue(":anno", QDate::currentDate().year());
if (! (query.exec() && query.next())) {
status(Ui::ERROR, "can not get iscrizione");
} else {
int count = query.value(query.record().indexOf("count")).toInt();
if (count != 0) {
ui->buttonRinnova->setEnabled(false);
}
}
}
void EditWindow::on_buttonSalva_clicked() {
if (model->isDirty()) {
model->database().transaction();
if (model->submitAll()) {
model->database().commit();
Ui::status(Ui::SUCCESS, "successfull update");
2019-08-16 17:23:43 +00:00
/* update ui */
model->select();
mapper->toFirst();
2020-09-20 10:12:24 +00:00
close();
} else {
model->database().rollback();
qDebug() << model->lastError();
Ui::status(Ui::ERROR, "model transaction submit error");
}
} else {
Ui::status(Ui::INFO, "nothing done");
2020-09-20 10:12:24 +00:00
close();
}
}
void EditWindow::on_buttonAnnulla_clicked() {
this->close();
}
2019-08-03 16:18:29 +00:00
2020-09-20 20:03:35 +00:00
void EditWindow::on_buttonRinnova_clicked() {
int ret = QMessageBox::information(
this,
"Rinnovo iscrizione socio",
QString("Confermando verrà rinnovata l'iscrizione di %1 %2 per l'anno corrente. Confermi?")
.arg(ui->lineNome->text())
.arg(ui->lineCognome->text()),
QMessageBox::Cancel | QMessageBox::Ok);
if (ret == QMessageBox::Ok) {
qint64 id_socio = ui->lineID->text().toInt();
QSqlQuery query;
query.prepare("INSERT INTO iscrizione (socio) VALUES (:socio)");
query.bindValue(":socio", id_socio);
if (query.exec()) {
status(Ui::SUCCESS, "registration renewal successfull");
2020-09-20 20:27:38 +00:00
close();
2020-09-20 20:03:35 +00:00
} else {
status(Ui::ERROR, "registration renewal error: " + query.lastError().text());
}
}
}
2019-08-05 13:55:29 +00:00
EditWindow::~EditWindow()
2019-08-03 15:24:44 +00:00
{
2019-08-16 17:23:43 +00:00
delete mapper;
delete model;
2019-08-03 15:24:44 +00:00
delete ui;
}