1
0
forked from BRT/arc
arc/models/db/AccountInfo.h
slava 59cef50ad3 Add enhanced account and transaction handling features
Refactored code to improve account and transaction data parsing and management, introducing support for additional fields like card numbers and account statuses. Added new utilities for database connections, device-specific screenshot handling, and XML parsing for enriched account and transaction details.
2025-05-07 14:15:08 +07:00

60 lines
2.2 KiB
C

#pragma once
#include <QDateTime>
enum class AccountStatus {
Active,
Blocked
};
inline QString accountStatusToString(const AccountStatus status) {
switch (status) {
case AccountStatus::Active: return "active";
case AccountStatus::Blocked: return "blocked";
default: return "active";
}
}
inline AccountStatus accountStatusFromString(const QString &str) {
if (str == "active") return AccountStatus::Active;
if (str == "blocked") return AccountStatus::Blocked;
return AccountStatus::Active;
}
struct AccountInfo {
int id = -1;
QString deviceId;
QString appName;
QString lastNumbers;
QString numbers;
double amount = 0.0;
QDateTime updateTime;
AccountStatus status = AccountStatus::Active;
QString description;
};
inline QString convertAccountToString(const AccountInfo &info) {
QStringList lines;
QStringList emptyFields;
lines << "AccountInfo {";
if (info.id != -1) lines << " id: " + QString::number(info.id); else emptyFields << "id";
if (!info.deviceId.isEmpty()) lines << " deviceId: " + info.deviceId; else emptyFields << "deviceId";
if (!info.appName.isEmpty()) lines << " appName: " + info.appName; else emptyFields << "appName";
if (!info.numbers.isEmpty()) lines << " numbers: " + info.numbers; else emptyFields << "numbers";
if (!info.lastNumbers.isEmpty()) lines << " lastNumbers: " + info.lastNumbers; else emptyFields << "lastNumbers";
if (info.amount != 0.0) lines << " amount: " + QString::number(info.amount, 'f', 2); else emptyFields << "amount";
if (info.updateTime.isValid()) lines << " updateTime: " + info.updateTime.toString(Qt::ISODate); else emptyFields << "updateTime";
if (info.status != AccountStatus::Active) lines << " status: " + accountStatusToString(info.status); else emptyFields << "status";
if (!info.description.isEmpty()) lines << " description: " + info.description; else emptyFields << "description";
if (!emptyFields.isEmpty()) {
lines << " --- empty: " + emptyFields.join(", ");
}
lines << "}";
return lines.join('\n');
}