Devel #56
@@ -4,14 +4,21 @@
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonValue>
|
||||
#include <QJsonArray>
|
||||
|
||||
#include "zeiterfassungapi.h"
|
||||
|
||||
GetUserInfoReply::GetUserInfoReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung) :
|
||||
GetUserInfoReply::GetUserInfoReply(std::unique_ptr<QNetworkReply> &&reply0, std::unique_ptr<QNetworkReply> &&reply1,
|
||||
ZeiterfassungApi *zeiterfassung) :
|
||||
ZeiterfassungReply(zeiterfassung),
|
||||
m_reply(std::move(reply))
|
||||
m_reply0(std::move(reply0)),
|
||||
m_reply1(std::move(reply1))
|
||||
{
|
||||
connect(m_reply.get(), &QNetworkReply::finished, this, &GetUserInfoReply::requestFinished);
|
||||
Q_ASSERT(m_reply0 != Q_NULLPTR);
|
||||
Q_ASSERT(m_reply1 != Q_NULLPTR);
|
||||
|
||||
connect(m_reply0.get(), &QNetworkReply::finished, this, &GetUserInfoReply::request0Finished);
|
||||
connect(m_reply1.get(), &QNetworkReply::finished, this, &GetUserInfoReply::request1Finished);
|
||||
}
|
||||
|
||||
const GetUserInfoReply::UserInfo &GetUserInfoReply::userInfo() const
|
||||
@@ -19,29 +26,32 @@ const GetUserInfoReply::UserInfo &GetUserInfoReply::userInfo() const
|
||||
return m_userInfo;
|
||||
}
|
||||
|
||||
void GetUserInfoReply::requestFinished()
|
||||
void GetUserInfoReply::request0Finished()
|
||||
{
|
||||
if(m_reply->error() != QNetworkReply::NoError)
|
||||
if(m_reply0->error() != QNetworkReply::NoError)
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("Request error occured: %0").arg(m_reply->error()));
|
||||
setMessage(tr("Request 0 error occured: %0").arg(m_reply0->error()));
|
||||
m_reply1 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
{
|
||||
QJsonParseError error;
|
||||
auto document = QJsonDocument::fromJson(m_reply->readAll(), &error);
|
||||
auto document = QJsonDocument::fromJson(m_reply0->readAll(), &error);
|
||||
if(error.error != QJsonParseError::NoError)
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("Parsing JSON failed: %0").arg(error.errorString()));
|
||||
setMessage(tr("Parsing JSON 0 failed: %0").arg(error.errorString()));
|
||||
m_reply1 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if(!document.isObject())
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON document is not an object!"));
|
||||
setMessage(tr("JSON document 0 is not an object!"));
|
||||
m_reply1 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -50,7 +60,8 @@ void GetUserInfoReply::requestFinished()
|
||||
if(!rootObj.contains(QStringLiteral("evoAppsUser")))
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON does not contain evoAppsUser!"));
|
||||
setMessage(tr("JSON 0 does not contain evoAppsUser!"));
|
||||
m_reply1 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
@@ -60,23 +71,100 @@ void GetUserInfoReply::requestFinished()
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("evoAppsUser is not an object!"));
|
||||
m_reply1 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
auto evoAppsUserObj = evoAppsUser.toObject();
|
||||
|
||||
setSuccess(true);
|
||||
m_userInfo = {
|
||||
evoAppsUserObj.value(QStringLiteral("persNr")).toInt(),
|
||||
evoAppsUserObj.value(QStringLiteral("email")).toString(),
|
||||
evoAppsUserObj.value(QStringLiteral("longUsername")).toString(),
|
||||
evoAppsUserObj.value(QStringLiteral("text")).toString(),
|
||||
evoAppsUserObj.value(QStringLiteral("username")).toString()
|
||||
};
|
||||
if(!m_reply1)
|
||||
setSuccess(true);
|
||||
|
||||
m_userInfo.userId = evoAppsUserObj.value(QStringLiteral("persNr")).toInt();
|
||||
m_userInfo.email = evoAppsUserObj.value(QStringLiteral("email")).toString();
|
||||
m_userInfo.longUsername = evoAppsUserObj.value(QStringLiteral("longUsername")).toString();
|
||||
m_userInfo.text = evoAppsUserObj.value(QStringLiteral("text")).toString();
|
||||
m_userInfo.username = evoAppsUserObj.value(QStringLiteral("username")).toString();
|
||||
}
|
||||
|
||||
end:
|
||||
m_reply = Q_NULLPTR;
|
||||
m_reply0 = Q_NULLPTR;
|
||||
|
||||
Q_EMIT finished();
|
||||
if(!m_reply1)
|
||||
Q_EMIT finished();
|
||||
}
|
||||
|
||||
void GetUserInfoReply::request1Finished()
|
||||
{
|
||||
if(m_reply1->error() != QNetworkReply::NoError)
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("Request 1 error occured: %0").arg(m_reply0->error()));
|
||||
m_reply0 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
{
|
||||
QJsonParseError error;
|
||||
auto document = QJsonDocument::fromJson(m_reply1->readAll(), &error);
|
||||
if(error.error != QJsonParseError::NoError)
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("Parsing JSON 1 failed: %0").arg(error.errorString()));
|
||||
m_reply0 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if(!document.isArray())
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON document 1 is not an array!"));
|
||||
m_reply0 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
auto arr = document.array();
|
||||
|
||||
if(arr.isEmpty())
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON array 1 is empty!"));
|
||||
m_reply0 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
auto first = arr.first();
|
||||
|
||||
if(!first.isObject())
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON array value is not an object!"));
|
||||
m_reply0 = Q_NULLPTR;
|
||||
goto end;
|
||||
}
|
||||
|
||||
auto obj = first.toObject();
|
||||
|
||||
if(!m_reply0)
|
||||
setSuccess(true);
|
||||
|
||||
m_userInfo.gemeinde = obj.value(QStringLiteral("gemeinde")).toString();
|
||||
m_userInfo.ort = obj.value(QStringLiteral("ort")).toString();
|
||||
m_userInfo.angFrom = QDate::fromString(QString::number(obj.value(QStringLiteral("angFrom")).toInt()), QStringLiteral("yyyyMMdd"));
|
||||
m_userInfo.angTill = QDate::fromString(QString::number(obj.value(QStringLiteral("angTill")).toInt()), QStringLiteral("yyyyMMdd"));
|
||||
m_userInfo.gebOrt = obj.value(QStringLiteral("gebOrt")).toString();
|
||||
m_userInfo.plz = obj.value(QStringLiteral("plz")).toString();
|
||||
m_userInfo.religion = obj.value(QStringLiteral("religion")).toString();
|
||||
m_userInfo.bereich = obj.value(QStringLiteral("bereich")).toString();
|
||||
m_userInfo.verwendgr = obj.value(QStringLiteral("verwendgr")).toString();
|
||||
m_userInfo.taetig = obj.value(QStringLiteral("taetig")).toString();
|
||||
m_userInfo.arbverh = obj.value(QStringLiteral("arbverh")).toString();
|
||||
m_userInfo.betriebsnr = obj.value(QStringLiteral("betriebsnr")).toString();
|
||||
}
|
||||
|
||||
end:
|
||||
m_reply1 = Q_NULLPTR;
|
||||
|
||||
if(!m_reply0)
|
||||
Q_EMIT finished();
|
||||
}
|
||||
|
@@ -15,7 +15,8 @@ class ZEITERFASSUNGLIBSHARED_EXPORT GetUserInfoReply : public ZeiterfassungReply
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GetUserInfoReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung);
|
||||
GetUserInfoReply(std::unique_ptr<QNetworkReply> &&reply0, std::unique_ptr<QNetworkReply> &&reply1,
|
||||
ZeiterfassungApi *zeiterfassung);
|
||||
|
||||
struct UserInfo
|
||||
{
|
||||
@@ -24,15 +25,29 @@ public:
|
||||
QString longUsername;
|
||||
QString text;
|
||||
QString username;
|
||||
QString gemeinde;
|
||||
QString ort;
|
||||
QDate angFrom;
|
||||
QDate angTill;
|
||||
QString gebOrt;
|
||||
QString plz;
|
||||
QString religion;
|
||||
QString bereich;
|
||||
QString verwendgr;
|
||||
QString taetig;
|
||||
QString arbverh;
|
||||
QString betriebsnr;
|
||||
};
|
||||
|
||||
const UserInfo &userInfo() const;
|
||||
|
||||
private Q_SLOTS:
|
||||
void requestFinished();
|
||||
void request0Finished();
|
||||
void request1Finished();
|
||||
|
||||
private:
|
||||
std::unique_ptr<QNetworkReply> m_reply;
|
||||
std::unique_ptr<QNetworkReply> m_reply0;
|
||||
std::unique_ptr<QNetworkReply> m_reply1;
|
||||
UserInfo m_userInfo;
|
||||
};
|
||||
|
||||
|
@@ -53,9 +53,7 @@ std::unique_ptr<LoginPageReply> ZeiterfassungApi::doLoginPage()
|
||||
{
|
||||
QNetworkRequest request(QUrl(m_url % "pages/login.jsp"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<LoginPageReply>(std::move(reply), this);
|
||||
return std::make_unique<LoginPageReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<LoginReply> ZeiterfassungApi::doLogin(const QString &username, const QString &password)
|
||||
@@ -66,19 +64,19 @@ std::unique_ptr<LoginReply> ZeiterfassungApi::doLogin(const QString &username, c
|
||||
|
||||
auto data = QStringLiteral("j_username=%0&j_password=%1&login=Anmelden").arg(username).arg(password).toUtf8();
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->post(request, data));
|
||||
|
||||
return std::make_unique<LoginReply>(std::move(reply), this);
|
||||
return std::make_unique<LoginReply>(std::unique_ptr<QNetworkReply>(m_manager->post(request, data)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetUserInfoReply> ZeiterfassungApi::doUserInfo()
|
||||
{
|
||||
QNetworkRequest request(QUrl(m_url % "json/evoAppsUserInfoDialogController/load-EvoAppsUserInfoTO"));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("home"));
|
||||
QNetworkRequest request0(QUrl(m_url % "json/evoAppsUserInfoDialogController/load-EvoAppsUserInfoTO"));
|
||||
request0.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("home"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
QNetworkRequest request1(QUrl(m_url % "json/persons"));
|
||||
request1.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
return std::make_unique<GetUserInfoReply>(std::move(reply), this);
|
||||
return std::make_unique<GetUserInfoReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request0)),
|
||||
std::unique_ptr<QNetworkReply>(m_manager->get(request1)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetBookingsReply> ZeiterfassungApi::doGetBookings(int userId, const QDate &start, const QDate &end)
|
||||
@@ -90,9 +88,7 @@ std::unique_ptr<GetBookingsReply> ZeiterfassungApi::doGetBookings(int userId, co
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<GetBookingsReply>(std::move(reply), this);
|
||||
return std::make_unique<GetBookingsReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<CreateBookingReply> ZeiterfassungApi::doCreateBooking(int userId, const QDate &date, const QTime &time, const QTime ×pan,
|
||||
@@ -114,9 +110,9 @@ std::unique_ptr<CreateBookingReply> ZeiterfassungApi::doCreateBooking(int userId
|
||||
obj[QStringLiteral("einstuf")] = QStringLiteral("");
|
||||
obj[QStringLiteral("text")] = text;
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->post(request, QJsonDocument(obj).toJson()));
|
||||
auto data = QJsonDocument(obj).toJson();
|
||||
|
||||
return std::make_unique<CreateBookingReply>(std::move(reply), this);
|
||||
return std::make_unique<CreateBookingReply>(std::unique_ptr<QNetworkReply>(m_manager->post(request, data)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<UpdateBookingReply> ZeiterfassungApi::doUpdateBooking(int bookingId, int userId, const QDate &date, const QTime &time,
|
||||
@@ -140,9 +136,7 @@ std::unique_ptr<UpdateBookingReply> ZeiterfassungApi::doUpdateBooking(int bookin
|
||||
|
||||
auto data = QJsonDocument(obj).toJson();
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->put(request, data));
|
||||
|
||||
return std::make_unique<UpdateBookingReply>(std::move(reply), this);
|
||||
return std::make_unique<UpdateBookingReply>(std::unique_ptr<QNetworkReply>(m_manager->put(request, data)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<DeleteBookingReply> ZeiterfassungApi::doDeleteBooking(int bookingId)
|
||||
@@ -152,9 +146,7 @@ std::unique_ptr<DeleteBookingReply> ZeiterfassungApi::doDeleteBooking(int bookin
|
||||
.arg(bookingId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->deleteResource(request));
|
||||
|
||||
return std::make_unique<DeleteBookingReply>(std::move(reply), this);
|
||||
return std::make_unique<DeleteBookingReply>(std::unique_ptr<QNetworkReply>(m_manager->deleteResource(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetTimeAssignmentsReply> ZeiterfassungApi::doGetTimeAssignments(int userId, const QDate &start, const QDate &end)
|
||||
@@ -166,9 +158,7 @@ std::unique_ptr<GetTimeAssignmentsReply> ZeiterfassungApi::doGetTimeAssignments(
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<GetTimeAssignmentsReply>(std::move(reply), this);
|
||||
return std::make_unique<GetTimeAssignmentsReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<CreateTimeAssignmentReply> ZeiterfassungApi::doCreateTimeAssignment(int userId, const QDate &date, const QTime &time,
|
||||
@@ -209,9 +199,7 @@ std::unique_ptr<CreateTimeAssignmentReply> ZeiterfassungApi::doCreateTimeAssignm
|
||||
|
||||
auto data = QJsonDocument(obj).toJson();
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->post(request, data));
|
||||
|
||||
return std::make_unique<CreateTimeAssignmentReply>(std::move(reply), this);
|
||||
return std::make_unique<CreateTimeAssignmentReply>(std::unique_ptr<QNetworkReply>(m_manager->post(request, data)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<UpdateTimeAssignmentReply> ZeiterfassungApi::doUpdateTimeAssignment(int timeAssignmentId, int userId, const QDate &date,
|
||||
@@ -257,9 +245,7 @@ std::unique_ptr<UpdateTimeAssignmentReply> ZeiterfassungApi::doUpdateTimeAssignm
|
||||
|
||||
auto data = QJsonDocument(obj).toJson();
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->put(request, data));
|
||||
|
||||
return std::make_unique<UpdateTimeAssignmentReply>(std::move(reply), this);
|
||||
return std::make_unique<UpdateTimeAssignmentReply>(std::unique_ptr<QNetworkReply>(m_manager->put(request, data)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<DeleteTimeAssignmentReply> ZeiterfassungApi::doDeleteTimeAssignment(int timeAssignmentId)
|
||||
@@ -269,9 +255,7 @@ std::unique_ptr<DeleteTimeAssignmentReply> ZeiterfassungApi::doDeleteTimeAssignm
|
||||
.arg(timeAssignmentId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->deleteResource(request));
|
||||
|
||||
return std::make_unique<DeleteTimeAssignmentReply>(std::move(reply), this);
|
||||
return std::make_unique<DeleteTimeAssignmentReply>(std::unique_ptr<QNetworkReply>(m_manager->deleteResource(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetProjectsReply> ZeiterfassungApi::doGetProjects(int userId, const QDate &date)
|
||||
@@ -282,9 +266,7 @@ std::unique_ptr<GetProjectsReply> ZeiterfassungApi::doGetProjects(int userId, co
|
||||
.arg(date.toString(QStringLiteral("yyyyMMdd")))));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<GetProjectsReply>(std::move(reply), this);
|
||||
return std::make_unique<GetProjectsReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetReportReply> ZeiterfassungApi::doGetReport(int userId, const QDate &date)
|
||||
@@ -295,9 +277,7 @@ std::unique_ptr<GetReportReply> ZeiterfassungApi::doGetReport(int userId, const
|
||||
.arg(date.toString(QStringLiteral("yyyyMMdd")))));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<GetReportReply>(std::move(reply), this);
|
||||
return std::make_unique<GetReportReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetPresenceStatusReply> ZeiterfassungApi::doGetPresenceStatus()
|
||||
@@ -305,7 +285,5 @@ std::unique_ptr<GetPresenceStatusReply> ZeiterfassungApi::doGetPresenceStatus()
|
||||
QNetworkRequest request(QUrl(m_url % "json/presencestatus"));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("presenceStatus"));
|
||||
|
||||
auto reply = std::unique_ptr<QNetworkReply>(m_manager->get(request));
|
||||
|
||||
return std::make_unique<GetPresenceStatusReply>(std::move(reply), this);
|
||||
return std::make_unique<GetPresenceStatusReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
Reference in New Issue
Block a user