#pragma once #include "common/Auth.h" #include #include #include namespace visione::services { class ReportService { public: Json::Value createReport(const auth::UserContext &user, const Json::Value &body); Json::Value listReports(const auth::UserContext &user, const std::optional &status, const std::optional &categoryId, const std::optional &areaId); Json::Value assignedReports(const auth::UserContext &user, const std::optional &page, const std::optional &perPage); Json::Value listAreas(); Json::Value openReports(const auth::UserContext &user, const std::optional &page, const std::optional &perPage); Json::Value otherOperatorReports(const auth::UserContext &user, const std::optional &page, const std::optional &perPage); Json::Value listCategories(const auth::UserContext &user); Json::Value listOperatorTeams(const auth::UserContext &user); Json::Value reportDetail(const auth::UserContext &user, long long reportId); Json::Value interventionSummary(const auth::UserContext &user, long long reportId); Json::Value publicInterventionSummary(const std::string &token); Json::Value updateStatus(const auth::UserContext &user, long long reportId, const Json::Value &body); Json::Value takeReport(const auth::UserContext &user, long long reportId); Json::Value addMessage(const auth::UserContext &user, long long reportId, const Json::Value &body); Json::Value listMessages(const auth::UserContext &user, long long reportId); Json::Value assignTeam(const auth::UserContext &user, long long reportId, const Json::Value &body); Json::Value addFeedback(const auth::UserContext &user, long long reportId, const Json::Value &body); Json::Value flagReport(const auth::UserContext &user, long long reportId, const Json::Value &body); Json::Value flagMessage(const auth::UserContext &user, long long reportId, long long messageId, const Json::Value &body); Json::Value teamSuggestions(const auth::UserContext &user, long long reportId); Json::Value createInterventionLink(const auth::UserContext &user, long long reportId); Json::Value revokeInterventionLink(const auth::UserContext &user, long long reportId); Json::Value openDataReports(const std::optional &page, const std::optional &perPage); Json::Value canAddMedia(const auth::UserContext &user, long long reportId); Json::Value addMedia(const auth::UserContext &user, long long reportId, const std::string &url, const std::string &originalFilename, const std::string &contentType, const std::string &mediaKind, size_t sizeBytes); }; } // namespace visione::services