diff --git a/zeiterfassungcorelib/replies/createabsencereply.cpp b/zeiterfassungcorelib/replies/createabsencereply.cpp new file mode 100644 index 0000000..9ae1a22 --- /dev/null +++ b/zeiterfassungcorelib/replies/createabsencereply.cpp @@ -0,0 +1,59 @@ +#include "createabsencereply.h" + +#include +#include +#include +#include + +CreateAbsenceReply::CreateAbsenceReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : + ZeiterfassungReply(zeiterfassung), + m_reply(std::move(reply)) +{ + connect(m_reply.get(), &QNetworkReply::finished, this, &CreateAbsenceReply::requestFinished); +} + +void CreateAbsenceReply::requestFinished() +{ + 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.isObject()) + { + setSuccess(false); + setMessage(tr("JSON document is not an array!")); + goto end; + } + + auto obj = document.object(); + + if(!obj.contains(QStringLiteral("compositeId"))) + { + setSuccess(false); + setMessage(tr("JSON does not contain compositeId!")); + goto end; + } + + m_compositeId = obj.value(QStringLiteral("compositeId")).toString(); + + setSuccess(true); + } + + end: + m_reply = Q_NULLPTR; + + Q_EMIT finished(); +} diff --git a/zeiterfassungcorelib/replies/createabsencereply.h b/zeiterfassungcorelib/replies/createabsencereply.h new file mode 100644 index 0000000..fdc8f5f --- /dev/null +++ b/zeiterfassungcorelib/replies/createabsencereply.h @@ -0,0 +1,26 @@ +#pragma once + +#include + +#include + +#include "zeiterfassungcorelib_global.h" +#include "zeiterfassungreply.h" + +class ZEITERFASSUNGCORELIBSHARED_EXPORT CreateAbsenceReply : public ZeiterfassungReply +{ + Q_OBJECT + +public: + explicit CreateAbsenceReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung); + + const QString &compositeId() const; + +private Q_SLOTS: + void requestFinished(); + +private: + std::unique_ptr m_reply; + + QString m_compositeId; +}; diff --git a/zeiterfassungcorelib/replies/deletebookingreply.cpp b/zeiterfassungcorelib/replies/deletebookingreply.cpp index f16916c..d7163c6 100644 --- a/zeiterfassungcorelib/replies/deletebookingreply.cpp +++ b/zeiterfassungcorelib/replies/deletebookingreply.cpp @@ -17,7 +17,6 @@ void DeleteBookingReply::requestFinished() } //should be empty, so nothing to check... - setSuccess(true); end: diff --git a/zeiterfassungcorelib/replies/gettimeassignmentsreply.cpp b/zeiterfassungcorelib/replies/gettimeassignmentsreply.cpp index 57b272c..c50a9eb 100644 --- a/zeiterfassungcorelib/replies/gettimeassignmentsreply.cpp +++ b/zeiterfassungcorelib/replies/gettimeassignmentsreply.cpp @@ -1,6 +1,5 @@ #include "gettimeassignmentsreply.h" -#include #include #include #include diff --git a/zeiterfassungcorelib/replies/loginpagereply.cpp b/zeiterfassungcorelib/replies/loginpagereply.cpp index 1157581..154f485 100644 --- a/zeiterfassungcorelib/replies/loginpagereply.cpp +++ b/zeiterfassungcorelib/replies/loginpagereply.cpp @@ -1,7 +1,5 @@ #include "loginpagereply.h" -#include - LoginPageReply::LoginPageReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), m_reply(std::move(reply)) diff --git a/zeiterfassungcorelib/replies/loginreply.cpp b/zeiterfassungcorelib/replies/loginreply.cpp index abc64ca..bc62361 100644 --- a/zeiterfassungcorelib/replies/loginreply.cpp +++ b/zeiterfassungcorelib/replies/loginreply.cpp @@ -1,7 +1,5 @@ #include "loginreply.h" -#include - LoginReply::LoginReply(std::unique_ptr &&reply, ZeiterfassungApi *zeiterfassung) : ZeiterfassungReply(zeiterfassung), m_reply(std::move(reply)) diff --git a/zeiterfassungcorelib/zeiterfassungapi.h b/zeiterfassungcorelib/zeiterfassungapi.h index 17602ba..a4bdfbb 100644 --- a/zeiterfassungcorelib/zeiterfassungapi.h +++ b/zeiterfassungcorelib/zeiterfassungapi.h @@ -66,6 +66,7 @@ public: std::unique_ptr doGetProjects(int userId, const QDate &date); std::unique_ptr doGetReport(int userId, const QDate &date); std::unique_ptr doGetPresenceStatus(); + std::unique_ptr doGetAbsences(int userId, const QDate &start, const QDate &end); std::unique_ptr doGetDayinfo(int userId, const QDate &start, const QDate &end); diff --git a/zeiterfassungcorelib/zeiterfassungcorelib.pro b/zeiterfassungcorelib/zeiterfassungcorelib.pro index 80c924d..51a79a2 100644 --- a/zeiterfassungcorelib/zeiterfassungcorelib.pro +++ b/zeiterfassungcorelib/zeiterfassungcorelib.pro @@ -11,6 +11,7 @@ DEFINES += ZEITERFASSUNGCORELIB_LIBRARY SOURCES += timeutils.cpp \ zeiterfassungapi.cpp \ zeiterfassungsettings.cpp \ + replies/createabsencereply.cpp \ replies/createbookingreply.cpp \ replies/createtimeassignmentreply.cpp \ replies/deletebookingreply.cpp \ @@ -34,6 +35,7 @@ HEADERS += cpp14polyfills.h \ zeiterfassungapi.h \ zeiterfassungcorelib_global.h \ zeiterfassungsettings.h \ + replies/createabsencereply.h \ replies/createbookingreply.h \ replies/createtimeassignmentreply.h \ replies/deletebookingreply.h \