-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathasset_values_pages.cpp
More file actions
109 lines (75 loc) · 3.6 KB
/
asset_values_pages.cpp
File metadata and controls
109 lines (75 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//=======================================================================
// Copyright (c) 2013-2020 Baptiste Wicht.
// Distributed under the terms of the MIT License.
// (See accompanying file LICENSE or copy at
// http://opensource.org/licenses/MIT)
//=======================================================================
#include "data_cache.hpp"
#include "pages/html_writer.hpp"
#include "pages/asset_values_pages.hpp"
#include "http.hpp"
#include "views.hpp"
using namespace budget;
void budget::list_asset_values_page(html_writer& w) {
budget::list_asset_values(w);
make_tables_sortable(w);
}
void budget::add_asset_values_page(html_writer& w) {
w << title_begin << "New asset value" << title_end;
form_begin(w, "/api/asset_values/add/", "/asset_values/add/");
add_active_value_asset_picker(w);
add_amount_picker(w);
add_date_picker(w, budget::to_string(budget::local_day()));
form_end(w);
}
void budget::edit_asset_values_page(html_writer& w, const httplib::Request& req) {
if (!validate_parameters(w, req, {"input_id", "back_page"})) {
return;
}
auto input_id = req.get_param_value("input_id");
if (!asset_value_exists(budget::to_number<size_t>(input_id))) {
return display_error_message(w, "The asset value {} does not exist", input_id);
}
auto back_page = req.get_param_value("back_page");
w << title_begin << "Edit asset " << input_id << title_end;
form_begin_edit(w, "/api/asset_values/edit/", back_page, input_id);
auto asset_value = get_asset_value(budget::to_number<size_t>(input_id));
add_value_asset_picker(w, budget::to_string(asset_value.asset_id));
add_amount_picker(w, budget::money_to_string(asset_value.amount));
add_date_picker(w, budget::to_string(asset_value.set_date));
form_end(w);
}
void budget::full_batch_asset_values_page(html_writer& w) {
w << title_begin << "Batch update asset values" << title_end;
form_begin(w, "/api/asset_values/batch/", "/asset_values/batch/full/");
add_date_picker(w, budget::to_string(budget::local_day()), true);
auto assets = w.cache.user_assets();
std::ranges::sort(assets, [](const auto& lhs, const auto& rhs) { return lhs.name <= rhs.name; });
for (const auto& [asset, amount] : assets | not_share_based | expand_value(w.cache)) {
add_money_picker(w, asset.name, std::format("input_amount_{}", asset.id), budget::money_to_string(amount), true, true, asset.currency);
}
form_end(w);
}
void budget::current_batch_asset_values_page(html_writer& w) {
w << title_begin << "Batch update asset values" << title_end;
form_begin(w, "/api/asset_values/batch/", "/asset_values/batch/current/");
add_date_picker(w, budget::to_string(budget::local_day()), true);
auto assets = w.cache.user_assets();
std::ranges::sort(assets, [](const auto& lhs, const auto& rhs) { return lhs.name <= rhs.name; });
for (const auto& [asset, amount] : assets | not_share_based | expand_value(w.cache) | not_zero) {
add_money_picker(w, asset.name, std::format("input_amount_{}", asset.id), budget::money_to_string(amount), true, true, asset.currency);
}
form_end(w);
}
void budget::add_asset_values_liability_page(html_writer& w) {
if (no_liabilities()) {
w << title_begin << "No liabilities" << title_end;
} else {
w << title_begin << "New liability asset value" << title_end;
form_begin(w, "/api/asset_values/add/", "/asset_values/add/liability/");
add_liability_picker(w);
add_amount_picker(w);
add_date_picker(w, budget::to_string(budget::local_day()));
form_end(w);
}
}