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

View File

@@ -17,7 +17,8 @@ Zeiterfassung::Zeiterfassung(const QString &url, QObject *parent) :
m_url(url),
m_manager(new QNetworkAccessManager(this)),
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;
}
bool Zeiterfassung::doGetProjekte(int userId, QDate date)
bool Zeiterfassung::doGetProjekte(int userId, const QDate &date)
{
if(m_replies.getProjekte)
{
@@ -345,6 +346,26 @@ bool Zeiterfassung::doGetProjekte(int userId, QDate date)
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()
{
if(m_replies.loginPage->error() != QNetworkReply::NoError)
@@ -815,3 +836,38 @@ void Zeiterfassung::getProjekteRequestFinished()
m_replies.getProjekte->deleteLater();
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 QNetworkReply;
class QByteArray;
class Zeiterfassung : public QObject
{
@@ -78,7 +79,8 @@ public Q_SLOTS:
const QString &workpackage, const QString &text);
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:
void urlChanged(const QString &url);
@@ -98,6 +100,7 @@ Q_SIGNALS:
void deleteKontierungFinished(bool success, const QString &message);
void getProjekteFinished(bool success, const QString &message, const QVector<Projekt> &projekte);
void getAuswertungFinished(bool success, const QString &message, const QByteArray &content);
private Q_SLOTS:
void loginPageRequestFinished();
@@ -115,6 +118,8 @@ private Q_SLOTS:
void deleteKontierungRequestFinished();
void getProjekteRequestFinished();
void getAuswertungRequest0Finished();
void getAuswertungRequest1Finished();
private:
QString m_url;
@@ -136,6 +141,7 @@ private:
QNetworkReply *deleteKontierung;
QNetworkReply *getProjekte;
QNetworkReply *getAuswertung;
} m_replies;
};