FOSSredder 0.5.0
Loading...
Searching...
No Matches
AnalysisAdapter.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <memory>
9#include <vector>
10
11#include <QString>
12#include <QStringList>
13#include <QVariantList>
14#include <QVariantMap>
15
20
21namespace ui::adapters {
22
23class AnalysisAdapter final {
24public:
29 explicit AnalysisAdapter(
30 std::shared_ptr<core::ports::analysis::IAnalysisRunner> runner);
31
40 const core::ports::analysis::AnalysisRequest& request) const;
49 const std::string& filterSpec) const;
57 buildAnalysisRequest(const QString& analysisId,
58 const QString& filterSpec) const;
66 parseFilterSpec(const std::string& filterSpec) const;
79 QString buildFilterSpec(const QString& dateField, const QString& dateMode,
80 const QString& year, const QString& dateFrom,
81 const QString& dateTo, const QStringList& propertyIds,
82 const QStringList& contractTypes,
83 const QString& allocatableMode) const;
91 QVariantMap
92 buildAnalysisAdjustmentAmounts(const QVariantList& transactions,
93 const QStringList& selectedTransactionIds,
94 double taxPercent) const;
101 adjustmentAmountsFromMap(const QVariantMap& amountsById) const;
108 [[nodiscard]] double
109 parseAnalysisPercentText(const QString& text,
110 double defaultValue = 0.0) const;
120 const std::string& analysisId, bool includeCalculationAdjustments,
122 const;
134 bool includeCalculationAdjustments,
135 const std::string& unassignedLabel) const;
141 std::vector<std::string> contractTypes(
142 const core::ports::workspace::WorkspaceSnapshot& workspace) const;
143
149 [[nodiscard]] QVariantMap
156 [[nodiscard]] QVariantMap mapAnalysisTableState(
163 [[nodiscard]] QVariantMap mapPreviewResult(
170 [[nodiscard]] QStringList
171 mapContractTypes(const std::vector<std::string>& contractTypes) const;
172
173private:
186 core::ports::analysis::AnalysisFilterSelection filterSelectionFromFields(
187 const std::string& dateField, const std::string& dateMode,
188 const std::string& year, const std::string& dateFrom,
189 const std::string& dateTo, const std::vector<std::string>& propertyIds,
190 const std::vector<std::string>& contractTypes,
191 const std::string& allocatableMode) const;
200 buildAnalysisAdjustments(const QVariantList& transactions,
201 const QStringList& selectedTransactionIds,
202 double taxPercent) const;
211 const std::vector<
213 transactions,
214 const std::vector<std::string>& selectedTransactionIds,
215 double taxPercent) const;
216
217 std::shared_ptr<core::ports::analysis::IAnalysisRunner> runner_;
218};
219
220} // namespace ui::adapters
Declares analysis use-case request DTOs and filter-spec helpers.
Declares the analysis execution result port contract.
Analysis use-case port consumed by UI workflows.
Immutable workspace read-model snapshot exposed through workspace ports.
QStringList mapContractTypes(const std::vector< std::string > &contractTypes) const
Maps contract types to a QML string list.
QVariantMap buildAnalysisAdjustmentAmounts(const QVariantList &transactions, const QStringList &selectedTransactionIds, double taxPercent) const
Builds analysis adjustment amounts from preview rows.
core::ports::analysis::AnalysisTableState projectTableState(const core::ports::analysis::AnalysisResult &result, const core::ports::analysis::AnalysisAdjustmentAmounts &adjustments, bool includeCalculationAdjustments, const std::string &unassignedLabel) const
Projects table state for QML presentation.
core::ports::analysis::AnalysisAdjustmentAmounts adjustmentAmountsFromMap(const QVariantMap &amountsById) const
Converts a QML adjustment amount map to core adjustment pairs.
AnalysisAdapter(std::shared_ptr< core::ports::analysis::IAnalysisRunner > runner)
Creates an analysis adapter backed by a core runner.
core::ports::analysis::AnalysisFilterSelection parseFilterSpec(const std::string &filterSpec) const
Parses a serialized analysis filter specification through the core runner.
core::ports::analysis::AnalysisResult runAnalysis(const core::ports::workspace::WorkspaceSnapshot &workspace, const core::ports::analysis::AnalysisRequest &request) const
Runs an analysis through the core runner.
QVariantMap mapAnalysisResult(const core::ports::analysis::AnalysisResult &result) const
Maps an analysis result to a QML payload.
QVariantMap mapAnalysisTableState(const core::ports::analysis::AnalysisTableState &state) const
Maps table state to a QML payload.
std::vector< std::string > contractTypes(const core::ports::workspace::WorkspaceSnapshot &workspace) const
Returns available contract types from the core runner.
void applyAnalysisPreviewOverrides(core::ports::workspace::WorkspaceSnapshot &workspace, const std::string &analysisId, bool includeCalculationAdjustments, const core::ports::analysis::AnalysisAdjustmentAmounts &adjustments) const
Applies preview-only overrides to a workspace snapshot.
double parseAnalysisPercentText(const QString &text, double defaultValue=0.0) const
Parses user-entered percent text through the core runner.
core::ports::analysis::AnalysisRequest buildAnalysisRequest(const QString &analysisId, const QString &filterSpec) const
Builds an analysis request from UI-facing ids and filter specs.
QVariantMap mapPreviewResult(const core::ports::analysis::AnalysisPreviewResult &preview) const
Maps preview result to a QML payload.
core::ports::analysis::AnalysisPreviewResult previewTransactions(const core::ports::workspace::WorkspaceSnapshot &workspace, const std::string &filterSpec) const
Builds preview transactions through the core runner.
QString buildFilterSpec(const QString &dateField, const QString &dateMode, const QString &year, const QString &dateFrom, const QString &dateTo, const QStringList &propertyIds, const QStringList &contractTypes, const QString &allocatableMode) const
Builds a serialized analysis filter specification from UI fields.
std::vector< std::pair< std::string, double > > AnalysisAdjustmentAmounts
Adjustment amount pairs keyed by transaction id.