You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
6.5 KiB
167 lines
6.5 KiB
/* Diese Datei ist Teil von pmv-client <https://git.piratenpartei-sh.de>
|
|
*
|
|
* pmv-client ist Freie Software: Sie können es unter den Bedingungen
|
|
* der GNU General Public License, wie von der Free Software Foundation,
|
|
* Version 3 der Lizenz weiter verteilen und/oder modifizieren.
|
|
*
|
|
* Dieses Programm wird in der Hoffnung bereitgestellt, dass es nützlich sein
|
|
* wird, jedoch OHNE JEDE GEWÄHR,; sogar ohne die implizite Gewähr der
|
|
* MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
|
|
* Siehe die GNU General Public License für weitere Einzelheiten.
|
|
*
|
|
* Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
|
|
* Programm erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-only
|
|
*/
|
|
|
|
#include "editdialog.h"
|
|
#include "ui_editdialog.h"
|
|
|
|
#include <QPushButton>
|
|
#include <QSqlDatabase>
|
|
#include <QSqlQuery>
|
|
#include <QDebug>
|
|
#include <QSqlError>
|
|
|
|
EditDialog::EditDialog(QWidget *parent, int nummer) :
|
|
QDialog(parent),
|
|
ui(new Ui::EditDialog)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
ui->buttonBox->button(QDialogButtonBox::Close)->setText("Schließen");
|
|
ui->buttonBox->button(QDialogButtonBox::Save)->setText("Speichern");
|
|
|
|
// Mahnstatus initialisieren
|
|
QStringList mahnstatuslist = {"0", "1", "20", "30"}; // Bedeutung noch unbekannt
|
|
ui->comboBox_mahnstatus->insertItems(0, mahnstatuslist);
|
|
|
|
this->mitgliednr = nummer;
|
|
|
|
QSqlQuery qry;
|
|
qry.prepare("SELECT nr, vorname, nachname, nickname, strasse, plz, ort,"
|
|
" email, telefon, geburtsdatum, eintrittsdatum, austrittsdatum,"
|
|
" staatsang, schwebend, stimmberechtigt, status "
|
|
"FROM mitglied WHERE nr=:nr");
|
|
qry.bindValue(":nr", nummer);
|
|
qry.exec();
|
|
qry.first();
|
|
ui->lineEdit_nr->setText(qry.value("nr").toString());
|
|
ui->lineEdit_vorname->setText(qry.value("vorname").toString());
|
|
ui->lineEdit_nachname->setText(qry.value("nachname").toString());
|
|
ui->dateEdit_geburtstag->setDate(qry.value("geburtsdatum").toDate());
|
|
ui->lineEdit_nick->setText(qry.value("nickname").toString());
|
|
ui->lineEdit_email->setText(qry.value("email").toString());
|
|
ui->lineEdit_telefon->setText(qry.value("telefon").toString());
|
|
ui->lineEdit_plz->setText(qry.value("plz").toString()); // TODO Führende Nullen beachten!
|
|
ui->lineEdit_ort->setText(qry.value("ort").toString());
|
|
ui->lineEdit_strasse->setText(qry.value("strasse").toString());
|
|
ui->lineEdit_staatsang->setText(qry.value("staatsang").toString());
|
|
ui->dateEdit_eintritt->setDate(qry.value("eintrittsdatum").toDate());
|
|
// TODO 01.01.2006 entspricht "kein Austrittsdatum" n/a
|
|
if (ui->dateEdit_austritt->minimumDate() == qry.value("austrittsdatum").toDate()) {
|
|
|
|
}
|
|
else {
|
|
ui->dateEdit_austritt->setDate(qry.value("austrittsdatum").toDate());
|
|
}
|
|
ui->checkBox_schwebend->setCheckState(qry.value("schwebend").toBool() ? Qt::Checked : Qt::Unchecked);
|
|
ui->checkBox_stimmberechtigt->setCheckState(qry.value("stimmberechtigt").toBool() ? Qt::Checked : Qt::Unchecked);
|
|
// Status-Radiobuttons
|
|
QStringList statusOptions = {"aktiv", "ruhend", "ausgetreten"};
|
|
switch(statusOptions.indexOf(qry.value("status").toString())) {
|
|
case 0:
|
|
ui->radioButton_aktiv->setChecked(true);
|
|
break;
|
|
case 1:
|
|
ui->radioButton_ruhend->setChecked(true);
|
|
break;
|
|
case 2:
|
|
ui->radioButton_ausgetreten->setChecked(true);
|
|
break;
|
|
}
|
|
qry.finish();
|
|
|
|
qry.prepare("SELECT beitrag, mahndatum, reduziert, reduziert_bis "
|
|
"FROM beitrag WHERE mitgliednr=:nr");
|
|
qry.bindValue(":nr", nummer);
|
|
qry.exec();
|
|
qry.first();
|
|
// TODO Datensätze gefunden?
|
|
if (qry.isValid()) {
|
|
ui->lineEdit_beitrag->setText(qry.value("beitrag").toString());
|
|
ui->dateEdit_mdatum->setDate(qry.value("mahndatum").toDate());
|
|
ui->dateEdit_rdatum->setDate(qry.value("reduziert_bis").toDate());
|
|
ui->checkBox_reduziert->setCheckState(qry.value("reduziert").toBool() ? Qt::Checked : Qt::Unchecked);
|
|
} else {
|
|
QSqlQuery qrynew;
|
|
qrynew.prepare("INSERT INTO beitrag (mitgliednr, beitrag) VALUES (:nr, :beitrag)");
|
|
qrynew.bindValue(":nr", nummer);
|
|
qrynew.bindValue(":beitrag", 72); // TODO Globale Variable
|
|
if (!qrynew.exec()) {
|
|
qDebug() << qrynew.lastError();
|
|
}
|
|
}
|
|
qry.finish();
|
|
}
|
|
|
|
EditDialog::~EditDialog()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void EditDialog::on_buttonBox_accepted()
|
|
{
|
|
// TODO Dirty-Prüfung um nur geänderte Felder zurückzuschreiben
|
|
QSqlQuery qry;
|
|
qry.prepare("UPDATE mitglied SET"
|
|
" vorname=:vorname, nachname=:nachname, nickname=:nick,"
|
|
" email=:email, telefon=:telefon, strasse=:str, ort=:ort, plz=:plz,"
|
|
" geburtsdatum=:geburtsdatum, eintrittsdatum=:edatum, austrittsdatum=:adatum,"
|
|
" schwebend=:schwebend, stimmberechtigt=:stimmberechtigt, status=:status "
|
|
"WHERE nr=:nr");
|
|
|
|
// TODO Änderung der Mitgliedsmummer erfordert besondere Beachtung?
|
|
//int nrneu = ui->lineEdit_nr->text().toInt();
|
|
//if (nrneu != this->mitgliednr) {
|
|
// qry.bindValue(":nrneu", nrneu);
|
|
//}
|
|
|
|
qry.bindValue(":nr", this->mitgliednr);
|
|
qry.bindValue(":vorname", ui->lineEdit_vorname->text());
|
|
qry.bindValue(":nachname", ui->lineEdit_nachname->text());
|
|
qry.bindValue(":nick", ui->lineEdit_nick->text());
|
|
qry.bindValue(":email", ui->lineEdit_email->text());
|
|
qry.bindValue(":telefon", ui->lineEdit_telefon->text());
|
|
qry.bindValue(":str", ui->lineEdit_strasse->text());
|
|
qry.bindValue(":plz", ui->lineEdit_plz->text().toUInt());
|
|
qry.bindValue(":ort", ui->lineEdit_ort->text());
|
|
qry.bindValue(":edatum", ui->dateEdit_eintritt->date());
|
|
qry.bindValue(":geburtsdatum", ui->dateEdit_geburtstag->date());
|
|
|
|
if ( ui->dateEdit_austritt->date() == ui->dateEdit_austritt->minimumDate()) {
|
|
qry.bindValue(":adatum", QVariant(QVariant::String)); // NULL erzeugen
|
|
}
|
|
else {
|
|
qry.bindValue(":adatum", ui->dateEdit_austritt->date());
|
|
}
|
|
|
|
qry.bindValue(":schwebend", ui->checkBox_schwebend->isChecked());
|
|
qry.bindValue(":stimmberechtigt", ui->checkBox_stimmberechtigt->isChecked());
|
|
|
|
if (ui->radioButton_aktiv->isChecked()) {
|
|
qry.bindValue(":status", "aktiv");
|
|
}
|
|
else if (ui->radioButton_ruhend->isChecked()) {
|
|
qry.bindValue(":status", "ruhend");
|
|
}
|
|
else {
|
|
qry.bindValue(":status", "ausgetreten");
|
|
}
|
|
|
|
if (!qry.exec()) {
|
|
qDebug() << qry.lastError();
|
|
}
|
|
|
|
}
|
|
|