Skip to content
Snippets Groups Projects

Fix: fixed internal ddos (coscine/issues#1796)

Merged L. Ellenbeck requested to merge Hotfix/1796-projectDdos into master
1 file
+ 46
50
Compare changes
  • Side-by-side
  • Inline
@@ -23,7 +23,6 @@ using System.Linq;
@@ -23,7 +23,6 @@ using System.Linq;
namespace Coscine.Api.Project.Controllers
namespace Coscine.Api.Project.Controllers
{
{
/// <summary>
/// <summary>
/// /// This controller represents the actions which can be taken with a project object.
/// /// This controller represents the actions which can be taken with a project object.
/// </summary>
/// </summary>
@@ -72,7 +71,7 @@ namespace Coscine.Api.Project.Controllers
@@ -72,7 +71,7 @@ namespace Coscine.Api.Project.Controllers
/// <summary>
/// <summary>
/// Returns all available projects (including sub projects)
/// Returns all available projects (including sub projects)
/// </summary>
/// </summary>
/// <returns>Ok</returns>
/// <returns>OK</returns>
[Route("[controller]")]
[Route("[controller]")]
public ActionResult<IEnumerable<ProjectObject>> Index()
public ActionResult<IEnumerable<ProjectObject>> Index()
{
{
@@ -87,7 +86,7 @@ namespace Coscine.Api.Project.Controllers
@@ -87,7 +86,7 @@ namespace Coscine.Api.Project.Controllers
/// <summary>
/// <summary>
/// Retrieves all top level projects
/// Retrieves all top level projects
/// </summary>
/// </summary>
/// <returns>Ok</returns>
/// <returns>OK</returns>
[Route("[controller]/-/topLevel")]
[Route("[controller]/-/topLevel")]
public ActionResult<IEnumerable<ProjectObject>> GetTopLevelProjects()
public ActionResult<IEnumerable<ProjectObject>> GetTopLevelProjects()
{
{
@@ -105,10 +104,10 @@ namespace Coscine.Api.Project.Controllers
@@ -105,10 +104,10 @@ namespace Coscine.Api.Project.Controllers
}
}
/// <summary>
/// <summary>
/// This returns the the project if the user has access to it
/// This returns the project if the user has access to it
/// </summary>
/// </summary>
/// <param name="id">Id of the resource</param>
/// <param name="id">Id of the project</param>
/// <returns>Ok or Statuscode 401</returns>
/// <returns>OK or status code 401</returns>
[HttpGet("[controller]/{id}")]
[HttpGet("[controller]/{id}")]
public ActionResult<ProjectObject> Get(string id)
public ActionResult<ProjectObject> Get(string id)
{
{
@@ -117,7 +116,7 @@ namespace Coscine.Api.Project.Controllers
@@ -117,7 +116,7 @@ namespace Coscine.Api.Project.Controllers
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
{
{
SubProjectModel subProjectModel = new SubProjectModel();
SubProjectModel subProjectModel = new SubProjectModel();
var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && project.Deleted == false);
var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && !project.Deleted);
var parentProjectRelation = subProjectRel.FirstOrDefault();
var parentProjectRelation = subProjectRel.FirstOrDefault();
if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner))
if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner))
@@ -136,7 +135,7 @@ namespace Coscine.Api.Project.Controllers
@@ -136,7 +135,7 @@ namespace Coscine.Api.Project.Controllers
/// Gets the resources
/// Gets the resources
/// </summary>
/// </summary>
/// <param name="id">Id of the resource</param>
/// <param name="id">Id of the resource</param>
/// <returns>Json object or Statuscode 401</returns>
/// <returns>JSON object or status code 401</returns>
[HttpGet("[controller]/{id}/resources")]
[HttpGet("[controller]/{id}/resources")]
public ActionResult<IEnumerable<ResourceObject>> GetResources(string id)
public ActionResult<IEnumerable<ResourceObject>> GetResources(string id)
{
{
@@ -151,10 +150,7 @@ namespace Coscine.Api.Project.Controllers
@@ -151,10 +150,7 @@ namespace Coscine.Api.Project.Controllers
(from projectResource in resource.ProjectResources
(from projectResource in resource.ProjectResources
where projectResource.ProjectId == project.Id
where projectResource.ProjectId == project.Id
select projectResource).Any())
select projectResource).Any())
.Select((resource) =>
.Select((resource) => resourceModel.CreateReturnObjectFromDatabaseObject(resource)).OrderBy(element => element.DisplayName);
{
return resourceModel.CreateReturnObjectFromDatabaseObject(resource);
}).OrderBy(element => element.DisplayName);
if (Request.Query != null && Request.Query["noanalyticslog"] != "true")
if (Request.Query != null && Request.Query["noanalyticslog"] != "true")
{
{
var projectObject = _projectModel.CreateReturnObjectFromDatabaseObject(_projectModel.GetById(project.Id));
var projectObject = _projectModel.CreateReturnObjectFromDatabaseObject(_projectModel.GetById(project.Id));
@@ -180,7 +176,7 @@ namespace Coscine.Api.Project.Controllers
@@ -180,7 +176,7 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(projectId, out Guid projectGuid))
if (!Guid.TryParse(projectId, out Guid projectGuid))
{
{
return BadRequest($"{projectId} is not a guid.");
return BadRequest($"{projectId} is not a GUID.");
}
}
var project = _projectModel.GetById(projectGuid);
var project = _projectModel.GetById(projectGuid);
@@ -195,7 +191,7 @@ namespace Coscine.Api.Project.Controllers
@@ -195,7 +191,7 @@ namespace Coscine.Api.Project.Controllers
return Unauthorized("The user is not authorized to perform a get on the selected project!");
return Unauthorized("The user is not authorized to perform a get on the selected project!");
}
}
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled.HasValue && x.Enabled.Value);
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
return Json(resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, projectGuid)));
return Json(resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, projectGuid)));
}
}
@@ -210,15 +206,15 @@ namespace Coscine.Api.Project.Controllers
@@ -210,15 +206,15 @@ namespace Coscine.Api.Project.Controllers
Id = x.Id,
Id = x.Id,
Name = x.DisplayName,
Name = x.DisplayName,
Used = CalculateUsed(x, projectGuid),
Used = CalculateUsed(x, projectGuid),
Allocated = projectQuota == null ? 0 : projectQuota.Quota,
Allocated = (projectQuota?.Quota) ?? 0,
Maximum = projectQuota == null ? 0 : projectQuota.MaxQuota
Maximum = (projectQuota?.MaxQuota) ?? 0
};
};
}
}
private int GetMaxQuota(Guid projectId, Guid resourceTypeId)
private int GetMaxQuota(Guid projectId, Guid resourceTypeId)
{
{
var projectQuota = _projectQuotaModel.GetWhere(x => x.ProjectId == projectId && x.ResourceTypeId == resourceTypeId);
var projectQuota = _projectQuotaModel.GetWhere(x => x.ProjectId == projectId && x.ResourceTypeId == resourceTypeId);
return projectQuota == null ? 0 : projectQuota.MaxQuota;
return (projectQuota?.MaxQuota) ?? 0;
}
}
private int CalculateUsed(ResourceType resourceType, Guid projectId)
private int CalculateUsed(ResourceType resourceType, Guid projectId)
@@ -248,7 +244,7 @@ namespace Coscine.Api.Project.Controllers
@@ -248,7 +244,7 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(projectId, out Guid projectGuid))
if (!Guid.TryParse(projectId, out Guid projectGuid))
{
{
return BadRequest($"{projectId} is not a guid.");
return BadRequest($"{projectId} is not a GUID.");
}
}
var project = _projectModel.GetById(projectGuid);
var project = _projectModel.GetById(projectGuid);
@@ -265,12 +261,12 @@ namespace Coscine.Api.Project.Controllers
@@ -265,12 +261,12 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
{
{
return BadRequest($"{resourceTypeId} is not a guid.");
return BadRequest($"{resourceTypeId} is not a GUID.");
}
}
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
if (resourceType == null || !resourceType.Enabled.HasValue || !resourceType.Enabled.Value)
if (resourceType?.Enabled.HasValue != true || !resourceType.Enabled.Value)
{
{
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
}
}
@@ -285,8 +281,8 @@ namespace Coscine.Api.Project.Controllers
@@ -285,8 +281,8 @@ namespace Coscine.Api.Project.Controllers
Id = resourceTypeGuid,
Id = resourceTypeGuid,
Name = resourceType.DisplayName,
Name = resourceType.DisplayName,
Used = CalculateUsed(resourceType, projectGuid),
Used = CalculateUsed(resourceType, projectGuid),
Allocated = projectQuota == null ? 0 : projectQuota.Quota,
Allocated = (projectQuota?.Quota) ?? 0,
Maximum = projectQuota == null ? 0 : projectQuota.MaxQuota
Maximum = (projectQuota?.MaxQuota) ?? 0
};
};
return Json(projectQuotaReturnObject);
return Json(projectQuotaReturnObject);
@@ -305,7 +301,7 @@ namespace Coscine.Api.Project.Controllers
@@ -305,7 +301,7 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(projectId, out Guid projectGuid))
if (!Guid.TryParse(projectId, out Guid projectGuid))
{
{
return BadRequest($"{projectId} is not a guid.");
return BadRequest($"{projectId} is not a GUID.");
}
}
var project = _projectModel.GetById(projectGuid);
var project = _projectModel.GetById(projectGuid);
@@ -322,12 +318,12 @@ namespace Coscine.Api.Project.Controllers
@@ -322,12 +318,12 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
{
{
return BadRequest($"{resourceTypeId} is not a guid.");
return BadRequest($"{resourceTypeId} is not a GUID.");
}
}
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
if (resourceType == null || !resourceType.Enabled.HasValue || !resourceType.Enabled.Value)
if (resourceType?.Enabled.HasValue != true || !resourceType.Enabled.Value)
{
{
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
}
}
@@ -349,7 +345,7 @@ namespace Coscine.Api.Project.Controllers
@@ -349,7 +345,7 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(projectId, out Guid projectGuid))
if (!Guid.TryParse(projectId, out Guid projectGuid))
{
{
return BadRequest($"{projectId} is not a guid.");
return BadRequest($"{projectId} is not a GUID.");
}
}
var project = _projectModel.GetById(projectGuid);
var project = _projectModel.GetById(projectGuid);
@@ -366,12 +362,12 @@ namespace Coscine.Api.Project.Controllers
@@ -366,12 +362,12 @@ namespace Coscine.Api.Project.Controllers
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
if (!Guid.TryParse(resourceTypeId, out Guid resourceTypeGuid))
{
{
return BadRequest($"{resourceTypeId} is not a guid.");
return BadRequest($"{resourceTypeId} is not a GUID.");
}
}
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
var resourceType = _resourceTypeModel.GetById(resourceTypeGuid);
if (resourceType == null || !resourceType.Enabled.HasValue || !resourceType.Enabled.Value)
if (resourceType?.Enabled.HasValue != true || !resourceType.Enabled.Value)
{
{
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
return NotFound($"Could not find resourceType with id: {resourceTypeId}");
}
}
@@ -414,8 +410,8 @@ namespace Coscine.Api.Project.Controllers
@@ -414,8 +410,8 @@ namespace Coscine.Api.Project.Controllers
{
{
var projectQuota = new ProjectQuota
var projectQuota = new ProjectQuota
{
{
MaxQuota = defaultQuota == null ? 0 : defaultQuota.DefaultMaxQuota,
MaxQuota = (defaultQuota?.DefaultMaxQuota) ?? 0,
Quota = defaultQuota == null ? 0 : defaultQuota.DefaultQuota,
Quota = (defaultQuota?.DefaultQuota) ?? 0,
ProjectId = project.Id,
ProjectId = project.Id,
ResourceTypeId = resourceType.Id
ResourceTypeId = resourceType.Id
};
};
@@ -430,10 +426,10 @@ namespace Coscine.Api.Project.Controllers
@@ -430,10 +426,10 @@ namespace Coscine.Api.Project.Controllers
}
}
/// <summary>
/// <summary>
/// Updates the selected project
/// Updates the selected project
/// </summary>
/// </summary>
/// <param name="id">Id of the resource</param>
/// <param name="id">Id of the resource</param>
/// <returns>Ok or Statuscode 401</returns>
/// <returns>OK or status code 401</returns>
[HttpPost("[controller]/{id}")]
[HttpPost("[controller]/{id}")]
public IActionResult Update(string id)
public IActionResult Update(string id)
{
{
@@ -455,7 +451,7 @@ namespace Coscine.Api.Project.Controllers
@@ -455,7 +451,7 @@ namespace Coscine.Api.Project.Controllers
/// Deletes the selected project
/// Deletes the selected project
/// </summary>
/// </summary>
/// <param name="id">Id of the resource</param>
/// <param name="id">Id of the resource</param>
/// <returns>Json object or Statuscode 401</returns>
/// <returns>JSON object or status code 401</returns>
[HttpDelete("[controller]/{id}")]
[HttpDelete("[controller]/{id}")]
public IActionResult Delete(string id)
public IActionResult Delete(string id)
{
{
@@ -479,13 +475,13 @@ namespace Coscine.Api.Project.Controllers
@@ -479,13 +475,13 @@ namespace Coscine.Api.Project.Controllers
/// </summary>
/// </summary>
/// <param name="project">Project</param>
/// <param name="project">Project</param>
/// <param name="isHard">isHard</param>
/// <param name="isHard">isHard</param>
/// <param name="propegateAction">propegate Action</param>
/// <param name="propagateAction">propagate Action</param>
public void DeleteProject(Database.DataModel.Project project, bool isHard = false, bool propegateAction = true)
public void DeleteProject(Database.DataModel.Project project, bool isHard = false, bool propagateAction = true)
{
{
var subProjectModel = new SubProjectModel();
var subProjectModel = new SubProjectModel();
foreach (var subProject in subProjectModel.GetAllWhere(
foreach (var subProject in subProjectModel.GetAllWhere(
(subProject) => subProject.ProjectId == project.Id
(subProject) => subProject.ProjectId == project.Id
&& (subProject.SubProjectNavigation.Deleted == false || isHard)
&& (!subProject.SubProjectNavigation.Deleted || isHard)
))
))
{
{
Database.DataModel.Project subProjectObject;
Database.DataModel.Project subProjectObject;
@@ -498,7 +494,7 @@ namespace Coscine.Api.Project.Controllers
@@ -498,7 +494,7 @@ namespace Coscine.Api.Project.Controllers
{
{
subProjectObject = _projectModel.GetById(subProject.SubProjectId);
subProjectObject = _projectModel.GetById(subProject.SubProjectId);
}
}
DeleteProject(subProjectObject, isHard, propegateAction);
DeleteProject(subProjectObject, isHard, propagateAction);
}
}
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id))
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id))
@@ -554,7 +550,7 @@ namespace Coscine.Api.Project.Controllers
@@ -554,7 +550,7 @@ namespace Coscine.Api.Project.Controllers
_activatedFeaturesModel.DeactivateAllFeatures(project);
_activatedFeaturesModel.DeactivateAllFeatures(project);
if (propegateAction)
if (propagateAction)
{
{
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
{
{
@@ -573,7 +569,7 @@ namespace Coscine.Api.Project.Controllers
@@ -573,7 +569,7 @@ namespace Coscine.Api.Project.Controllers
/// <summary>
/// <summary>
/// Creates a project
/// Creates a project
/// </summary>
/// </summary>
/// <returns>Json object or Statuscode 401</returns>
/// <returns>JSON object or status code 401</returns>
[HttpPost("[controller]")]
[HttpPost("[controller]")]
public IActionResult Store()
public IActionResult Store()
{
{
@@ -639,7 +635,7 @@ namespace Coscine.Api.Project.Controllers
@@ -639,7 +635,7 @@ namespace Coscine.Api.Project.Controllers
if (!_projectModel.HasAccess(user, project, UserRoles.Owner))
if (!_projectModel.HasAccess(user, project, UserRoles.Owner))
{
{
return Unauthorized($"You are not an owner of the project.");
return Unauthorized("You are not an owner of the project.");
}
}
var invitations = _invitationModel.GetAllWhere(x => x.Project == projectId)
var invitations = _invitationModel.GetAllWhere(x => x.Project == projectId)
@@ -685,7 +681,7 @@ namespace Coscine.Api.Project.Controllers
@@ -685,7 +681,7 @@ namespace Coscine.Api.Project.Controllers
if (!_projectModel.HasAccess(user, project, UserRoles.Owner))
if (!_projectModel.HasAccess(user, project, UserRoles.Owner))
{
{
return Unauthorized($"You are not an owner of the project.");
return Unauthorized("You are not an owner of the project.");
}
}
var invitations = _invitationModel.GetAllWhere(
var invitations = _invitationModel.GetAllWhere(
@@ -718,7 +714,7 @@ namespace Coscine.Api.Project.Controllers
@@ -718,7 +714,7 @@ namespace Coscine.Api.Project.Controllers
{
{
["placeholder"] = new JObject()
["placeholder"] = new JObject()
{
{
["confirmation_link"] = $@"{_configuration.GetString("coscine/local/api/additional/url")}/SitePages/Home.aspx?token={token}"
["confirmation_link"] = $"{_configuration.GetString("coscine/local/api/additional/url")}/SitePages/Home.aspx?token={token}"
}
}
}
}
};
};
@@ -747,7 +743,7 @@ namespace Coscine.Api.Project.Controllers
@@ -747,7 +743,7 @@ namespace Coscine.Api.Project.Controllers
if (!_projectModel.HasAccess(user, _projectModel.GetById(invitation.Project), UserRoles.Owner))
if (!_projectModel.HasAccess(user, _projectModel.GetById(invitation.Project), UserRoles.Owner))
{
{
return Unauthorized($"You are not an owner of this project.");
return Unauthorized("You are not an owner of this project.");
}
}
_invitationModel.Delete(invitation);
_invitationModel.Delete(invitation);
@@ -781,12 +777,12 @@ namespace Coscine.Api.Project.Controllers
@@ -781,12 +777,12 @@ namespace Coscine.Api.Project.Controllers
if (!_projectModel.HasAccess(_userModel.GetById(invitation.Issuer), project, UserRoles.Owner))
if (!_projectModel.HasAccess(_userModel.GetById(invitation.Issuer), project, UserRoles.Owner))
{
{
return Unauthorized($"The issuer is not an owner of the project.");
return Unauthorized("The issuer is not an owner of the project.");
}
}
if (_projectRoleModel.GetAllWhere(x => x.ProjectId == invitation.Project && x.UserId == user.Id).Any())
if (_projectRoleModel.GetAllWhere(x => x.ProjectId == invitation.Project && x.UserId == user.Id).Any())
{
{
return BadRequest($"The invitee is already part of the project.");
return BadRequest("The invitee is already part of the project.");
}
}
var role = _roleModel.GetById(invitation.Role);
var role = _roleModel.GetById(invitation.Role);
@@ -838,7 +834,7 @@ namespace Coscine.Api.Project.Controllers
@@ -838,7 +834,7 @@ namespace Coscine.Api.Project.Controllers
private void LogAnalyticsViewProject(Database.DataModel.Project project, List<ResourceObject> resources, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
private void LogAnalyticsViewProject(Database.DataModel.Project project, List<ResourceObject> resources, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
{
{
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled.HasValue && x.Enabled.Value);
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
@@ -853,13 +849,13 @@ namespace Coscine.Api.Project.Controllers
@@ -853,13 +849,13 @@ namespace Coscine.Api.Project.Controllers
Disciplines = disciplines.Select(x => x.DisplayNameEn).ToList(),
Disciplines = disciplines.Select(x => x.DisplayNameEn).ToList(),
Organizations = organizations.Select(x => x.DisplayName).ToList(),
Organizations = organizations.Select(x => x.DisplayName).ToList(),
Visibility = project.VisibilityId.HasValue ? _visibilityModel.GetById(project.VisibilityId.Value)?.DisplayName : null,
Visibility = project.VisibilityId.HasValue ? _visibilityModel.GetById(project.VisibilityId.Value)?.DisplayName : null,
ResourceList = resources.Select(x => x.Id.ToString()).ToList(),
ResourceList = resources.ConvertAll(x => x.Id.ToString()),
});
});
}
}
private void LogAnalyticsEditProject(Database.DataModel.Project project, string metadataCompletness, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
private void LogAnalyticsEditProject(Database.DataModel.Project project, string metadataCompletness, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
{
{
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled.HasValue && x.Enabled.Value);
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
@@ -880,7 +876,7 @@ namespace Coscine.Api.Project.Controllers
@@ -880,7 +876,7 @@ namespace Coscine.Api.Project.Controllers
private void LogAnalyticsAddProject(Database.DataModel.Project project, string metadataCompletness, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
private void LogAnalyticsAddProject(Database.DataModel.Project project, string metadataCompletness, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
{
{
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled.HasValue && x.Enabled.Value);
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
@@ -901,7 +897,7 @@ namespace Coscine.Api.Project.Controllers
@@ -901,7 +897,7 @@ namespace Coscine.Api.Project.Controllers
private void LogAnalyticsDeleteProject(Database.DataModel.Project project, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
private void LogAnalyticsDeleteProject(Database.DataModel.Project project, IEnumerable<DisciplineObject> disciplines, IEnumerable<OrganizationObject> organizations, User user)
{
{
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled.HasValue && x.Enabled.Value);
var resourceTypes = _resourceTypeModel.GetAllWhere(x => x.Enabled == true);
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
var objects = resourceTypes.Select(x => CreateProjectQuotaReturnObject(x, project.Id));
Loading