51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#pragma once
|
|||
|
|
|
||
|
|
#include "../databasemanager.h"
|
||
|
|
#include <QVector>
|
||
|
|
#include <optional>
|
||
|
|
#include <QJsonDocument>
|
||
|
|
#include <QJsonObject>
|
||
|
|
#include <QJsonArray>
|
||
|
|
|
||
|
|
struct TemplateVariable
|
||
|
|
{
|
||
|
|
QString name;
|
||
|
|
QString label;
|
||
|
|
QString defaultValue;
|
||
|
|
QString type; // "text", "email", "date", "select", "textarea"
|
||
|
|
QStringList options; // for select type
|
||
|
|
};
|
||
|
|
|
||
|
|
struct Template
|
||
|
|
{
|
||
|
|
qint64 id{-1};
|
||
|
|
qint64 accountId{-1}; // -1 = global
|
||
|
|
QString name;
|
||
|
|
QString subject;
|
||
|
|
QString bodyHtml;
|
||
|
|
QString bodyText;
|
||
|
|
QVector<TemplateVariable> variables;
|
||
|
|
bool isDefault{false};
|
||
|
|
QDateTime createdAt;
|
||
|
|
QDateTime updatedAt;
|
||
|
|
|
||
|
|
bool isGlobal() const { return accountId < 0; }
|
||
|
|
bool isValid() const { return id >= 0 && !name.isEmpty(); }
|
||
|
|
|
||
|
|
QJsonObject toJson() const;
|
||
|
|
static Template fromJson(const QJsonObject& obj);
|
||
|
|
};
|
||
|
|
|
||
|
|
class TemplateDao
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
static bool insert(Template& tmpl);
|
||
|
|
static bool update(const Template& tmpl);
|
||
|
|
static bool remove(qint64 id);
|
||
|
|
static std::optional<Template> findById(qint64 id);
|
||
|
|
static QVector<Template> findByAccount(qint64 accountId); // accountId = -1 for global
|
||
|
|
static QVector<Template> findGlobal();
|
||
|
|
static QVector<Template> findAll();
|
||
|
|
static std::optional<Template> findDefault(qint64 accountId);
|
||
|
|
static bool setDefault(qint64 id, bool isDefault);
|
||
|
|
};
|