feat: enhance Admin and report services with CRUD operations and intervention links
This commit is contained in:
@@ -68,10 +68,17 @@ void sendService(Json::Value body,
|
||||
status = drogon::k404NotFound;
|
||||
}
|
||||
else if (error == "invalid_status_transition" ||
|
||||
error == "media_limit_reached")
|
||||
error == "media_limit_reached" ||
|
||||
error == "report_not_open" ||
|
||||
error == "report_owned_by_other_operator")
|
||||
{
|
||||
status = drogon::k409Conflict;
|
||||
}
|
||||
else if (error == "invalid_reference" || error.starts_with("invalid_") ||
|
||||
error == "missing_rating")
|
||||
{
|
||||
status = drogon::k422UnprocessableEntity;
|
||||
}
|
||||
callback(visione::http::json(std::move(body), status));
|
||||
}
|
||||
|
||||
@@ -141,6 +148,32 @@ void ReportController::list(
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::listCategories(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback)
|
||||
{
|
||||
auto user = requireUser(req, callback);
|
||||
if (!user || blockPasswordChangeRequired(*user, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
visione::services::ReportService service;
|
||||
sendService(service.listCategories(*user), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::listTeams(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback)
|
||||
{
|
||||
auto user = requireUser(req, callback);
|
||||
if (!user || blockPasswordChangeRequired(*user, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
visione::services::ReportService service;
|
||||
sendService(service.listOperatorTeams(*user), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::assignedReports(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback)
|
||||
@@ -217,6 +250,48 @@ void ReportController::interventionSummary(
|
||||
sendService(service.interventionSummary(*user, reportId), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::teamSuggestions(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback,
|
||||
long long reportId)
|
||||
{
|
||||
auto user = requireUser(req, callback);
|
||||
if (!user || blockPasswordChangeRequired(*user, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
visione::services::ReportService service;
|
||||
sendService(service.teamSuggestions(*user, reportId), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::createInterventionLink(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback,
|
||||
long long reportId)
|
||||
{
|
||||
auto user = requireUser(req, callback);
|
||||
if (!user || blockPasswordChangeRequired(*user, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
visione::services::ReportService service;
|
||||
sendService(service.createInterventionLink(*user, reportId), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::revokeInterventionLink(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback,
|
||||
long long reportId)
|
||||
{
|
||||
auto user = requireUser(req, callback);
|
||||
if (!user || blockPasswordChangeRequired(*user, callback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
visione::services::ReportService service;
|
||||
sendService(service.revokeInterventionLink(*user, reportId), std::move(callback));
|
||||
}
|
||||
|
||||
void ReportController::updateStatus(
|
||||
const drogon::HttpRequestPtr &req,
|
||||
std::function<void(const HttpResponsePtr &)> &&callback,
|
||||
@@ -368,7 +443,7 @@ void ReportController::uploadMedia(
|
||||
auto allowed = service.canAddMedia(*user, reportId);
|
||||
if (!allowed.get("ok", false).asBool())
|
||||
{
|
||||
callback(visione::http::json(std::move(allowed), drogon::k403Forbidden));
|
||||
sendService(std::move(allowed), std::move(callback));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user