From 683def689af2a8a5dc3a0ffe9a5f80b21fce2857 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sun, 10 Dec 2017 16:52:30 +0100 Subject: [PATCH] Implemented CreateTimeAssignmentReply --- replies/createtimeassignmentreply.cpp | 65 +++++++++++++++++++++++++-- replies/createtimeassignmentreply.h | 9 ++++ zeiterfassungapi.cpp | 41 ----------------- 3 files changed, 71 insertions(+), 44 deletions(-) diff --git a/replies/createtimeassignmentreply.cpp b/replies/createtimeassignmentreply.cpp index 3c96db1..9ff1ec4 100644 --- a/replies/createtimeassignmentreply.cpp +++ b/replies/createtimeassignmentreply.cpp @@ -1,7 +1,66 @@ #include "createtimeassignmentreply.h" -CreateTimeAssignmentReply::CreateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) - : ZeiterfassungReply(zeiterfassung) -{ +#include +#include +#include +#include +#include +CreateTimeAssignmentReply::CreateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung) : + ZeiterfassungReply(zeiterfassung), + m_reply(reply), + m_timeAssignmentId(-1) +{ + connect(reply, &QNetworkReply::finished, this, &CreateTimeAssignmentReply::requestFinished); +} + +int CreateTimeAssignmentReply::timeAssignmentId() const +{ + return m_timeAssignmentId; +} + +void CreateTimeAssignmentReply::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/createtimeassignmentreply.h b/replies/createtimeassignmentreply.h index 4dfee66..bd9da80 100644 --- a/replies/createtimeassignmentreply.h +++ b/replies/createtimeassignmentreply.h @@ -11,6 +11,15 @@ class CreateTimeAssignmentReply : public ZeiterfassungReply public: CreateTimeAssignmentReply(QNetworkReply *reply, ZeiterfassungApi *zeiterfassung); + + int timeAssignmentId() const; + +private Q_SLOTS: + void requestFinished(); + +private: + QNetworkReply *m_reply; + int m_timeAssignmentId; }; #endif // CREATETIMEASSIGNMENTREPLY_H diff --git a/zeiterfassungapi.cpp b/zeiterfassungapi.cpp index 07666b4..cdd7abc 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::createTimeAssignmentRequestFinished() -{ - if(m_replies.createTimeAssignment->error() != QNetworkReply::NoError) - { - Q_EMIT createTimeAssignmentFinished(false, tr("Request error occured: %0").arg(m_replies.createTimeAssignment->error()), -1); - goto end; - } - - { - QJsonParseError error; - QJsonDocument document = QJsonDocument::fromJson(m_replies.createTimeAssignment->readAll(), &error); - if(error.error != QJsonParseError::NoError) - { - Q_EMIT createTimeAssignmentFinished(false, tr("Parsing JSON failed: %0").arg(error.errorString()), -1); - goto end; - } - - if(!document.isObject()) - { - Q_EMIT createTimeAssignmentFinished(false, tr("JSON document is not an object!"), -1); - goto end; - } - - auto obj = document.object(); - - if(!obj.contains(QStringLiteral("bookingNr"))) - { - Q_EMIT createTimeAssignmentFinished(false, tr("JSON does not contain bookingNr!"), -1); - goto end; - } - - auto timeAssignmentId = obj.value(QStringLiteral("bookingNr")).toInt(); - - Q_EMIT createTimeAssignmentFinished(true, QString(), timeAssignmentId); - } - - end: - m_replies.createTimeAssignment->deleteLater(); - m_replies.createTimeAssignment = Q_NULLPTR; -} - void ZeiterfassungApi::updateTimeAssignmentRequestFinished() { if(m_replies.updateTimeAssignment->error() != QNetworkReply::NoError)