1
0
forked from BRT/arc
arc/models/db/AccountInfo.h
slava 4fe6e399bc Refactor scripts and add enhanced error handling
Revised scripts for payments and history retrieval, introducing improved error management with screenshots for debugging. Added a new LoginAndCheckAccountsScript for account validation, streamlined multi-threading, and updated application logic for clarity and reliability.
2025-05-30 22:16:25 +07:00

58 lines
2.1 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; // code
QString appCode;
QString lastNumbers;
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.appCode.isEmpty()) lines << " appCode: " + info.appCode; else emptyFields << "appCode";
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');
}