feat: enhance Admin and report services with CRUD operations and intervention links

This commit is contained in:
gabdevele
2026-06-15 11:47:44 +02:00 Unverified
parent d684477ac3
commit 170fadbfe0
13 changed files with 1258 additions and 164 deletions
+49 -24
View File
@@ -69,18 +69,14 @@ void sendAdmin(Json::Value body,
{
status = drogon::k409Conflict;
}
else if (error == "invalid_reference" || error.starts_with("invalid_"))
{
status = drogon::k422UnprocessableEntity;
}
callback(visione::http::json(std::move(body), status));
}
} // namespace
void AdminController::listCategories(
const drogon::HttpRequestPtr &,
std::function<void(const HttpResponsePtr &)> &&callback)
{
visione::services::AdminService service;
callback(visione::http::json(service.listCategories()));
}
void AdminController::createCategory(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)
@@ -95,14 +91,6 @@ void AdminController::createCategory(
std::move(callback));
}
void AdminController::listAreas(
const drogon::HttpRequestPtr &,
std::function<void(const HttpResponsePtr &)> &&callback)
{
visione::services::AdminService service;
callback(visione::http::json(service.listAreas()));
}
void AdminController::createArea(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)
@@ -117,14 +105,6 @@ void AdminController::createArea(
std::move(callback));
}
void AdminController::listTeams(
const drogon::HttpRequestPtr &,
std::function<void(const HttpResponsePtr &)> &&callback)
{
visione::services::AdminService service;
callback(visione::http::json(service.listTeams()));
}
void AdminController::createTeam(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)
@@ -139,6 +119,51 @@ void AdminController::createTeam(
std::move(callback));
}
void AdminController::updateCategory(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback,
long long categoryId)
{
auto user = requireUser(req, callback);
if (!user || blockPasswordChangeRequired(*user, callback))
{
return;
}
visione::services::AdminService service;
sendAdmin(service.updateCategory(*user, categoryId, visione::http::requireJson(req)),
std::move(callback));
}
void AdminController::updateArea(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback,
long long areaId)
{
auto user = requireUser(req, callback);
if (!user || blockPasswordChangeRequired(*user, callback))
{
return;
}
visione::services::AdminService service;
sendAdmin(service.updateArea(*user, areaId, visione::http::requireJson(req)),
std::move(callback));
}
void AdminController::updateTeam(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback,
long long teamId)
{
auto user = requireUser(req, callback);
if (!user || blockPasswordChangeRequired(*user, callback))
{
return;
}
visione::services::AdminService service;
sendAdmin(service.updateTeam(*user, teamId, visione::http::requireJson(req)),
std::move(callback));
}
void AdminController::overviewStats(
const drogon::HttpRequestPtr &req,
std::function<void(const HttpResponsePtr &)> &&callback)