FOSSredder 0.5.0
Loading...
Searching...
No Matches
WorkspacePayloads.cpp
Go to the documentation of this file.
1
5
7
8#include <QFileInfo>
9
12
13namespace ui::workspace_payloads {
14
15namespace {
16
17QString
18validationSeverityName(core::ports::workspace::ValidationSeverity severity) {
19 switch (severity) {
21 return QStringLiteral("info");
23 return QStringLiteral("warning");
25 return QStringLiteral("error");
26 }
27 return QStringLiteral("error");
28}
29
30QString displayFileName(const QString& path) {
31 const QFileInfo info(path);
32 const QString name = info.fileName();
33 return name.isEmpty() ? path : name;
34}
35
36QStringList sortedStdStrings(const std::vector<std::string>& values) {
37 QStringList out;
38 out.reserve(static_cast<int>(values.size()));
39 for (const auto& value : values) {
40 const QString trimmed = QString::fromStdString(value).trimmed();
41 if (!trimmed.isEmpty()) {
42 out.push_back(trimmed);
43 }
44 }
45 out.sort();
46 return out;
47}
48
49std::vector<std::string>
50aliasValues(const std::vector<core::ports::workspace::AliasSnapshot>& aliases) {
51 std::vector<std::string> out;
52 out.reserve(aliases.size());
53 for (const auto& alias : aliases) {
54 out.push_back(alias.value);
55 }
56 return out;
57}
58
59template<typename Item>
60void insertIdName(QVariantMap& row, const Item& item) {
61 row.insert(payload::keys::common::kId, QString::fromStdString(item.id));
62 row.insert(payload::keys::common::kName, QString::fromStdString(item.name));
63}
64
65template<typename Item>
66void insertIdNameDisplay(QVariantMap& row, const Item& item) {
67 insertIdName(row, item);
69 QString::fromStdString(item.name));
70}
71
72QVariantMap
73adjustmentMap(const core::ports::workspace::AnalysisSnapshot& analysis) {
74 QVariantMap values;
75 for (const auto& [id, amount] : analysis.adjustments) {
76 values.insert(QString::fromStdString(id), amount);
77 }
78 return values;
79}
80
81} // namespace
82
83QVariantMap
85 QVariantMap row;
86 row.insert(QStringLiteral("type"), QString::fromStdString(config.type));
87 row.insert(QStringLiteral("plotType"),
88 QString::fromStdString(config.plotType));
89 row.insert(QStringLiteral("plotMeasure"),
90 QString::fromStdString(config.plotMeasure));
91 row.insert(QStringLiteral("propertyIds"),
93 row.insert(QStringLiteral("contractTypes"),
95 row.insert(QStringLiteral("taxPercent"), config.taxPercent);
96 return row;
97}
98
101 QVariantMap row;
102 row.insert(QStringLiteral("dateField"),
103 QString::fromStdString(filter.dateField));
104 row.insert(QStringLiteral("dateMode"),
105 QString::fromStdString(filter.dateMode));
106 row.insert(QStringLiteral("year"), QString::fromStdString(filter.year));
107 row.insert(QStringLiteral("dateFrom"),
108 QString::fromStdString(filter.dateFrom));
109 row.insert(QStringLiteral("dateTo"), QString::fromStdString(filter.dateTo));
110 row.insert(QStringLiteral("propertyIds"),
112 row.insert(QStringLiteral("propertyIdsNone"), filter.propertyIdsUnassigned);
113 row.insert(QStringLiteral("contractTypes"),
115 row.insert(QStringLiteral("contractTypesNone"),
117 row.insert(QStringLiteral("allocatableMode"),
118 QString::fromStdString(filter.allocatableMode));
119 return row;
120}
121
122QVariantMap
124 QVariantList issues;
125 issues.reserve(static_cast<int>(result.issues.size()));
126 for (const auto& issue : result.issues) {
127 issues.push_back(QVariantMap{
128 {QStringLiteral("field"), QString::fromStdString(issue.field)},
129 {QStringLiteral("code"), QString::fromStdString(issue.code)},
130 {QStringLiteral("message"), QString::fromStdString(issue.message)},
131 {QStringLiteral("severity"), validationSeverityName(issue.severity)}});
132 }
133 return {{QStringLiteral("valid"), result.valid()},
134 {QStringLiteral("issues"), issues}};
135}
136
138 QVariantMap row;
139 insertIdNameDisplay(row, actor);
144 return row;
145}
146
147QVariantMap
149 QVariantMap row;
150 insertIdNameDisplay(row, property);
153 row.insert(
155 payload::mapper::toVariantStringList(aliasValues(property.aliases)));
156 return row;
157}
158
159QVariantMap
161 QVariantMap row;
162 insertIdNameDisplay(row, contract);
164 QString::fromStdString(contract.type));
166 QString::fromStdString(contract.allocatableMode));
167 row.insert(
169 payload::mapper::toVariantStringList(aliasValues(contract.aliases)));
174 return row;
175}
176
177QVariantMap
179 QVariantMap row;
180 insertIdName(row, analysis);
182 QString::fromStdString(analysis.type));
184 analysisConfigRow(analysis.config));
186 analysisFilterRow(analysis.filter));
187 row.insert(payload::keys::analysis::kAdjustments, adjustmentMap(analysis));
189 QString::fromStdString(analysis.exportFormat));
195 QString::fromStdString(analysis.createdAt));
197 QString::fromStdString(analysis.updatedAt));
198 return row;
199}
200
202 QVariantMap row;
203 row.insert(payload::keys::common::kId, QString::fromStdString(annual.id));
204 row.insert(payload::keys::annual::kName, QString::fromStdString(annual.name));
205 row.insert(payload::keys::annual::kYear, annual.year);
209 annual.name.empty() ? QString::number(annual.year)
210 : QString::fromStdString(annual.name));
211 return row;
212}
213
214QVariantMap
216 QVariantMap row;
217 insertIdName(row, statement);
218 return row;
219}
220
221QVariantMap
223 const QString& contractType) {
224 QVariantMap row;
225 insertIdName(row, transaction);
227 QString::fromStdString(transaction.statementId);
229 QString::fromStdString(transaction.bookingDate);
231 QString::fromStdString(transaction.valuta);
232 row[payload::keys::common::kAmount] = transaction.amount;
233 row[payload::keys::common::kStatus] = transaction.status;
235 QString::fromStdString(transaction.actorId);
237 QString::fromStdString(transaction.contractId);
238 row[payload::keys::common::kMetadata] = QString();
240 contractType.isEmpty() ? QString::fromStdString(transaction.contractType)
241 : contractType;
247 row[QStringLiteral("propertyNames")] =
249 return row;
250}
251
252QVariantList
253transactionRows(const std::vector<core::ports::workspace::TransactionSnapshot>&
254 transactions) {
255 QVariantList rows;
256 rows.reserve(static_cast<int>(transactions.size()));
257 for (const auto& transaction : transactions) {
258 rows.push_back(transactionRow(transaction));
259 }
260 return rows;
261}
262
265 QVariantMap row;
266 insertIdName(row, transaction);
268 QString::fromStdString(transaction.bookingDate));
269 return row;
270}
271
273 const QString file = QString::fromStdString(log.file);
274 const QString message = QString::fromStdString(log.message);
275 QVariantMap row;
276 row[payload::keys::importLog::kLogId] = QString::fromStdString(log.id);
277 row[payload::keys::importLog::kTime] = QString::fromStdString(log.time);
278 row[payload::keys::common::kType] = QString::fromStdString(log.type);
280 row[payload::keys::common::kStatus] = QString::fromStdString(log.status);
283 row[payload::keys::importLog::kDraftId] = QString::fromStdString(log.draftId);
285 QString::fromStdString(log.statementId);
286 row[payload::keys::common::kDisplayTime] = QString::fromStdString(log.time);
287 row[payload::keys::common::kDisplayTitle] = displayFileName(file);
289 return row;
290}
291
293 const QString targetPath = QString::fromStdString(log.targetPath);
294 const QString message = QString::fromStdString(log.message);
295 QVariantMap row;
296 row[payload::keys::exportLog::kLogId] = QString::fromStdString(log.id);
297 row[payload::keys::exportLog::kTime] = QString::fromStdString(log.time);
298 row[payload::keys::exportLog::kFile] = targetPath;
299 row[payload::keys::common::kStatus] = QString::fromStdString(log.status);
302 row[payload::keys::importLog::kDraftId] = QString();
304 row[payload::keys::common::kDisplayTime] = QString::fromStdString(log.time);
305 row[payload::keys::common::kDisplayTitle] = displayFileName(targetPath);
307 return row;
308}
309
310QVariantMap dropdownRow(const QString& id, const QString& display,
311 const QString& name, const QString& type,
312 const QVariantList& actorIds,
313 const QVariantList& propertyIds,
314 const QString& allocatableMode) {
315 return QVariantMap{
323}
324
325} // namespace ui::workspace_payloads
Declarations for the UI PayloadKeys component.
Declarations for the UI payload mapper helpers.
Declares workspace-specific QML payload builders.
const auto kDisplayStatusDetail
Definition PayloadKeys.h:25
QVariantList toVariantStringList(const std::vector< std::string > &values)
Converts standard strings to a QVariant string list.
QStringList toQStringList(const std::vector< std::string > &values)
Converts standard strings to a Qt string list.
QVariantMap transactionRow(const core::ports::workspace::TransactionSnapshot &transaction, const QString &contractType={})
Builds a transaction row.
QVariantList transactionRows(const std::vector< core::ports::workspace::TransactionSnapshot > &transactions)
Builds transaction rows.
QVariantMap analysisConfigRow(const core::ports::analysis::AnalysisConfigInput &config)
Builds an analysis config row.
QVariantMap analysisFilterRow(const core::ports::analysis::AnalysisFilterSelection &filter)
Builds an analysis filter row.
QVariantMap statementTransactionRow(const core::ports::workspace::TransactionSnapshot &transaction)
Builds a lightweight statement transaction row.
QVariantMap contractRow(const core::ports::workspace::ContractSnapshot &contract)
Builds a contract row.
QVariantMap propertyRow(const core::ports::workspace::PropertySnapshot &property)
Builds a property row.
QVariantMap actorRow(const core::ports::workspace::ActorSnapshot &actor)
Builds an actor row.
QVariantMap annualRow(const core::ports::workspace::AnnualSnapshot &annual)
Builds an annual row.
QVariantMap importLogRow(const core::ports::workspace::ImportLogSnapshot &log)
Builds an import log row.
QVariantMap exportLogRow(const core::ports::workspace::ExportLogSnapshot &log)
Builds an export log row.
QVariantMap statementRow(const core::ports::workspace::StatementSnapshot &statement)
Builds a statement row.
QVariantMap validationResult(const core::ports::workspace::ValidationResult &result)
Maps validation results to a QML-friendly payload.
QVariantMap analysisRow(const core::ports::workspace::AnalysisSnapshot &analysis)
Builds an analysis row.
QVariantMap dropdownRow(const QString &id, const QString &display, const QString &name={}, const QString &type={}, const QVariantList &actorIds={}, const QVariantList &propertyIds={}, const QString &allocatableMode=QStringLiteral("mixed"))
Builds a dropdown row.
std::vector< AliasSnapshot > aliases
std::vector< std::string > contractIds
core::ports::analysis::AnalysisFilterSelection filter
core::ports::analysis::AnalysisConfigInput config
std::vector< TransactionSnapshot > snapshotTransactions
std::vector< std::pair< std::string, double > > adjustments
bool valid() const noexcept
Reports whether the validation result has no errors.