API now supports Auswertung

This commit is contained in:
0xFEEDC0DE64
2017-12-02 18:25:32 +01:00
parent fbf9fc65af
commit 4fabede99d
3 changed files with 68 additions and 4 deletions

View File

@@ -55,7 +55,7 @@ MainWindow::MainWindow(QSettings &settings, Zeiterfassung &erfassung, const Zeit
connect(&m_erfassung, &Zeiterfassung::getProjekteFinished, connect(&m_erfassung, &Zeiterfassung::getProjekteFinished,
this, &MainWindow::getProjekteFinished); this, &MainWindow::getProjekteFinished);
erfassung.doGetProjekte(userInfo.userId); erfassung.doGetProjekte(userInfo.userId, QDate::currentDate());
ui->comboBoxProjekt->setMaxVisibleItems(10); ui->comboBoxProjekt->setMaxVisibleItems(10);
@@ -75,6 +75,8 @@ MainWindow::MainWindow(QSettings &settings, Zeiterfassung &erfassung, const Zeit
this, &MainWindow::contextMenuBuchung); this, &MainWindow::contextMenuBuchung);
connect(ui->treeViewKontierungen, &QWidget::customContextMenuRequested, connect(ui->treeViewKontierungen, &QWidget::customContextMenuRequested,
this, &MainWindow::contextMenuKontierung); this, &MainWindow::contextMenuKontierung);
erfassung.doGetAuswertung(userInfo.userId, QDate::currentDate());
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()

View File

@@ -17,7 +17,8 @@ Zeiterfassung::Zeiterfassung(const QString &url, QObject *parent) :
m_url(url), m_url(url),
m_manager(new QNetworkAccessManager(this)), m_manager(new QNetworkAccessManager(this)),
m_replies { Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, m_replies { Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR,
Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR } Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR,
Q_NULLPTR }
{ {
} }
@@ -325,7 +326,7 @@ bool Zeiterfassung::doDeleteKontierung(int kontierungId)
return true; return true;
} }
bool Zeiterfassung::doGetProjekte(int userId, QDate date) bool Zeiterfassung::doGetProjekte(int userId, const QDate &date)
{ {
if(m_replies.getProjekte) if(m_replies.getProjekte)
{ {
@@ -345,6 +346,26 @@ bool Zeiterfassung::doGetProjekte(int userId, QDate date)
return true; return true;
} }
bool Zeiterfassung::doGetAuswertung(int userId, const QDate &date)
{
if(m_replies.getAuswertung)
{
qWarning() << "another getAuswertung already processing!";
return false;
}
QNetworkRequest request(QUrl(QStringLiteral("%0json/auswertung/month?persNr=%1&date=%2")
.arg(m_url)
.arg(userId)
.arg(date.toString(QStringLiteral("yyyyMMdd")))));
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
m_replies.getAuswertung = m_manager->get(request);
connect(m_replies.getAuswertung, &QNetworkReply::finished, this, &Zeiterfassung::getAuswertungRequest0Finished);
return true;
}
void Zeiterfassung::loginPageRequestFinished() void Zeiterfassung::loginPageRequestFinished()
{ {
if(m_replies.loginPage->error() != QNetworkReply::NoError) if(m_replies.loginPage->error() != QNetworkReply::NoError)
@@ -815,3 +836,38 @@ void Zeiterfassung::getProjekteRequestFinished()
m_replies.getProjekte->deleteLater(); m_replies.getProjekte->deleteLater();
m_replies.getProjekte = Q_NULLPTR; m_replies.getProjekte = Q_NULLPTR;
} }
void Zeiterfassung::getAuswertungRequest0Finished()
{
if(m_replies.getAuswertung->error() != QNetworkReply::NoError)
{
Q_EMIT getAuswertungFinished(false, tr("Request error occured: %0").arg(m_replies.getProjekte->error()), QByteArray());
m_replies.getAuswertung->deleteLater();
m_replies.getAuswertung = Q_NULLPTR;
return;
}
QUrl url(m_url);
url.setPath(QString(m_replies.getAuswertung->readAll()));
m_replies.getAuswertung->deleteLater();
m_replies.getAuswertung = m_manager->get(QNetworkRequest(url));
connect(m_replies.getAuswertung, &QNetworkReply::finished,
this, &Zeiterfassung::getAuswertungRequest1Finished);
}
void Zeiterfassung::getAuswertungRequest1Finished()
{
if(m_replies.getProjekte->error() != QNetworkReply::NoError)
{
Q_EMIT getAuswertungFinished(false, tr("Request error occured: %0").arg(m_replies.getProjekte->error()), QByteArray());
goto end;
}
Q_EMIT getAuswertungFinished(true, QString(), m_replies.getProjekte->readAll());
end:
m_replies.getProjekte->deleteLater();
m_replies.getProjekte = Q_NULLPTR;
}

View File

@@ -8,6 +8,7 @@
class QNetworkAccessManager; class QNetworkAccessManager;
class QNetworkReply; class QNetworkReply;
class QByteArray;
class Zeiterfassung : public QObject class Zeiterfassung : public QObject
{ {
@@ -78,7 +79,8 @@ public Q_SLOTS:
const QString &workpackage, const QString &text); const QString &workpackage, const QString &text);
bool doDeleteKontierung(int kontierungId); bool doDeleteKontierung(int kontierungId);
bool doGetProjekte(int userId, QDate date = QDate::currentDate()); bool doGetProjekte(int userId, const QDate &date);
bool doGetAuswertung(int userId, const QDate &date);
Q_SIGNALS: Q_SIGNALS:
void urlChanged(const QString &url); void urlChanged(const QString &url);
@@ -98,6 +100,7 @@ Q_SIGNALS:
void deleteKontierungFinished(bool success, const QString &message); void deleteKontierungFinished(bool success, const QString &message);
void getProjekteFinished(bool success, const QString &message, const QVector<Projekt> &projekte); void getProjekteFinished(bool success, const QString &message, const QVector<Projekt> &projekte);
void getAuswertungFinished(bool success, const QString &message, const QByteArray &content);
private Q_SLOTS: private Q_SLOTS:
void loginPageRequestFinished(); void loginPageRequestFinished();
@@ -115,6 +118,8 @@ private Q_SLOTS:
void deleteKontierungRequestFinished(); void deleteKontierungRequestFinished();
void getProjekteRequestFinished(); void getProjekteRequestFinished();
void getAuswertungRequest0Finished();
void getAuswertungRequest1Finished();
private: private:
QString m_url; QString m_url;
@@ -136,6 +141,7 @@ private:
QNetworkReply *deleteKontierung; QNetworkReply *deleteKontierung;
QNetworkReply *getProjekte; QNetworkReply *getProjekte;
QNetworkReply *getAuswertung;
} m_replies; } m_replies;
}; };