FOSSredder 0.5.0
Loading...
Searching...
No Matches
ui/include/ui/workspace/WorkspaceCommands.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <QObject>
9#include <QString>
10#include <QStringList>
11#include <QVariant>
12#include <QVariantMap>
13
14#include <functional>
15#include <optional>
16
19
20namespace ui {
21
25class WorkspaceCommands : public QObject {
26 Q_OBJECT
27
28public:
34 explicit WorkspaceCommands(WorkspaceStore& store, QObject* parent = nullptr);
35
41 std::optional<core::ports::workspace::StatementDraftSnapshot>
42 statementDraftSnapshot(const QString& draftId = {}) const;
60 void clearStatementDraft(const QString& draftId = {});
61
72 void upsertImportLog(const QString& logId, const QString& status,
73 const QString& message, bool draftAttached,
74 const QString& draftId = {},
75 const QString& statementId = {},
76 const QString& importFile = {});
81 void deleteImportLog(const QString& id);
82
92 void deleteExportLog(const QString& id);
93
98 void newFile(const QString& path);
103 void openFile(const QString& path);
107 void saveFile();
112 void saveFileAs(const QString& path);
118 void setBeforeStorageSaveCallback(std::function<void()> callback);
119
128 QString saveActor(const QString& id, const QString& name,
129 const QStringList& aliases = {},
130 const QStringList& contractIds = {});
135 void deleteActor(const QString& id);
136
145 QString saveProperty(const QString& id, const QString& name,
146 const QStringList& aliases = {},
147 const QStringList& contractIds = {});
152 void deleteProperty(const QString& id);
153
165 QString
166 saveContract(const QString& id, const QString& name, const QString& type,
167 const QStringList& actorIds = {},
168 const QStringList& propertyIds = {},
169 const QStringList& aliases = {},
170 const QString& allocatableMode = QStringLiteral("mixed"));
175 void deleteContract(const QString& id);
176
182 QString addStatement(const QString& name);
189 QString addStatementWithTransactions(const QString& name,
190 const QVariantList& transactionStates);
196 void updateStatement(const QString& id, const QString& name);
201 void deleteStatement(const QString& id);
202
217 QString addTransaction(const QString& name, const QString& bookingDate,
218 const QString& valuta, const QVariant& amount,
219 const QString& statementId, int status = 0,
220 const QString& actorId = QString(),
221 const QString& contractId = QString(),
222 bool allocatable = false,
223 const QStringList& propertyIds = {});
240 const QString& afterTransactionId, const QString& name,
241 const QString& bookingDate, const QString& valuta, const QVariant& amount,
242 const QString& statementId, int status = 0,
243 const QString& actorId = QString(), const QString& contractId = QString(),
244 bool allocatable = false, const QStringList& propertyIds = {});
259 void updateTransaction(const QString& id, const QString& name,
260 const QString& bookingDate, const QString& valuta,
261 const QVariant& amount, const QString& statementId,
262 int status, const QString& actorId,
263 const QString& contractId, bool allocatable,
264 const QStringList& propertyIds);
269 void deleteTransaction(const QString& id);
270
283 QString addAnalysis(const QString& name, const QString& type,
284 const QVariantMap& config, const QVariantMap& filter,
285 const QString& exportFormat, bool includeCalcAdjustments,
286 const QVariantList& snapshotTransactions,
287 const QVariantMap& adjustments = {});
300 void updateAnalysis(const QString& id, const QString& name,
301 const QString& type, const QVariantMap& config,
302 const QVariantMap& filter, const QString& exportFormat,
303 bool includeCalcAdjustments,
304 const QVariantList& snapshotTransactions,
305 const QVariantMap& adjustments = {});
310 void deleteAnalysis(const QString& id);
316 void updateAnalysisExportFormat(const QString& analysisId,
317 const QString& exportFormat);
318
326 QString addAnnual(const QString& name, int year,
327 const QStringList& analysisIds = {});
335 void updateAnnual(const QString& id, const QString& name, int year,
336 const QStringList& analysisIds = {});
341 void deleteAnnual(const QString& id);
342
343signals:
348 void operationSucceeded(const QString& operation);
354 void operationFailed(const QString& operation, const QString& error);
355
356private:
365 QVariantMap validateActor(const QString& id, const QString& name,
366 const QStringList& aliases = {},
367 const QStringList& contractIds = {}) const;
376 QVariantMap validateProperty(const QString& id, const QString& name,
377 const QStringList& aliases = {},
378 const QStringList& contractIds = {}) const;
390 QVariantMap validateContract(
391 const QString& id, const QString& name, const QString& type,
392 const QStringList& actorIds = {}, const QStringList& propertyIds = {},
393 const QStringList& aliases = {},
394 const QString& allocatableMode = QStringLiteral("mixed")) const;
401 QVariantMap validateStatement(const QString& id, const QString& name) const;
417 QVariantMap validateTransaction(const QString& id, const QString& name,
418 const QString& bookingDate,
419 const QString& valuta, const QVariant& amount,
420 const QString& statementId, int status,
421 const QString& actorId,
422 const QString& contractId, bool allocatable,
423 const QStringList& propertyIds) const;
432 QVariantMap validateAnnual(const QString& id, const QString& name, int year,
433 const QStringList& analysisIds = {}) const;
437 void refreshStoreFromReader();
443 void runStorageOperation(const QString& operation,
444 const std::function<void()>& action);
449 void saveImportLog(const core::ports::workspace::ImportLogSnapshot& log);
456 bool rejectInvalidCommand(
457 const char* origin,
458 const core::ports::workspace::ValidationResult& result) const;
459
460 WorkspaceStore& store_;
461 std::function<void()> beforeStorageSave_;
462};
463
464} // namespace ui
Immutable workspace read-model snapshot exposed through workspace ports.
Declares the UI workspace snapshot store.
void deleteAnalysis(const QString &id)
Deletes an analysis.
void deleteStatement(const QString &id)
Deletes a statement.
void operationSucceeded(const QString &operation)
Emitted when a storage command completed.
void deleteImportLog(const QString &id)
Deletes an import log.
void updateTransaction(const QString &id, const QString &name, const QString &bookingDate, const QString &valuta, const QVariant &amount, const QString &statementId, int status, const QString &actorId, const QString &contractId, bool allocatable, const QStringList &propertyIds)
Updates a transaction.
WorkspaceCommands(WorkspaceStore &store, QObject *parent=nullptr)
Creates workspace commands for a store.
QString addAnalysis(const QString &name, const QString &type, const QVariantMap &config, const QVariantMap &filter, const QString &exportFormat, bool includeCalcAdjustments, const QVariantList &snapshotTransactions, const QVariantMap &adjustments={})
Creates an analysis.
QString saveProperty(const QString &id, const QString &name, const QStringList &aliases={}, const QStringList &contractIds={})
Creates or updates a property.
void openFile(const QString &path)
Opens an existing workspace file.
void operationFailed(const QString &operation, const QString &error)
Emitted when a storage command failed.
void upsertImportLog(const QString &logId, const QString &status, const QString &message, bool draftAttached, const QString &draftId={}, const QString &statementId={}, const QString &importFile={})
Creates or updates an import log row.
void deleteTransaction(const QString &id)
Deletes a transaction.
void saveFileAs(const QString &path)
Saves the current workspace file to a new path.
void deleteProperty(const QString &id)
Deletes a property.
void updateAnalysisExportFormat(const QString &analysisId, const QString &exportFormat)
Updates only the stored export format of an analysis.
void deleteActor(const QString &id)
Deletes an actor.
QString addTransaction(const QString &name, const QString &bookingDate, const QString &valuta, const QVariant &amount, const QString &statementId, int status=0, const QString &actorId=QString(), const QString &contractId=QString(), bool allocatable=false, const QStringList &propertyIds={})
Creates a transaction.
QString addAnnual(const QString &name, int year, const QStringList &analysisIds={})
Creates an annual.
QString saveActor(const QString &id, const QString &name, const QStringList &aliases={}, const QStringList &contractIds={})
Creates or updates an actor.
void updateStatement(const QString &id, const QString &name)
Updates a statement.
void setBeforeStorageSaveCallback(std::function< void()> callback)
Registers an optional hook executed immediately before storage save.
QString finalizeStatementDraft(const core::ports::workspace::StatementDraftSnapshot &draft)
Finalizes a statement draft through the workspace writer.
QString addStatementWithTransactions(const QString &name, const QVariantList &transactionStates)
Creates a statement and its transactions in one workspace mutation.
void newFile(const QString &path)
Creates a new workspace file.
void clearStatementDraft(const QString &draftId={})
Removes a statement draft from workspace state.
void deleteContract(const QString &id)
Deletes a contract.
void updateAnnual(const QString &id, const QString &name, int year, const QStringList &analysisIds={})
Updates an annual.
void deleteAnnual(const QString &id)
Deletes an annual.
void deleteExportLog(const QString &id)
Deletes an export log.
QString saveContract(const QString &id, const QString &name, const QString &type, const QStringList &actorIds={}, const QStringList &propertyIds={}, const QStringList &aliases={}, const QString &allocatableMode=QStringLiteral("mixed"))
Creates or updates a contract.
void saveStatementDraft(const core::ports::workspace::StatementDraftSnapshot &draft)
Saves a statement draft in workspace state.
void saveExportLog(const core::ports::workspace::ExportLogSnapshot &log)
Saves an export log in workspace state.
void saveFile()
Saves the current workspace file.
void updateAnalysis(const QString &id, const QString &name, const QString &type, const QVariantMap &config, const QVariantMap &filter, const QString &exportFormat, bool includeCalcAdjustments, const QVariantList &snapshotTransactions, const QVariantMap &adjustments={})
Updates an analysis.
QString addStatement(const QString &name)
Creates a statement.
QString insertTransactionAfter(const QString &afterTransactionId, const QString &name, const QString &bookingDate, const QString &valuta, const QVariant &amount, const QString &statementId, int status=0, const QString &actorId=QString(), const QString &contractId=QString(), bool allocatable=false, const QStringList &propertyIds={})
Creates a transaction after another transaction.
std::optional< core::ports::workspace::StatementDraftSnapshot > statementDraftSnapshot(const QString &draftId={}) const
Reads a statement draft snapshot from workspace state.
Owns the current UI-side workspace snapshot and revision lifecycle.