diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs index 30a2413c22962701cc3b28db18a070a2198ca0d3..73484249c162bca25d46e8450fc3e92bdb19a5b3 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