You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

388 lines
6.9 KiB
C++

#include "cbooking.h"
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
cBooking::cBooking(const QDate& date, QObject* parent) :
QObject(parent),
m_date(date),
m_kommt1(QTime()),
m_geht1(QTime()),
m_kommt2(QTime()),
m_geht2(QTime()),
m_kommt3(QTime()),
m_geht3(QTime()),
m_kommt4(QTime()),
m_geht4(QTime()),
m_kommt5(QTime()),
m_geht5(QTime()),
m_code(""),
m_information(""),
m_soll(QTime()),
m_prevDiff(0)
{
}
QDate cBooking::date()
{
return(m_date);
}
void cBooking::setKommt1(const QTime& time)
{
m_kommt1 = time;
}
QTime cBooking::kommt1()
{
return(m_kommt1);
}
void cBooking::setGeht1(const QTime& time)
{
m_geht1 = time;
}
QTime cBooking::geht1()
{
return(m_geht1);
}
void cBooking::setKommt2(const QTime& time)
{
m_kommt2 = time;
}
QTime cBooking::kommt2()
{
return(m_kommt2);
}
void cBooking::setGeht2(const QTime& time)
{
m_geht2 = time;
}
QTime cBooking::geht2()
{
return(m_geht2);
}
void cBooking::setKommt3(const QTime& time)
{
m_kommt3 = time;
}
QTime cBooking::kommt3()
{
return(m_kommt3);
}
void cBooking::setGeht3(const QTime& time)
{
m_geht3 = time;
}
QTime cBooking::geht3()
{
return(m_geht3);
}
void cBooking::setKommt4(const QTime& time)
{
m_kommt4 = time;
}
QTime cBooking::kommt4()
{
return(m_kommt4);
}
void cBooking::setGeht4(const QTime& time)
{
m_geht4 = time;
}
QTime cBooking::geht4()
{
return(m_geht4);
}
void cBooking::setKommt5(const QTime& time)
{
m_kommt5 = time;
}
QTime cBooking::kommt5()
{
return(m_kommt5);
}
void cBooking::setGeht5(const QTime& time)
{
m_geht5 = time;
}
QTime cBooking::geht5()
{
return(m_geht5);
}
void cBooking::setCode(const QString& code)
{
m_code = code;
}
QString cBooking::code()
{
return(m_code);
}
void cBooking::setInformation(const QString& information)
{
m_information = information;
}
QString cBooking::information()
{
return(m_information);
}
QTime cBooking::pause()
{
return(QTime(0, 0, 0));
}
QTime cBooking::ist()
{
return(QTime(0, 0, 0));
}
void cBooking::setSoll()
{
m_soll = QTime(0, 0, 0);
}
QTime cBooking::soll()
{
return(m_soll);
}
qint32 cBooking::diff()
{
return(0);
}
QString cBooking::diffString()
{
QTime t;
qint32 d = diff();
bool bNeg = false;
if(d < 0)
{
t = QTime(0, 0, 0, d*1000);
bNeg = true;
}
else
t = QTime(0, 0, 0, d*1000);
return(bNeg ? "-" : "" + t.toString("hh:mm:ss"));
}
void cBooking::setPrevDiff(qint32 diff)
{
m_prevDiff = diff;
}
qint32 cBooking::prevDiff()
{
return(m_prevDiff);
}
qint32 cBooking::currentDiff()
{
return(0);
}
QString cBooking::currentDiffString()
{
QTime t;
qint32 d = currentDiff();
bool bNeg = false;
if(d < 0)
{
t = QTime(0, 0, 0, d*1000);
bNeg = true;
}
else
t = QTime(0, 0, 0, d*1000);
return(bNeg ? "-" : "" + t.toString("hh:mm:ss"));
}
qreal cBooking::hoursDecimal()
{
return(0);
}
bool cBooking::save()
{
QSqlQuery query;
query.prepare("SELECT datum FROM booking WHERE datum=:datum;");
query.bindValue(":datum", m_date);
if(!query.exec())
{
qDebug() << "Save: " << query.lastError().text();
return(false);
}
if(query.next())
query.prepare("UPDATE booking "
"SET kommt1=:kommt1, "
" geht1=:geht1, "
" kommt2=:kommt2, "
" geht2=:geht2, "
" kommt3=:kommt3, "
" geht3=:geht3, "
" kommt4=:kommt4, "
" geht4=:geht4, "
" kommt5=:kommt5, "
" geht5=:geht5, "
" code=:code, "
" information=:information "
"WHERE datum=:datum;");
else
query.prepare("INSERT INTO booking ( "
" datum, "
" kommt1, "
" geht1, "
" kommt2, "
" geht2, "
" kommt3, "
" geht3, "
" kommt4, "
" geht4, "
" kommt5, "
" geht5, "
" code, "
" information"
" ) "
"VALUES "
" ( "
" :datum, "
" :kommt1, "
" :geht1, "
" :kommt2, "
" :geht2, "
" :kommt3, "
" :geht3, "
" :kommt4, "
" :geht4, "
" :kommt5, "
" :geht5, "
" :code, "
" :information"
" );");
query.bindValue(":datum", date());
query.bindValue(":kommt1", kommt1());
query.bindValue(":geht1", geht1());
query.bindValue(":kommt2", kommt2());
query.bindValue(":geht2", geht2());
query.bindValue(":kommt3", kommt3());
query.bindValue(":geht3", geht3());
query.bindValue(":kommt4", kommt4());
query.bindValue(":geht4", geht4());
query.bindValue(":kommt5", kommt5());
query.bindValue(":geht5", geht5());
query.bindValue(":code", code());
query.bindValue(":information", information());
if(!query.exec())
{
qDebug() << "Save: " << query.lastError().text();
return(false);
}
qDebug() << "saved.";
return(true);
}
bool cBookingList::load()
{
QSqlQuery query;
query.prepare("SELECT datum, "
" kommt1, "
" geht1, "
" kommt2, "
" geht2, "
" kommt3, "
" geht3, "
" kommt4, "
" geht4, "
" kommt5, "
" geht5, "
" code, "
" information "
"FROM booking "
"ORDER BY datum;");
if(!query.exec())
{
qDebug() << "SELECT FROM booking: " << query.lastError().text();
return(false);
}
while(query.next())
{
cBooking* lpBooking = add(query.value("datum").toDate());
if(lpBooking)
{
lpBooking->setKommt1(query.value("kommt1").toTime());
lpBooking->setGeht1(query.value("geht1").toTime());
lpBooking->setKommt2(query.value("kommt2").toTime());
lpBooking->setGeht2(query.value("geht2").toTime());
lpBooking->setKommt3(query.value("kommt3").toTime());
lpBooking->setGeht3(query.value("geht3").toTime());
lpBooking->setKommt4(query.value("kommt4").toTime());
lpBooking->setGeht4(query.value("geht4").toTime());
lpBooking->setKommt5(query.value("kommt5").toTime());
lpBooking->setGeht5(query.value("geht5").toTime());
lpBooking->setCode(query.value("code").toString());
lpBooking->setInformation(query.value("information").toString());
}
}
return(true);
}
cBooking* cBookingList::add(const QDate& date)
{
if(find(date))
return(nullptr);
cBooking* lpBooking = new cBooking(date);
append(lpBooking);
return(lpBooking);
}
cBooking* cBookingList::find(const QDate& date)
{
for(cBookingList::iterator i = begin();i != end(); i++)
{
if((*i)->date() == date)
return(*i);
}
return(nullptr);
}