создал менеджер донатов
- добавление - удаление - сохранение
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user