From a1051eb53be00a54296574a80037568b5c2d5fa0 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sun, 10 Dec 2017 14:59:08 +0100 Subject: [PATCH] Implemented UpdateBookingReply --- replies/updatebookingreply.cpp | 60 ++++++++++++++++++++++++++++++++-- replies/updatebookingreply.h | 7 ++++ zeiterfassungapi.cpp | 41 ----------------------- 3 files changed, 64 insertions(+), 44 deletions(-) diff --git a/replies/updatebookingreply.cpp b/replies/updatebookingreply.cpp index 15cf110..59bc716 100644 --- a/replies/updatebookingreply.cpp +++ b/replies/updatebookingreply.cpp @@ -1,7 +1,61 @@ #include "updatebookingreply.h" -UpdateBookingReply::UpdateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) - : ZeiterfassungReply(zeiterfassung) -{ +#include +#include +#include +#include +#include +UpdateBookingReply::UpdateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : + ZeiterfassungReply(zeiterfassung), + m_reply(reply), + m_bookingId(-1) +{ + connect(reply, &QNetworkReply::finished, this, &UpdateBookingReply::requestFinished); +} + +void UpdateBookingReply::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_bookingId = obj.value(QStringLiteral("bookingNr")).toInt(); + } + + end: + m_reply->deleteLater(); + m_reply = Q_NULLPTR; + + Q_EMIT finished(); } diff --git a/replies/updatebookingreply.h b/replies/updatebookingreply.h index e993f69..a0fa90b 100644 --- a/replies/updatebookingreply.h +++ b/replies/updatebookingreply.h @@ -11,6 +11,13 @@ class UpdateBookingReply : public ZeiterfassungReply public: UpdateBookingReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + +private Q_SLOTS: + void requestFinished(); + +private: + QNetworkReply *m_reply; + int m_bookingId; }; #endif // UPDATEBOOKINGREPLY_H diff --git a/zeiterfassungapi.cpp b/zeiterfassungapi.cpp index fb91538..1ebbe5d 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::updateBookingRequestFinished() -{ - if(m_replies.updateBooking->error() != QNetworkReply::NoError) - { - Q_EMIT updateBookingFinished(false, tr("Request error occured: %0").arg(m_replies.updateBooking->error()), -1); - goto end; - } - - { - QJsonParseError error; - QJsonDocument document = QJsonDocument::fromJson(m_replies.updateBooking->readAll(), &error); - if(error.error != QJsonParseError::NoError) - { - Q_EMIT updateBookingFinished(false, tr("Parsing JSON failed: %0").arg(error.errorString()), -1); - goto end; - } - - if(!document.isObject()) - { - Q_EMIT updateBookingFinished(false, tr("JSON document is not an object!"), -1); - goto end; - } - - auto obj = document.object(); - - if(!obj.contains(QStringLiteral("bookingNr"))) - { - Q_EMIT updateBookingFinished(false, tr("JSON does not contain bookingNr!"), -1); - goto end; - } - - auto bookingId = obj.value(QStringLiteral("bookingNr")).toInt(); - - Q_EMIT updateBookingFinished(true, QString(), bookingId); - } - - end: - m_replies.updateBooking->deleteLater(); - m_replies.updateBooking = Q_NULLPTR; -} - void ZeiterfassungApi::deleteBookingRequestFinished() { if(m_replies.deleteBooking->error() != QNetworkReply::NoError)