From 89bbd3d6d29c3a3758e408b2c5d04681d2cf0dd3 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sun, 10 Dec 2017 16:56:57 +0100 Subject: [PATCH] Implemented UpdateTimeAssignmentReply --- replies/updatetimeassignmentreply.cpp | 65 +++++++++++++++++++++++++-- replies/updatetimeassignmentreply.h | 9 ++++ zeiterfassungapi.cpp | 41 ----------------- 3 files changed, 71 insertions(+), 44 deletions(-) diff --git a/replies/updatetimeassignmentreply.cpp b/replies/updatetimeassignmentreply.cpp index a52f20c..c33bdb9 100644 --- a/replies/updatetimeassignmentreply.cpp +++ b/replies/updatetimeassignmentreply.cpp @@ -1,7 +1,66 @@ #include "updatetimeassignmentreply.h" -UpdateTimeAssignmentReply::UpdateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) - : ZeiterfassungReply(zeiterfassung) -{ +#include +#include +#include +#include +#include +UpdateTimeAssignmentReply::UpdateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : + ZeiterfassungReply(zeiterfassung), + m_reply(reply), + m_timeAssignmentId(-1) +{ + connect(reply, &QNetworkReply::finished, this, &UpdateTimeAssignmentReply::requestFinished); +} + +int UpdateTimeAssignmentReply::timeAssignmentId() const +{ + return m_timeAssignmentId; +} + +void UpdateTimeAssignmentReply::requestFinished() +{ + if(m_reply->error() != QNetworkReply::NoError) + { + setSuccess(false); + setMessage(tr("Request error occured: %0").arg(m_reply->error())); + goto end; + } + + { + QJsonParseError error; + QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll(), &error); + if(error.error != QJsonParseError::NoError) + { + setSuccess(false); + setMessage(tr("Parsing JSON failed: %0").arg(error.errorString())); + goto end; + } + + if(!document.isObject()) + { + setSuccess(false); + setMessage(tr("JSON document is not an object!")); + goto end; + } + + auto obj = document.object(); + + if(!obj.contains(QStringLiteral("bookingNr"))) + { + setSuccess(false); + setMessage(tr("JSON does not contain bookingNr!")); + goto end; + } + + setSuccess(true); + m_timeAssignmentId = obj.value(QStringLiteral("bookingNr")).toInt(); + } + + end: + m_reply->deleteLater(); + m_reply = Q_NULLPTR; + + Q_EMIT finished(); } diff --git a/replies/updatetimeassignmentreply.h b/replies/updatetimeassignmentreply.h index 52753cc..d053315 100644 --- a/replies/updatetimeassignmentreply.h +++ b/replies/updatetimeassignmentreply.h @@ -11,6 +11,15 @@ class UpdateTimeAssignmentReply : public ZeiterfassungReply public: UpdateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + + int timeAssignmentId() const; + +private Q_SLOTS: + void requestFinished(); + +private: + QNetworkReply *m_reply; + int m_timeAssignmentId; }; #endif // UPDATETIMEASSIGNMENTREPLY_H diff --git a/zeiterfassungapi.cpp b/zeiterfassungapi.cpp index cdd7abc..d29f016 100644 --- a/zeiterfassungapi.cpp +++ b/zeiterfassungapi.cpp @@ -291,47 +291,6 @@ GetAuswertungReply *ZeiterfassungApi::doGetAuswertung(int userId, const QDate &d return new GetAuswertungReply(reply, this); } -void ZeiterfassungApi::updateTimeAssignmentRequestFinished() -{ - if(m_replies.updateTimeAssignment->error() != QNetworkReply::NoError) - { - Q_EMIT updateTimeAssignmentFinished(false, tr("Request error occured: %0").arg(m_replies.updateTimeAssignment->error()), -1); - goto end; - } - - { - QJsonParseError error; - QJsonDocument document = QJsonDocument::fromJson(m_replies.updateTimeAssignment->readAll(), &error); - if(error.error != QJsonParseError::NoError) - { - Q_EMIT updateTimeAssignmentFinished(false, tr("Parsing JSON failed: %0").arg(error.errorString()), -1); - goto end; - } - - if(!document.isObject()) - { - Q_EMIT updateTimeAssignmentFinished(false, tr("JSON document is not an object!"), 0); - goto end; - } - - auto obj = document.object(); - - if(!obj.contains(QStringLiteral("bookingNr"))) - { - Q_EMIT updateTimeAssignmentFinished(false, tr("JSON does not contain bookingNr!"), 0); - goto end; - } - - auto timeAssignmentId = obj.value(QStringLiteral("bookingNr")).toInt(); - - Q_EMIT updateTimeAssignmentFinished(true, QString(), timeAssignmentId); - } - - end: - m_replies.updateTimeAssignment->deleteLater(); - m_replies.updateTimeAssignment = Q_NULLPTR; -} - void ZeiterfassungApi::deleteTimeAssignmentRequestFinished() { if(m_replies.deleteTimeAssignment->error() != QNetworkReply::NoError)