FOSSredder 0.5.0
Loading...
Searching...
No Matches
AnnualWorkflowSupport.cpp
Go to the documentation of this file.
1
5
7
8#include <algorithm>
9
11
12namespace {
13
14auto rowLess = [](const core::ports::annual::AnnualRowResult& lhs,
15 const core::ports::annual::AnnualRowResult& rhs) {
16 if (lhs.bookingDate != rhs.bookingDate) {
17 return lhs.bookingDate < rhs.bookingDate;
18 }
19 if (lhs.amount != rhs.amount) {
20 return lhs.amount < rhs.amount;
21 }
22 return lhs.transactionId < rhs.transactionId;
23};
24
25} // namespace
26
27core::ports::annual::AnnualResult
29 auto projected = result;
30 std::sort(projected.deduplicated.begin(), projected.deduplicated.end(),
31 rowLess);
32 std::sort(projected.similar.begin(), projected.similar.end(), rowLess);
33 std::sort(projected.divergent.begin(), projected.divergent.end(), rowLess);
34 std::sort(projected.workspaceOnly.begin(), projected.workspaceOnly.end(),
35 rowLess);
36 std::sort(projected.missingLive.begin(), projected.missingLive.end(),
37 rowLess);
38 return projected;
39}
40
43 const std::string& annualId, const std::vector<std::string>& analysisIds,
44 int year) {
46 bool found = false;
47 const std::string previewId =
48 annualId.empty() ? std::string(kPreviewAnnualId) : annualId;
49
50 for (const auto& row : workspace.annuals) {
51 if (row.id != previewId) {
52 continue;
53 }
54 previewAnnual = row;
55 found = true;
56 break;
57 }
58
59 previewAnnual.id = previewId;
60 if (year > 0) {
61 previewAnnual.year = year;
62 }
63 previewAnnual.analysisIds = analysisIds;
64
65 if (found) {
66 for (auto& row : workspace.annuals) {
67 if (row.id != previewId) {
68 continue;
69 }
70 row = previewAnnual;
71 return workspace;
72 }
73 }
74
75 workspace.annuals.push_back(previewAnnual);
76 return workspace;
77}
78
79} // namespace core::application::annual
Shared annual preview helpers for UI and application layers.
core::ports::workspace::WorkspaceSnapshot withPreviewAnnual(core::ports::workspace::WorkspaceSnapshot workspace, const std::string &annualId, const std::vector< std::string > &analysisIds, int year)
constexpr const char * kPreviewAnnualId
core::ports::annual::AnnualResult sortAnnualResult(const core::ports::annual::AnnualResult &result)