From a251e11d6fc32bc829087d3bd6bf349fac9c26e5 Mon Sep 17 00:00:00 2001
From: "L. Ellenbeck" <ellenbeck@itc.rwth-aachen.de>
Date: Tue, 15 Mar 2022 12:49:52 +0100
Subject: [PATCH] New: extended analytics log (coscine/issues#2001)
---
src/Project/Controllers/ProjectController.cs | 27 ++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs
index 30a2413..7348424 100644
--- a/src/Project/Controllers/ProjectController.cs
+++ b/src/Project/Controllers/ProjectController.cs
@@ -115,7 +115,7 @@ namespace Coscine.Api.Project.Controllers
var project = _projectModel.GetById(Guid.Parse(id));
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
{
- SubProjectModel subProjectModel = new SubProjectModel();
+ var subProjectModel = new SubProjectModel();
var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && !project.Deleted);
var parentProjectRelation = subProjectRel.FirstOrDefault();
@@ -422,6 +422,12 @@ namespace Coscine.Api.Project.Controllers
projectQuotaForCurrent.Quota = updateProjectQuotaObject.Allocated;
_projectQuotaModel.Update(projectQuotaForCurrent);
}
+
+ if (Request.Query != null && Request.Query["noanalyticslog"] != "true")
+ {
+ LogAnalyticsOwnerProjectQuotaChange(project, user);
+ }
+
return NoContent();
}
@@ -914,5 +920,22 @@ namespace Coscine.Api.Project.Controllers
Visibility = project.VisibilityId.HasValue ? _visibilityModel.GetById(project.VisibilityId.Value)?.DisplayName : null,
});
}
+
+ private void LogAnalyticsOwnerProjectQuotaChange(Database.DataModel.Project project, User user)
+ {
+ var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
+
+ var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
+
+ _coscineLogger.AnalyticsLog(
+ new AnalyticsLogObject
+ {
+ Type = "Action",
+ Operation = "Owner Project Quota Change",
+ RoleId = _projectRoleModel.GetGetUserRoleForProject(project.Id, user.Id).ToString(),
+ ProjectId = project.Id.ToString(),
+ QuotaSize = objects.Select(x => $"{x.Name}: {x.Used}/{x.Allocated}").ToList()
+ });
+ }
}
-}
+}
\ No newline at end of file
--
GitLab