Files

77 lines
2.2 KiB
C++
Raw Permalink Normal View History

2017-12-28 17:19:22 +01:00
#include "getabsencesreply.h"
2017-12-29 01:58:15 +01:00
#include <QDebug>
#include <QJsonParseError>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonValue>
#include <QJsonObject>
#include "zeiterfassungapi.h"
2017-12-28 17:19:22 +01:00
GetAbsencesReply::GetAbsencesReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung) :
ZeiterfassungReply(zeiterfassung),
m_reply(std::move(reply))
{
connect(m_reply.get(), &QNetworkReply::finished, this, &GetAbsencesReply::requestFinished);
}
2017-12-29 02:21:34 +01:00
const QVector<GetAbsencesReply::Absence> &GetAbsencesReply::absences() const
2017-12-28 17:19:22 +01:00
{
return m_absences;
}
void GetAbsencesReply::requestFinished()
{
2017-12-29 01:58:15 +01:00
if(m_reply->error() != QNetworkReply::NoError)
{
setSuccess(false);
setMessage(tr("Request error occured: %0").arg(m_reply->errorString()));
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.isArray())
{
setSuccess(false);
setMessage(tr("JSON document is not an array!"));
goto end;
}
auto arr = document.array();
setSuccess(true);
m_absences.clear();
m_absences.reserve(arr.count());
for(const auto &val : arr)
{
auto obj = val.toObject();
m_absences.append({
obj.value(QStringLiteral("altRepresentative")).toInt(),
obj.value(QStringLiteral("compositeId")).toString(),
2018-05-25 20:17:48 +02:00
parseDate(obj.value(QStringLiteral("end"))),
2017-12-29 01:58:15 +01:00
obj.value(QStringLiteral("hourCategory")).toString(),
obj.value(QStringLiteral("openMarking")).toString(),
obj.value(QStringLiteral("persNr")).toInt(),
obj.value(QStringLiteral("representative")).toInt(),
2018-05-25 20:17:48 +02:00
parseDate(obj.value(QStringLiteral("start"))),
2017-12-29 01:58:15 +01:00
obj.value(QStringLiteral("text")).toString()
});
}
}
end:
m_reply = Q_NULLPTR;
Q_EMIT finished();
2017-12-28 17:19:22 +01:00
}