TTW_Bot/donationmanager.h

55 lines
1.9 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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