parent
90bd7871ca
commit
2fbe00d97c
|
|
@ -4,7 +4,7 @@ DataHandler::DataHandler(QObject *parent) : QObject(parent) {
|
|||
errorState = false;
|
||||
}
|
||||
|
||||
bool DataHandler::lagreFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger) {
|
||||
bool DataHandler::lagreFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger, ProsjektBindingerDatoStempler &bindingerDatoStempler) {
|
||||
QFile fil(filSti);
|
||||
if (!fil.open(QIODevice::WriteOnly)) {
|
||||
errorState = true;
|
||||
|
|
@ -20,13 +20,14 @@ bool DataHandler::lagreFil(QString filSti, KundeKartotek &kartotek, ProsjektKart
|
|||
ut << kartotek;
|
||||
ut << pKartotek;
|
||||
ut << bindinger;
|
||||
ut << bindingerDatoStempler;
|
||||
fil.flush();
|
||||
fil.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DataHandler::lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger) {
|
||||
bool DataHandler::lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger, ProsjektBindingerDatoStempler &bindingerDatoStempler) {
|
||||
QFile fil(filSti);
|
||||
if (!fil.open(QIODevice::ReadOnly)) {
|
||||
errorState = true;
|
||||
|
|
@ -47,9 +48,9 @@ bool DataHandler::lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKarto
|
|||
errorState = true;
|
||||
errorCode = ErrorCodes::UGYLDIG_FIL;
|
||||
return false;
|
||||
} else if (appVersjon != APP_VERSJON) {
|
||||
}
|
||||
|
||||
} else if (dbVersjon != DB_VERSJON) {
|
||||
if (dbVersjon != DB_VERSJON) {
|
||||
errorState = true;
|
||||
errorCode = ErrorCodes::DB_VERSJONSKONFLIKT;
|
||||
return false;
|
||||
|
|
@ -58,11 +59,18 @@ bool DataHandler::lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKarto
|
|||
inn >> kartotek;
|
||||
inn >> pKartotek;
|
||||
inn >> bindinger;
|
||||
inn >> bindingerDatoStempler;
|
||||
fil.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QString DataHandler::datoStempel() {
|
||||
QDateTime nu = QDateTime::currentDateTime();
|
||||
QString tidsFormat = "yyyy-MM-dd HH:mm:ss";
|
||||
return nu.toString(tidsFormat);
|
||||
}
|
||||
|
||||
bool DataHandler::hasError() {
|
||||
return errorState;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define DATAHANDLER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QDateTime>
|
||||
|
||||
#include "datatypes.h"
|
||||
#include "globals.h"
|
||||
|
|
@ -13,8 +14,9 @@ class DataHandler : public QObject
|
|||
Q_OBJECT
|
||||
public:
|
||||
explicit DataHandler(QObject *parent = nullptr);
|
||||
bool lagreFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger);
|
||||
bool lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger);
|
||||
bool lagreFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger, ProsjektBindingerDatoStempler &bindingerDatoStempler);
|
||||
bool lastFil(QString filSti, KundeKartotek &kartotek, ProsjektKartotek &pKartotek, ProsjektBindinger &bindinger, ProsjektBindingerDatoStempler &bindingerDatoStempler);
|
||||
static QString datoStempel();
|
||||
|
||||
bool hasError();
|
||||
ErrorCodes getError();
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ typedef QList<QHash<QString, QVariant>> ProsjektKartotek;
|
|||
typedef QHash<QString, QVariant> ProsjektFil;
|
||||
|
||||
typedef QHash<int, QList<int>> ProsjektBindinger;
|
||||
typedef QHash<int, QHash<QString, QString>> ProsjektBindingerDatoStempler;
|
||||
typedef QHash<int, QString> PostNummerTabell;
|
||||
|
||||
enum ErrorCodes {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#include "globals.h"
|
||||
|
||||
qreal APP_VERSJON = 0.6;
|
||||
qreal DB_VERSJON = 0.1;
|
||||
qreal APP_VERSJON = 0.7;
|
||||
qreal DB_VERSJON = 0.2;
|
||||
quint64 APPLIKASJON_STEMPEL = (quint64)0xc4b351957b3bcf8;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ void MainWindow::on_actionNy_triggered() {
|
|||
filSti = QFileDialog::getSaveFileName(this, tr("Opprett ny databasefil"), stdSted, tr("Database fil (*.saeter)"));
|
||||
// invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen
|
||||
if (!filSti.isEmpty()) {
|
||||
if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) {
|
||||
if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler)) {
|
||||
ErrorCodes error = ioHandler->getError();
|
||||
switch (error) {
|
||||
case ErrorCodes::SKRIVEFEIL:
|
||||
|
|
@ -87,7 +87,7 @@ void MainWindow::on_action_pne_triggered() {
|
|||
|
||||
if (!filSti.isEmpty()) {
|
||||
// invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger
|
||||
if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger)) {
|
||||
if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler)) {
|
||||
ErrorCodes error = ioHandler->getError();
|
||||
switch (error) {
|
||||
case ErrorCodes::UGYLDIG_FIL:
|
||||
|
|
@ -149,7 +149,7 @@ void MainWindow::on_action_pne_triggered() {
|
|||
|
||||
void MainWindow::on_actionLagre_triggered() {
|
||||
// invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger
|
||||
ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger);
|
||||
ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler);
|
||||
// Oppdaterer diverse brytere i klassen for å reflektere endringer i programmet
|
||||
harFil = true;
|
||||
filLagret = true;
|
||||
|
|
@ -169,7 +169,7 @@ void MainWindow::on_actionL_agre_som_triggered() {
|
|||
filSti = QFileDialog::getSaveFileName(this, tr("Lagre gjeldende database med nytt navn"), stdSted, tr("Database fil (*.saeter)"));
|
||||
// invokerer lagreFil fra DataHandler klassen der alle IO funksjoner ligger, kontroller om vi kan skrive til filen
|
||||
if (!filSti.isEmpty()) {
|
||||
if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger)) {
|
||||
if (!ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler)) {
|
||||
ErrorCodes error = ioHandler->getError();
|
||||
switch (error) {
|
||||
case ErrorCodes::SKRIVEFEIL:
|
||||
|
|
@ -338,7 +338,7 @@ void MainWindow::leggFilbaneTilHistorikk(QString filBane) {
|
|||
void MainWindow::lastDatabaseFil(QString fil) {
|
||||
filSti = fil;
|
||||
// invokerer lastFil fra DataHandler klassen der alle IO funksjoner ligger
|
||||
if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger)) {
|
||||
if (!ioHandler->lastFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler)) {
|
||||
ErrorCodes error = ioHandler->getError();
|
||||
switch (error) {
|
||||
case ErrorCodes::UGYLDIG_FIL:
|
||||
|
|
@ -466,7 +466,7 @@ void MainWindow::closeEvent(QCloseEvent *event) {
|
|||
int svar = bekreftBoks.exec();
|
||||
switch (svar) {
|
||||
case QMessageBox::Save:
|
||||
ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger);
|
||||
ioHandler->lagreFil(filSti, kundeKart, prosjektKart, bindinger, prosjektBindingerStempler);
|
||||
event->accept();
|
||||
break;
|
||||
case QMessageBox::Discard:
|
||||
|
|
@ -1003,13 +1003,22 @@ void MainWindow::knyttProsjekt(int kunde, int prosjekt) {
|
|||
QList<int> kundeListe;
|
||||
QList<int> prosjektBindinger = bindinger.keys();
|
||||
if (!prosjektBindinger.contains(prosjekt)) {
|
||||
QHash<QString, QString> datoStempler;
|
||||
datoStempler.insert("created_at", DataHandler::datoStempel());
|
||||
datoStempler.insert("updated_at", DataHandler::datoStempel());
|
||||
|
||||
kundeListe.append(kunde);
|
||||
bindinger.insert(prosjekt, kundeListe);
|
||||
prosjektBindingerStempler.insert(prosjekt, datoStempler);
|
||||
} else {
|
||||
kundeListe = bindinger.value(prosjekt);
|
||||
QHash<QString, QString> datoStempler = prosjektBindingerStempler.value(prosjekt);
|
||||
if (!kundeListe.contains(kunde)) {
|
||||
kundeListe.append(kunde);
|
||||
datoStempler["updated_at"] = DataHandler::datoStempel();
|
||||
|
||||
bindinger[prosjekt] = kundeListe;
|
||||
prosjektBindingerStempler[prosjekt] = datoStempler;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ private:
|
|||
ProsjektFil prosjektKort;
|
||||
ProsjektKartotek prosjektKart;
|
||||
ProsjektBindinger bindinger;
|
||||
ProsjektBindingerDatoStempler prosjektBindingerStempler;
|
||||
PostNummerTabell postStedTabell;
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ void NyKundeDialog::on_pushAvbryt_clicked() {
|
|||
QDialog::close();
|
||||
}
|
||||
|
||||
|
||||
void NyKundeDialog::on_pushButton_clicked() {
|
||||
KundeFil nyKunde;
|
||||
nyKunde.insert("fornavn", ui->lineFornavn->text());
|
||||
|
|
@ -63,11 +62,12 @@ void NyKundeDialog::on_pushButton_clicked() {
|
|||
nyKunde.insert("tlf", ui->lineTlf->text().toInt());
|
||||
nyKunde.insert("id", ui->lineKundenummer->text().toInt());
|
||||
nyKunde.insert("active", true);
|
||||
nyKunde.insert("created_at", DataHandler::datoStempel());
|
||||
nyKunde.insert("updated_at", DataHandler::datoStempel());
|
||||
|
||||
emit leggTilKunde(nyKunde);
|
||||
}
|
||||
|
||||
|
||||
void NyKundeDialog::on_linePostnr_editingFinished() {
|
||||
ui->lineSted->setText(postNummere->value(ui->linePostnr->text().toInt()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <QDialog>
|
||||
#include <QIntValidator>
|
||||
#include "datahandler.h"
|
||||
#include "datatypes.h"
|
||||
|
||||
namespace Ui {
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ void RedigerKundeDialog::on_pushButton_clicked() {
|
|||
oppdatertFil.insert("epost", ui->lineEpost->text());
|
||||
oppdatertFil.insert("tlf", ui->lineTlf->text().toInt());
|
||||
oppdatertFil.insert("active", true);
|
||||
oppdatertFil.insert("updated_at", DataHandler::datoStempel());
|
||||
|
||||
emit oppdaterKundeFil(oppdatertFil);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define REDIGERKUNDEDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "datahandler.h"
|
||||
#include "datatypes.h"
|
||||
|
||||
namespace Ui {
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ void NyttProsjektDialog::on_pushLagre_clicked() {
|
|||
|
||||
nyttProsjekt.insert("active", true);
|
||||
nyttProsjekt.insert("ferdig", false);
|
||||
nyttProsjekt.insert("created_at", DataHandler::datoStempel());
|
||||
nyttProsjekt.insert("updated_at", DataHandler::datoStempel());
|
||||
|
||||
emit leggTilProsjekt(nyttProsjekt);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define NYTTPROSJEKTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "datahandler.h"
|
||||
#include "datatypes.h"
|
||||
|
||||
namespace Ui {
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ void RedigerProsjektDialog::on_pushLagre_clicked() {
|
|||
|
||||
nyttProsjekt.insert("active", true);
|
||||
nyttProsjekt.insert("ferdig", false);
|
||||
nyttProsjekt.insert("updated_at", DataHandler::datoStempel());
|
||||
|
||||
emit lagreProsjekt(nyttProsjekt);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define REDIGERPROSJEKTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include "datahandler.h"
|
||||
#include "datatypes.h"
|
||||
|
||||
namespace Ui {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user