Files
QtZeiterfassung/replies/createbookingreply.cpp
T

65 lines
1.6 KiB
C++
Raw Permalink Normal View History

2017-12-10 11:56:00 +01:00
#include "createbookingreply.h"
2017-12-10 14:55:12 +01:00
#include <QJsonParseError>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
2017-12-10 11:56:00 +01:00
CreateBookingReply::CreateBookingReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung) :
2017-12-10 14:55:12 +01:00
ZeiterfassungReply(zeiterfassung),
m_reply(std::move(reply)),
2017-12-10 14:55:12 +01:00
m_bookingId(-1)
{
connect(m_reply.get(), &QNetworkReply::finished, this, &CreateBookingReply::requestFinished);
2017-12-10 14:55:12 +01:00
}
int CreateBookingReply::bookingId() const
{
return m_bookingId;
}
void CreateBookingReply::requestFinished()
{
2017-12-10 21:08:19 +01:00
if(m_reply->error() != QNetworkReply::NoError)
2017-12-10 14:55:12 +01:00
{
setSuccess(false);
2017-12-10 21:08:19 +01:00
setMessage(tr("Request error occured: %0").arg(m_reply->error()));
2017-12-10 14:55:12 +01:00
goto end;
}
{
QJsonParseError error;
2017-12-10 21:08:19 +01:00
QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll(), &error);
2017-12-10 14:55:12 +01:00
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:
2017-12-10 21:08:19 +01:00
m_reply = Q_NULLPTR;
2017-12-10 14:55:12 +01:00
Q_EMIT finished();
2017-12-10 11:56:00 +01:00
}