#include "controllers/PublicController.h" #include "common/Http.h" #include "services/ReportService.h" #include using drogon::HttpResponsePtr; namespace { std::optional queryValue(const drogon::HttpRequestPtr &req, const std::string &key) { const auto value = req->getParameter(key); if (value.empty()) { return std::nullopt; } return value; } } // namespace void PublicController::listAreas( const drogon::HttpRequestPtr &, std::function &&callback) { visione::services::ReportService service; callback(visione::http::json(service.listAreas())); } void PublicController::openDataReports( const drogon::HttpRequestPtr &req, std::function &&callback) { visione::services::ReportService service; callback(visione::http::json(service.openDataReports(queryValue(req, "page"), queryValue(req, "per_page")))); } void PublicController::interventionSummary( const drogon::HttpRequestPtr &, std::function &&callback, const std::string &token) { visione::services::ReportService service; auto body = service.publicInterventionSummary(token); const auto status = body.get("ok", false).asBool() ? drogon::k200OK : drogon::k404NotFound; callback(visione::http::json(std::move(body), status)); }