138 lines
4.4 KiB
C
138 lines
4.4 KiB
C
|
#ifndef JOURNALSERVICE_H
|
||
|
#define JOURNALSERVICE_H
|
||
|
|
||
|
#include "utils.h"
|
||
|
#include "HttpClient.h"
|
||
|
#include "logs_r.h"
|
||
|
|
||
|
#include <QObject>
|
||
|
#include <QString>
|
||
|
#include <QJsonObject>
|
||
|
#include <QJsonArray>
|
||
|
#include <QList>
|
||
|
#include <QStringList>
|
||
|
#include <QJsonDocument>
|
||
|
|
||
|
class JournalService : public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
explicit JournalService(HttpClient* client, QObject *parent = nullptr)
|
||
|
: QObject(parent), httpClient(client) {}
|
||
|
|
||
|
int getLogsAmount(const QMap<QString, QString>& groupWithSensors, qint64 start, qint64 end) {
|
||
|
QJsonObject rootObj;
|
||
|
rootObj["start_time"] = start;
|
||
|
rootObj["end_time"] = end;
|
||
|
QJsonObject sensorsObj;
|
||
|
for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) {
|
||
|
QJsonArray sensorArray;
|
||
|
sensorArray.append(it.value());
|
||
|
sensorsObj[it.key()] = sensorArray;
|
||
|
}
|
||
|
rootObj["sensors"] = sensorsObj;
|
||
|
QJsonDocument doc(rootObj);
|
||
|
QByteArray requestData = doc.toJson();
|
||
|
|
||
|
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object());
|
||
|
|
||
|
|
||
|
if (responseJson.contains("amount")) {
|
||
|
return responseJson["amount"].toInt();
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
QList<LogsR> tmpB(int pageNum, int pageSize, qint64 start = 1734063255, qint64 end = 1735392656) {
|
||
|
QJsonObject rootObj;
|
||
|
rootObj["start_time"] = start;
|
||
|
rootObj["end_time"] = end;
|
||
|
rootObj["page_number"] = pageNum;
|
||
|
rootObj["page_size"] = pageSize;
|
||
|
QJsonDocument doc(rootObj);
|
||
|
QByteArray requestData = doc.toJson();
|
||
|
|
||
|
|
||
|
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object());
|
||
|
|
||
|
QList<LogsR> logList;
|
||
|
|
||
|
if (responseJson.contains("logs") && responseJson["logs"].isArray()) {
|
||
|
QJsonArray alarmsArray = responseJson["logs"].toArray();
|
||
|
|
||
|
for (const QJsonValue& value : alarmsArray) {
|
||
|
if (value.isObject()) {
|
||
|
LogsR log;
|
||
|
log.parseResponse(value.toObject());
|
||
|
logList.append(log);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return logList;
|
||
|
}
|
||
|
|
||
|
int tmpA(qint64 start = 1734063255, qint64 end = 1735392656) {
|
||
|
QJsonObject rootObj;
|
||
|
rootObj["start_time"] = start;
|
||
|
rootObj["end_time"] = end;
|
||
|
QJsonDocument doc(rootObj);
|
||
|
QByteArray requestData = doc.toJson();
|
||
|
|
||
|
|
||
|
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object());
|
||
|
|
||
|
if (responseJson.contains("amount")) {
|
||
|
return responseJson["amount"].toInt();
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
QStringList getLogs(const QMap<QString, QString>& groupWithSensors, const QList<int>& threatLevels, qint64 start, qint64 end, int pageNum, int pageSize) {
|
||
|
QJsonObject rootObj;
|
||
|
QJsonArray threatLevelsArray;
|
||
|
for (int level : threatLevels) {
|
||
|
threatLevelsArray.append(level);
|
||
|
}
|
||
|
rootObj["threat_levels"] = threatLevelsArray;
|
||
|
rootObj["start_time"] = start;
|
||
|
rootObj["end_time"] = end;
|
||
|
rootObj["page_number"] = pageNum;
|
||
|
rootObj["page_size"] = pageSize;
|
||
|
QJsonObject sensorsObj;
|
||
|
for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) {
|
||
|
QJsonArray sensorArray;
|
||
|
sensorArray.append(it.value());
|
||
|
sensorsObj[it.key()] = sensorArray;
|
||
|
}
|
||
|
rootObj["sensors"] = sensorsObj;
|
||
|
QJsonDocument doc(rootObj);
|
||
|
QByteArray requestData = doc.toJson();
|
||
|
|
||
|
|
||
|
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object());
|
||
|
|
||
|
QStringList logsList;
|
||
|
|
||
|
if (responseJson.contains("logs") && responseJson["logs"].isArray()) {
|
||
|
QJsonArray logsArray = responseJson["logs"].toArray();
|
||
|
|
||
|
for (const QJsonValue& logValue : logsArray) {
|
||
|
if (logValue.isObject()) {
|
||
|
LogsR log;
|
||
|
log.parseResponse(logValue.toObject());
|
||
|
logsList.append(log.getMark() + " - " + log.getMessage());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return logsList;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
HttpClient* httpClient;
|
||
|
};
|
||
|
|
||
|
#endif // JOURNALSERVICE_H
|