Skip to content
Snippets Groups Projects
Commit bbb28e69 authored by Kimia Beheshti's avatar Kimia Beheshti
Browse files

Merge branch 'Issue/2001-extendAnalyticsLogger' into 'dev'

New: extended analytics log (coscine/issues#2001)

See merge request !189
parents fcb50b4a 75052a8f
No related branches found
No related tags found
4 merge requests!196Release: Sprint/2022 05 :robot:,!194Chore: 2.6.2,!189New: extended analytics log (coscine/issues#2001),!186Update: Project API methods (coscine/issues#1971)
...@@ -115,7 +115,7 @@ namespace Coscine.Api.Project.Controllers ...@@ -115,7 +115,7 @@ namespace Coscine.Api.Project.Controllers
var project = _projectModel.GetById(Guid.Parse(id)); var project = _projectModel.GetById(Guid.Parse(id));
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner)) 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 subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && !project.Deleted);
var parentProjectRelation = subProjectRel.FirstOrDefault(); var parentProjectRelation = subProjectRel.FirstOrDefault();
...@@ -422,6 +422,12 @@ namespace Coscine.Api.Project.Controllers ...@@ -422,6 +422,12 @@ namespace Coscine.Api.Project.Controllers
projectQuotaForCurrent.Quota = updateProjectQuotaObject.Allocated; projectQuotaForCurrent.Quota = updateProjectQuotaObject.Allocated;
_projectQuotaModel.Update(projectQuotaForCurrent); _projectQuotaModel.Update(projectQuotaForCurrent);
} }
if (Request.Query != null && Request.Query["noanalyticslog"] != "true")
{
LogAnalyticsOwnerProjectQuotaChange(project, user);
}
return NoContent(); return NoContent();
} }
...@@ -652,6 +658,33 @@ namespace Coscine.Api.Project.Controllers ...@@ -652,6 +658,33 @@ namespace Coscine.Api.Project.Controllers
return new ActionResult<IEnumerable<InvitationReturnObject>>(invitations); return new ActionResult<IEnumerable<InvitationReturnObject>>(invitations);
} }
/// <summary>
/// Call to analytics logger.
/// </summary>
/// <param name="projectId">Project id of the project</param>
/// <returns>204 no content</returns>
[HttpGet("[controller]/{projectId}/-/create-profile")]
public IActionResult CreateApplicationProfile(Guid projectId)
{
var project = _projectModel.GetById(projectId);
if (project == null)
{
return NotFound($@"The project ""{projectId}"" was not found.");
}
var user = _authenticator.GetUser();
if (!_projectModel.HasAccess(user, project, UserRoles.Owner))
{
return Unauthorized("You are not an owner of the project.");
}
LogAnalyticsCreateApplicationProfile(project, user);
return NoContent();
}
/// <summary> /// <summary>
/// Create and send an invitation to specified mail. /// Create and send an invitation to specified mail.
/// </summary> /// </summary>
...@@ -721,6 +754,11 @@ namespace Coscine.Api.Project.Controllers ...@@ -721,6 +754,11 @@ namespace Coscine.Api.Project.Controllers
NotificationBusUtil.Send(Program.Configuration, "user_invitation", NotificationBusUtil.GetUserList(new User { EmailAddress = sendInvitationObject.Email }), sendInvitationObject.Project.ToString(), body); NotificationBusUtil.Send(Program.Configuration, "user_invitation", NotificationBusUtil.GetUserList(new User { EmailAddress = sendInvitationObject.Email }), sendInvitationObject.Project.ToString(), body);
if (Request.Query != null && Request.Query["noanalyticslog"] != "true")
{
LogAnalyticsInviteExternalUser(project, user);
}
return NoContent(); return NoContent();
} }
...@@ -914,5 +952,50 @@ namespace Coscine.Api.Project.Controllers ...@@ -914,5 +952,50 @@ namespace Coscine.Api.Project.Controllers
Visibility = project.VisibilityId.HasValue ? _visibilityModel.GetById(project.VisibilityId.Value)?.DisplayName : null, 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()
});
}
private void LogAnalyticsInviteExternalUser(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 = "Invite External User",
RoleId = _projectRoleModel.GetGetUserRoleForProject(project.Id, user.Id).ToString(),
ProjectId = project.Id.ToString()
});
}
private void LogAnalyticsCreateApplicationProfile(Database.DataModel.Project project, User user)
{
_coscineLogger.AnalyticsLog(
new AnalyticsLogObject
{
Type = "Action",
Operation = "Create Application Profile",
RoleId = _projectRoleModel.GetGetUserRoleForProject(project.Id, user.Id).ToString(),
ProjectId = project.Id.ToString()
});
}
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment