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.

135 lines
2.7 KiB
C++

#ifndef CBOOKING_H
#define CBOOKING_H
#include "cmonthlybooking.h"
#include "cpublicholiday.h"
#include "cdailyworking.h"
#include "cvacation.h"
#include <QMetaType>
#include <QList>
#include <QObject>
#include <QDate>
#include <QTime>
#include <QSqlQuery>
class cBooking : public QObject
{
Q_OBJECT
public:
explicit cBooking(const QDate& date, QObject* parent = nullptr);
QDate date();
void setKommt1(const QTime& time);
QTime kommt1();
void setGeht1(const QTime& time);
QTime geht1();
void setKommt2(const QTime& time);
QTime kommt2();
void setGeht2(const QTime& time);
QTime geht2();
void setKommt3(const QTime& time);
QTime kommt3();
void setGeht3(const QTime& time);
QTime geht3();
void setKommt4(const QTime& time);
QTime kommt4();
void setGeht4(const QTime& time);
QTime geht4();
void setKommt5(const QTime& time);
QTime kommt5();
void setGeht5(const QTime& time);
QTime geht5();
void setCode(const QString& code);
QString code();
void setInformation(const QString& information);
QString information();
qint32 pauseSecs();
QTime pause();
qint32 istSecs();
QTime ist();
void setSoll(const QTime& time);
qint32 sollSecs();
QTime soll();
qint32 diff();
QString diffString();
void setPrevDiff(qint32 diff);
qint32 prevDiff();
QString prevDiffString();
qint32 currentDiff();
QString currentDiffString();
qreal hoursDecimal();
void setVacation(qint16 vac);
qint16 vacation();
bool save();
private:
QDate m_date;
QTime 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;
QString m_code;
QString m_information;
QTime m_soll;
qint32 m_prevDiff;
qint16 m_vacation;
void bind(QSqlQuery& query, const QString& variable, const QTime& time);
int totalWork();
int totalPause();
};
Q_DECLARE_METATYPE(cBooking*)
class cBookingList : public QList<cBooking*>
{
public:
explicit cBookingList(cMonthlyBookingList* lpMonthlyBookingList, cPublicHoliday* lpPublicHoliday, cDailyWorkingList* lpDailyWorkingList, cVacationList* lpVacationList);
bool load();
cBooking* add(const QDate& date);
cBooking* find(const QDate& date);
void sort();
void recalculate(const QDate& date = QDate());
private:
cMonthlyBookingList* m_lpMonthlyBookingList;
cPublicHoliday* m_lpPublicHoliday;
cDailyWorkingList* m_lpDailyWorkingList;
cVacationList* m_lpVacationList;
};
#endif // CBOOKING_H