diff --git a/src/Admin/Admin.csproj b/src/Admin/Admin.csproj index 73a0aa6649e374c1780a9e3769a7a0b489750057..c7cd3d0c8c63afeb353399f2cd2ff75bdbf6c69d 100644 --- a/src/Admin/Admin.csproj +++ b/src/Admin/Admin.csproj @@ -21,6 +21,6 @@ <PackageReference Include="Coscine.ApiCommons" Version="2.*-*" /> <PackageReference Include="Coscine.Database" Version="2.*-*" /> <PackageReference Include="Coscine.Metadata" Version="2.*-*" /> - <PackageReference Include="Coscine.ResourceLoader" Version="2.*-*" /> + <PackageReference Include="Coscine.ResourceTypes" Version="*-*" /> </ItemGroup> </Project> diff --git a/src/Admin/Controllers/AdminController.cs b/src/Admin/Controllers/AdminController.cs index 7da0591a79186cf5afe14866919eef86927f0cb7..ac351ff36451dcbff8e264bb46e868eaffdf06b3 100644 --- a/src/Admin/Controllers/AdminController.cs +++ b/src/Admin/Controllers/AdminController.cs @@ -8,7 +8,7 @@ using Coscine.Database.DataModel; using Coscine.Database.Models; using Coscine.Logging; using Coscine.Metadata; -using Coscine.ResourceLoader; +using Coscine.ResourceTypes; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; @@ -25,7 +25,6 @@ namespace Coscine.Api.Admin.Controllers { private readonly RdfStoreConnector _rdfStoreConnector = new(Program.Configuration.GetStringAndWait("coscine/local/virtuoso/additional/url")); private readonly Authenticator _authenticator; - private readonly IConfiguration _configuration; private readonly string _graphUrl; private readonly string _memberUrl; private readonly string _userUrlPrefix; @@ -46,7 +45,6 @@ namespace Coscine.Api.Admin.Controllers public AdminController(ILogger<AdminController> logger) { _authenticator = new Authenticator(this, Program.Configuration); - _configuration = Program.Configuration; _graphUrl = "https://ror.org/04xfq0f34/roles"; _memberUrl = "http://www.w3.org/ns/org#member"; _userUrlPrefix = "https://coscine.rwth-aachen.de/u/"; @@ -94,14 +92,18 @@ namespace Coscine.Api.Admin.Controllers /// <returns>Allocated quota of the given resource type in the project.</returns> private int CalculateAllocatedForAll(ResourceType resourceType, Guid projectId) { - var resourceTypeDefinition = ResourceTypeFactory.CreateResourceTypeObject(resourceType.DisplayName, _configuration); - var resources = _resourceModel.GetAllWhere((resource) => (from projectResource in resource.ProjectResources where projectResource.ProjectId == projectId select projectResource).Any() && resource.TypeId == resourceType.Id); - var allocated = resources.Sum(y => resourceTypeDefinition.GetResourceQuotaAvailable(y.Id.ToString(), _resourceModel.GetResourceTypeOptions(y.Id)).Result); + + var allocated = resources.Sum(resource => ResourceTypeFactory + .Instance + .GetResourceType(resource) + .GetResourceQuotaAvailable(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id)) + .Result); + return (int)allocated; } @@ -113,14 +115,18 @@ namespace Coscine.Api.Admin.Controllers /// <returns>Used quota of the given resource type in the project.</returns> private int CalculateUsedForAll(ResourceType resourceType, Guid projectId) { - var resourceTypeDefinition = ResourceTypeFactory.CreateResourceTypeObject(resourceType.DisplayName, _configuration); - var resources = _resourceModel.GetAllWhere((resource) => (from projectResource in resource.ProjectResources where projectResource.ProjectId == projectId select projectResource).Any() && resource.TypeId == resourceType.Id); - var used = Math.Ceiling(resources.Sum(y => resourceTypeDefinition.GetResourceQuotaUsed(y.Id.ToString(), _resourceModel.GetResourceTypeOptions(y.Id)).Result / _oneGb)); + + var used = Math.Ceiling(resources.Sum(resource => ResourceTypeFactory + .Instance + .GetResourceType(resource) + .GetResourceQuotaUsed(resource.Id.ToString(), _resourceModel.GetResourceTypeOptions(resource.Id)) + .Result / _oneGb)); + return (int)used; }