создал менеджер донатов

- добавление
- удаление
- сохранение
This commit is contained in:
2026-02-22 09:18:00 +03:00
parent 05662be287
commit eb494ae8fa
10 changed files with 499 additions and 11 deletions
+54
View File
@@ -0,0 +1,54 @@
#ifndef DONATIONMANAGER_H
#define DONATIONMANAGER_H
#include <QObject>
#include <QList>
#include <QString>
class uDataBase;
struct DonationTrigger
{
int id = -1;
QString name; // Название триггера (например "Малый донат")
QString rule; // Строка правила: "=100", ">1000", "100-200" и т.д.
int priority = 0; // Вычисляется при парсинге (1 – exact, 2 range, 3 greater/ge)
double minValue = 0; // Для численных сравнений
double maxValue = 0; // Для диапазона (если range)
bool isGreaterEqual = false; // true для ">="
};
class DonationManager : public QObject
{
Q_OBJECT
public:
explicit DonationManager(uDataBase *db, QObject *parent = nullptr);
// Загрузить все триггеры из БД
bool loadFromDatabase();
// Сохранить новый триггер в БД и добавить в список
bool addTrigger(const QString &name, const QString &rule);
// Удалить триггер по ID (и из БД, и из списка)
bool deleteTrigger(int id);
// Получить все триггеры (для отображения)
QList<DonationTrigger> getAllTriggers() const;
// Поиск подходящего триггера по сумме доната
// Возвращает имя триггера или пустую строку
QString matchDonation(double amount) const;
signals:
void dataChanged(); // для обновления таблицы
private:
// Парсинг строки правила, заполняет поля min, max, priority, isGreaterEqual
bool parseRule(const QString &rule, DonationTrigger &trigger) const;
uDataBase *m_db;
QList<DonationTrigger> m_triggers;
};
#endif // DONATIONMANAGER_H