FOSSredder 0.5.0
Loading...
Searching...
No Matches
AnnualAdapter.cpp
Go to the documentation of this file.
1
5
7
8#include "ui/i18n/Text.h"
11
12#include <utility>
13
14namespace ui::adapters {
15namespace {
16
17QVariantMap toAnnualRow(const core::ports::annual::AnnualRowResult& row) {
18 QVariantMap out;
19 out.insert(QStringLiteral("key"), QString::fromStdString(row.key));
20 out.insert(QStringLiteral("id"), QString::fromStdString(row.transactionId));
21 out.insert(QStringLiteral("name"),
22 QString::fromStdString(row.transactionName));
23 out.insert(QStringLiteral("bookingDate"),
24 QString::fromStdString(row.bookingDate));
25 out.insert(QStringLiteral("amount"), row.amount);
26 out.insert(QStringLiteral("status"), row.status);
27 out.insert(QStringLiteral("statusText"),
32 out.insert(QStringLiteral("allocatable"), row.allocatable);
33 out.insert(QStringLiteral("contractId"),
34 QString::fromStdString(row.contractId));
35 out.insert(QStringLiteral("contractType"),
36 QString::fromStdString(row.contractType));
37 out.insert(QStringLiteral("statementId"),
38 QString::fromStdString(row.statementId));
39 out.insert(QStringLiteral("isMissingLive"), row.missingLive);
40 out.insert(QStringLiteral("isMixedYear"), row.mixedYear);
41 out.insert(QStringLiteral("isCalcVariant"), row.calcVariant);
42 out.insert(QStringLiteral("isDuplicate"), row.duplicateCount > 1);
43 out.insert(QStringLiteral("duplicateCount"), row.duplicateCount);
44 out.insert(QStringLiteral("sourceAnalysisIds"),
46 out.insert(QStringLiteral("sourceAnalysisNames"),
48 return out;
49}
50
51QVariantList
52toAnnualRows(const std::vector<core::ports::annual::AnnualRowResult>& rows) {
53 QVariantList out;
54 out.reserve(static_cast<int>(rows.size()));
55 for (const auto& row : rows) {
56 out.push_back(toAnnualRow(row));
57 }
58 return out;
59}
60
61} // namespace
62
64 std::shared_ptr<core::ports::annual::IAnnualRunner> runner)
65 : runner_(std::move(runner)) {}
66
69 const core::ports::annual::AnnualRequest& request) const {
70 observability::traceAdapter("AnnualAdapter::runAnnual",
71 "Annual runner invoked",
72 {{"annualId", request.annualId}});
73 return runner_ ? runner_->runAnnual(workspace, request)
75}
76
78 const core::ports::annual::AnnualResult& result) const {
79 QVariantMap out;
80 out.insert(QStringLiteral("annualId"),
81 QString::fromStdString(result.annualId));
82 out.insert(QStringLiteral("annualName"),
83 QString::fromStdString(result.annualName));
84 out.insert(QStringLiteral("year"), result.year);
85
86 QVariantMap stats;
87 stats.insert(QStringLiteral("assignedAnalysisCount"),
89 stats.insert(QStringLiteral("snapshotTransactionCount"),
91 stats.insert(QStringLiteral("missingFromYear"), result.stats.missingFromYear);
92 stats.insert(QStringLiteral("mixedYear"), result.stats.mixedYear);
93 stats.insert(QStringLiteral("duplicateCount"), result.stats.duplicateCount);
94 stats.insert(QStringLiteral("missingLive"), result.stats.missingLive);
95 stats.insert(QStringLiteral("neutral"), result.stats.neutral);
96 stats.insert(QStringLiteral("unverified"), result.stats.unverified);
97 stats.insert(QStringLiteral("verified"), result.stats.verified);
98 stats.insert(QStringLiteral("completed"), result.stats.completed);
99 out.insert(QStringLiteral("stats"), stats);
100
101 const QVariantList deduplicated = toAnnualRows(result.deduplicated);
102 const QVariantList similar = toAnnualRows(result.similar);
103 const QVariantList divergent = toAnnualRows(result.divergent);
104 const QVariantList workspaceOnly = toAnnualRows(result.workspaceOnly);
105 const QVariantList missingLive = toAnnualRows(result.missingLive);
106
107 out.insert(QStringLiteral("deduplicated"), deduplicated);
108 out.insert(QStringLiteral("similar"), similar);
109 out.insert(QStringLiteral("divergent"), divergent);
110 out.insert(QStringLiteral("workspaceOnly"), workspaceOnly);
111 out.insert(QStringLiteral("missingLive"), missingLive);
112
113 QVariantList all;
114 all.reserve(deduplicated.size() + similar.size() + divergent.size() +
115 workspaceOnly.size());
116 for (const auto& value : deduplicated) {
117 all.push_back(value);
118 }
119 for (const auto& value : similar) {
120 all.push_back(value);
121 }
122 for (const auto& value : divergent) {
123 all.push_back(value);
124 }
125 for (const auto& value : workspaceOnly) {
126 all.push_back(value);
127 }
128 out.insert(QStringLiteral("transactions"), all);
129 return out;
130}
131
132} // namespace ui::adapters
Declares the annual adapter used by UI workflows.
Declarations for the UI payload mapper helpers.
Provides translated C++ UI strings for shell, workflow, adapter and view model code.
Declarations for the UI Trace component.
AnnualAdapter(std::shared_ptr< core::ports::annual::IAnnualRunner > runner)
Creates an annual adapter backed by a core runner.
QVariantMap mapAnnualResult(const core::ports::annual::AnnualResult &result) const
Maps an annual result to a QML payload.
core::ports::annual::AnnualResult runAnnual(const core::ports::workspace::WorkspaceSnapshot &workspace, const core::ports::annual::AnnualRequest &request) const
Runs annual computation through the core runner.
void traceAdapter(const char *origin, std::string message, core::errors::ErrorContext context={})
Emits an adapter trace event.
Definition Trace.h:75
QVariantList toVariantStringList(const std::vector< std::string > &values)
Converts standard strings to a QVariant string list.
QString verified()
Label for verified transaction status.
Definition Text.h:462
QString neutral()
Label for neutral transaction status.
Definition Text.h:454
QString unverified()
Label for unverified transaction status.
Definition Text.h:458
QString completed()
Label for completed transaction status.
Definition Text.h:466
std::vector< AnnualRowResult > missingLive
std::vector< AnnualRowResult > similar
std::vector< AnnualRowResult > deduplicated
std::vector< AnnualRowResult > divergent
std::vector< AnnualRowResult > workspaceOnly
std::vector< std::string > sourceAnalysisNames
std::vector< std::string > sourceAnalysisIds