Implemented api for soll ist time
This commit is contained in:
@@ -59,12 +59,12 @@ void GetAbsencesReply::requestFinished()
|
||||
m_absences.append({
|
||||
obj.value(QStringLiteral("altRepresentative")).toInt(),
|
||||
obj.value(QStringLiteral("compositeId")).toString(),
|
||||
QDate::fromString(QString::number(obj.value(QStringLiteral("end")).toInt()), QStringLiteral("yyyyMMdd")),
|
||||
parseDate(obj.value(QStringLiteral("end"))),
|
||||
obj.value(QStringLiteral("hourCategory")).toString(),
|
||||
obj.value(QStringLiteral("openMarking")).toString(),
|
||||
obj.value(QStringLiteral("persNr")).toInt(),
|
||||
obj.value(QStringLiteral("representative")).toInt(),
|
||||
QDate::fromString(QString::number(obj.value(QStringLiteral("start")).toInt()), QStringLiteral("yyyyMMdd")),
|
||||
parseDate(obj.value(QStringLiteral("start"))),
|
||||
obj.value(QStringLiteral("text")).toString()
|
||||
});
|
||||
}
|
||||
|
@@ -57,9 +57,9 @@ void GetBookingsReply::requestFinished()
|
||||
|
||||
m_bookings.append({
|
||||
obj.value(QStringLiteral("bookingNr")).toInt(),
|
||||
QDate::fromString(QString::number(obj.value(QStringLiteral("bookingDate")).toInt()), QStringLiteral("yyyyMMdd")),
|
||||
QTime::fromString(QStringLiteral("%0").arg(obj.value(QStringLiteral("bookingTime")).toInt(), 6, 10, QChar('0')), QStringLiteral("HHmmss")),
|
||||
QTime::fromString(QStringLiteral("%0").arg(obj.value(QStringLiteral("bookingTimespan")).toInt(), 6, 10, QChar('0')), QStringLiteral("HHmmss")),
|
||||
parseDate(obj.value(QStringLiteral("bookingDate"))),
|
||||
parseTime(obj.value(QStringLiteral("bookingTime"))),
|
||||
parseTime(obj.value(QStringLiteral("bookingTimespan"))),
|
||||
obj.value(QStringLiteral("bookingType")).toString(),
|
||||
obj.value(QStringLiteral("text")).toString()
|
||||
});
|
||||
|
74
zeiterfassungcorelib/replies/getdayinforeply.cpp
Normal file
74
zeiterfassungcorelib/replies/getdayinforeply.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
#include "getdayinforeply.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QJsonParseError>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonArray>
|
||||
#include <QJsonValue>
|
||||
#include <QJsonObject>
|
||||
|
||||
#include "zeiterfassungapi.h"
|
||||
|
||||
GetDayinfoReply::GetDayinfoReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung) :
|
||||
ZeiterfassungReply(zeiterfassung),
|
||||
m_reply(std::move(reply))
|
||||
{
|
||||
connect(m_reply.get(), &QNetworkReply::finished, this, &GetDayinfoReply::requestFinished);
|
||||
}
|
||||
|
||||
const QVector<GetDayinfoReply::Dayinfo> &GetDayinfoReply::dayinfos() const
|
||||
{
|
||||
return m_dayinfos;
|
||||
}
|
||||
|
||||
void GetDayinfoReply::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.isArray())
|
||||
{
|
||||
setSuccess(false);
|
||||
setMessage(tr("JSON document is not an array!"));
|
||||
goto end;
|
||||
}
|
||||
|
||||
auto arr = document.array();
|
||||
|
||||
setSuccess(true);
|
||||
m_dayinfos.clear();
|
||||
m_dayinfos.reserve(arr.count());
|
||||
for(const auto &val : arr)
|
||||
{
|
||||
auto obj = val.toObject();
|
||||
|
||||
m_dayinfos.append({
|
||||
obj.value(QStringLiteral("className")).toString(),
|
||||
obj.value(QStringLiteral("persNr")).toInt(),
|
||||
parseDate(obj.value(QStringLiteral("date"))),
|
||||
parseTime(obj.value(QStringLiteral("ist"))),
|
||||
parseTime(obj.value(QStringLiteral("soll"))),
|
||||
obj.value(QStringLiteral("compositeId")).toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
m_reply = Q_NULLPTR;
|
||||
|
||||
Q_EMIT finished();
|
||||
}
|
40
zeiterfassungcorelib/replies/getdayinforeply.h
Normal file
40
zeiterfassungcorelib/replies/getdayinforeply.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include <QString>
|
||||
#include <QDate>
|
||||
#include <QNetworkReply>
|
||||
#include <QVector>
|
||||
|
||||
#include "zeiterfassungcorelib_global.h"
|
||||
#include "zeiterfassungreply.h"
|
||||
|
||||
class ZeiterfassungApi;
|
||||
|
||||
class ZEITERFASSUNGCORELIBSHARED_EXPORT GetDayinfoReply : public ZeiterfassungReply
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit GetDayinfoReply(std::unique_ptr<QNetworkReply> &&reply, ZeiterfassungApi *zeiterfassung);
|
||||
|
||||
struct Dayinfo
|
||||
{
|
||||
QString className;
|
||||
int userId;
|
||||
QDate date;
|
||||
QTime ist;
|
||||
QTime soll;
|
||||
QString compositeId;
|
||||
};
|
||||
|
||||
const QVector<Dayinfo> &dayinfos() const;
|
||||
|
||||
private Q_SLOTS:
|
||||
void requestFinished();
|
||||
|
||||
private:
|
||||
std::unique_ptr<QNetworkReply> m_reply;
|
||||
QVector<Dayinfo> m_dayinfos;
|
||||
};
|
@@ -60,9 +60,9 @@ void GetTimeAssignmentsReply::requestFinished()
|
||||
|
||||
m_timeAssignments.append({
|
||||
obj.value(QStringLiteral("bookingNr")).toInt(),
|
||||
QDate::fromString(QString::number(obj.value(QStringLiteral("bookingDate")).toInt()), QStringLiteral("yyyyMMdd")),
|
||||
QTime::fromString(QStringLiteral("%0").arg(obj.value(QStringLiteral("bookingTime")).toInt(), 6, 10, QChar('0')), QStringLiteral("HHmmss")),
|
||||
QTime::fromString(QStringLiteral("%0").arg(obj.value(QStringLiteral("bookingTimespan")).toInt(), 6, 10, QChar('0')), QStringLiteral("HHmmss")),
|
||||
parseDate(obj.value(QStringLiteral("bookingDate"))),
|
||||
parseTime(obj.value(QStringLiteral("bookingTime"))),
|
||||
parseTime(obj.value(QStringLiteral("bookingTimespan"))),
|
||||
obj.value(QStringLiteral("text")).toString(),
|
||||
koWertList.at(0).toObject().value(QStringLiteral("value")).toString(),
|
||||
koWertList.at(1).toObject().value(QStringLiteral("value")).toString(),
|
||||
|
@@ -150,8 +150,8 @@ void GetUserInfoReply::request1Finished()
|
||||
|
||||
m_userInfo.street = obj.value(QStringLiteral("gemeinde")).toString();
|
||||
m_userInfo.city = obj.value(QStringLiteral("ort")).toString();
|
||||
m_userInfo.employedSince = QDate::fromString(QString::number(obj.value(QStringLiteral("angFrom")).toInt()), QStringLiteral("yyyyMMdd"));
|
||||
m_userInfo.employedTill = QDate::fromString(QString::number(obj.value(QStringLiteral("angTill")).toInt()), QStringLiteral("yyyyMMdd"));
|
||||
m_userInfo.employedSince = parseDate(obj.value(QStringLiteral("angFrom")));
|
||||
m_userInfo.employedTill = parseDate(obj.value(QStringLiteral("angTill")));
|
||||
m_userInfo.placeOfBirth = obj.value(QStringLiteral("gebOrt")).toString();
|
||||
m_userInfo.zipcode = obj.value(QStringLiteral("plz")).toString();
|
||||
m_userInfo.religion = obj.value(QStringLiteral("religion")).toString();
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#include "zeiterfassungreply.h"
|
||||
|
||||
#include <QEventLoop>
|
||||
#include <QJsonValue>
|
||||
|
||||
#include "zeiterfassungapi.h"
|
||||
|
||||
@@ -29,6 +30,22 @@ void ZeiterfassungReply::waitForFinished()
|
||||
eventLoop.exec();
|
||||
}
|
||||
|
||||
QDate ZeiterfassungReply::parseDate(const QJsonValue &value)
|
||||
{
|
||||
if(value.isNull())
|
||||
return QDate();
|
||||
|
||||
return QDate::fromString(QString::number(value.toInt()), QStringLiteral("yyyyMMdd"));
|
||||
}
|
||||
|
||||
QTime ZeiterfassungReply::parseTime(const QJsonValue &value)
|
||||
{
|
||||
if(value.isNull())
|
||||
return QTime();
|
||||
|
||||
return QTime::fromString(QStringLiteral("%0").arg(value.toInt(), 6, 10, QChar('0')), QStringLiteral("HHmmss"));
|
||||
}
|
||||
|
||||
ZeiterfassungApi *ZeiterfassungReply::zeiterfassung() const
|
||||
{
|
||||
return m_zeiterfassung;
|
||||
|
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "zeiterfassungcorelib_global.h"
|
||||
|
||||
class QJsonValue;
|
||||
|
||||
class ZeiterfassungApi;
|
||||
|
||||
class ZEITERFASSUNGCORELIBSHARED_EXPORT ZeiterfassungReply : public QObject
|
||||
@@ -18,6 +20,9 @@ public:
|
||||
|
||||
void waitForFinished();
|
||||
|
||||
static QDate parseDate(const QJsonValue &value);
|
||||
static QTime parseTime(const QJsonValue &value);
|
||||
|
||||
Q_SIGNALS:
|
||||
void finished();
|
||||
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include "replies/getreportreply.h"
|
||||
#include "replies/getpresencestatusreply.h"
|
||||
#include "replies/getabsencesreply.h"
|
||||
#include "replies/getdayinforeply.h"
|
||||
|
||||
//add support for pre cpp14 compilers
|
||||
#include "cpp14polyfills.h"
|
||||
@@ -84,8 +85,8 @@ std::unique_ptr<GetBookingsReply> ZeiterfassungApi::doGetBookings(int userId, co
|
||||
{
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/bookings?start=%1&end=%2&pnrLst=%3")
|
||||
.arg(m_url.toString())
|
||||
.arg(start.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(end.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(formatDate(start))
|
||||
.arg(formatDate(end))
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
@@ -101,9 +102,9 @@ std::unique_ptr<CreateBookingReply> ZeiterfassungApi::doCreateBooking(int userId
|
||||
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("persNr")] = userId;
|
||||
obj[QStringLiteral("bookingDate")] = date.toString(QStringLiteral("yyyyMMdd")).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = time.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = timespan.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingDate")] = formatDate(date).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = formatTime(time).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = formatTime(timespan).toInt();
|
||||
obj[QStringLiteral("bookingType")] = type;
|
||||
obj[QStringLiteral("hourCategory")] = QStringLiteral("");
|
||||
obj[QStringLiteral("empfEinh")] = QStringLiteral("");
|
||||
@@ -125,9 +126,9 @@ std::unique_ptr<UpdateBookingReply> ZeiterfassungApi::doUpdateBooking(int bookin
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("bookingNr")] = bookingId;
|
||||
obj[QStringLiteral("persNr")] = userId;
|
||||
obj[QStringLiteral("bookingDate")] = date.toString(QStringLiteral("yyyyMMdd")).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = time.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = timespan.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingDate")] = formatDate(date).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = formatTime(time).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = formatTime(timespan).toInt();
|
||||
obj[QStringLiteral("bookingType")] = type;
|
||||
obj[QStringLiteral("hourCategory")] = QStringLiteral("");
|
||||
obj[QStringLiteral("empfEinh")] = QStringLiteral("");
|
||||
@@ -153,8 +154,8 @@ std::unique_ptr<GetTimeAssignmentsReply> ZeiterfassungApi::doGetTimeAssignments(
|
||||
{
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/azebooking?start=%1&end=%2&pnrLst=%3")
|
||||
.arg(m_url.toString())
|
||||
.arg(start.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(end.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(formatDate(start))
|
||||
.arg(formatDate(end))
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
@@ -173,9 +174,9 @@ std::unique_ptr<CreateTimeAssignmentReply> ZeiterfassungApi::doCreateTimeAssignm
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("bookingNr")] = QJsonValue::Null;
|
||||
obj[QStringLiteral("persNr")] = userId;
|
||||
obj[QStringLiteral("bookingDate")] = date.toString(QStringLiteral("yyyyMMdd")).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = time.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = timespan.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingDate")] = formatDate(date).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = formatTime(time).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = formatTime(timespan).toInt();
|
||||
obj[QStringLiteral("text")] = text;
|
||||
{
|
||||
QJsonArray koWertList;
|
||||
@@ -214,9 +215,9 @@ std::unique_ptr<UpdateTimeAssignmentReply> ZeiterfassungApi::doUpdateTimeAssignm
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("bookingNr")] = timeAssignmentId;
|
||||
obj[QStringLiteral("persNr")] = userId;
|
||||
obj[QStringLiteral("bookingDate")] = date.toString(QStringLiteral("yyyyMMdd")).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = time.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = timespan.toString(QStringLiteral("Hmmss")).toInt();
|
||||
obj[QStringLiteral("bookingDate")] = formatDate(date).toInt();
|
||||
obj[QStringLiteral("bookingTime")] = formatTime(time).toInt();
|
||||
obj[QStringLiteral("bookingTimespan")] = formatTime(timespan).toInt();
|
||||
obj[QStringLiteral("bookingType")] = QJsonValue::Null;
|
||||
obj[QStringLiteral("hourCategory")] = QJsonValue::Null;
|
||||
obj[QStringLiteral("bewEinh")] = QJsonValue::Null;
|
||||
@@ -263,7 +264,7 @@ std::unique_ptr<GetProjectsReply> ZeiterfassungApi::doGetProjects(int userId, co
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/combobox?persnr=%1&date=%2&dqkey=KOST&kowert0=&kowert1=&kowert2=&term=")
|
||||
.arg(m_url.toString())
|
||||
.arg(userId)
|
||||
.arg(date.toString(QStringLiteral("yyyyMMdd")))));
|
||||
.arg(formatDate(date))));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
return std::make_unique<GetProjectsReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
@@ -274,7 +275,7 @@ std::unique_ptr<GetReportReply> ZeiterfassungApi::doGetReport(int userId, const
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/auswertung/month?persNr=%1&date=%2")
|
||||
.arg(m_url.toString())
|
||||
.arg(userId)
|
||||
.arg(date.toString(QStringLiteral("yyyyMMdd")))));
|
||||
.arg(formatDate(date))));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
return std::make_unique<GetReportReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
@@ -292,10 +293,32 @@ std::unique_ptr<GetAbsencesReply> ZeiterfassungApi::doGetAbsences(int userId, co
|
||||
{
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/fulldayAbsences?start=%1&end=%2&pnrLst=%3")
|
||||
.arg(m_url.toString())
|
||||
.arg(start.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(end.toString(QStringLiteral("yyyyMMdd")))
|
||||
.arg(formatDate(start))
|
||||
.arg(formatDate(end))
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
return std::make_unique<GetAbsencesReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
std::unique_ptr<GetDayinfoReply> ZeiterfassungApi::doGetDayinfo(int userId, const QDate &start, const QDate &end)
|
||||
{
|
||||
QNetworkRequest request(QUrl(QStringLiteral("%0json/dayinfo?start=%1&end=%2&pnrLst=%3")
|
||||
.arg(m_url.toString())
|
||||
.arg(formatDate(start))
|
||||
.arg(formatDate(end))
|
||||
.arg(userId)));
|
||||
request.setRawHeader(QByteArrayLiteral("sisAppName"), QByteArrayLiteral("bookingCalendar"));
|
||||
|
||||
return std::make_unique<GetDayinfoReply>(std::unique_ptr<QNetworkReply>(m_manager->get(request)), this);
|
||||
}
|
||||
|
||||
QString ZeiterfassungApi::formatDate(const QDate &date)
|
||||
{
|
||||
return date.toString(QStringLiteral("yyyyMMdd"));
|
||||
}
|
||||
|
||||
QString ZeiterfassungApi::formatTime(const QTime &time)
|
||||
{
|
||||
return time.toString(QStringLiteral("Hmmss"));
|
||||
}
|
||||
|
@@ -27,6 +27,7 @@ class GetProjectsReply;
|
||||
class GetReportReply;
|
||||
class GetPresenceStatusReply;
|
||||
class GetAbsencesReply;
|
||||
class GetDayinfoReply;
|
||||
|
||||
class ZEITERFASSUNGCORELIBSHARED_EXPORT ZeiterfassungApi : public QObject
|
||||
{
|
||||
@@ -66,8 +67,12 @@ public:
|
||||
std::unique_ptr<GetReportReply> doGetReport(int userId, const QDate &date);
|
||||
std::unique_ptr<GetPresenceStatusReply> doGetPresenceStatus();
|
||||
std::unique_ptr<GetAbsencesReply> doGetAbsences(int userId, const QDate &start, const QDate &end);
|
||||
std::unique_ptr<GetDayinfoReply> doGetDayinfo(int userId, const QDate &start, const QDate &end);
|
||||
|
||||
private:
|
||||
static QString formatDate(const QDate &date);
|
||||
static QString formatTime(const QTime &time);
|
||||
|
||||
QUrl m_url;
|
||||
QNetworkAccessManager *m_manager;
|
||||
};
|
||||
|
@@ -17,6 +17,7 @@ SOURCES += timeutils.cpp \
|
||||
replies/deletetimeassignmentreply.cpp \
|
||||
replies/getabsencesreply.cpp \
|
||||
replies/getbookingsreply.cpp \
|
||||
replies/getdayinforeply.cpp \
|
||||
replies/getpresencestatusreply.cpp \
|
||||
replies/getprojectsreply.cpp \
|
||||
replies/getreportreply.cpp \
|
||||
@@ -39,6 +40,7 @@ HEADERS += cpp14polyfills.h \
|
||||
replies/deletetimeassignmentreply.h \
|
||||
replies/getabsencesreply.h \
|
||||
replies/getbookingsreply.h \
|
||||
replies/getdayinforeply.h \
|
||||
replies/getpresencestatusreply.h \
|
||||
replies/getprojectsreply.h \
|
||||
replies/getreportreply.h \
|
||||
|
Reference in New Issue
Block a user